module Seppuqu

Constants

VERSION

Public Class Methods

current_release_version() click to toggle source
# File lib/seppuqu.rb, line 11
def self.current_release_version
  @current_release_version ||= get_release_version
end
get_release_version() click to toggle source
# File lib/seppuqu.rb, line 7
def self.get_release_version
  File.expand_path(__FILE__).split('/').last
end
install() click to toggle source
# File lib/seppuqu.rb, line 5
def install
  Sidekiq.class_exec{
    def self.get_release_version
      File.expand_path(__FILE__).split('/').last
    end

    def self.current_release_version
      @current_release_version ||= get_release_version
    end

    def self.latest_release_version
      Sidekiq.redis do |conn|
        conn.get("release_version") || -1
      end.to_i
    end
  }

  Sidekiq::Middleware.class_exec{
    Object.const_set("VersionEnforcerMiddleware", Class.new{
      def call(worker, msg, queue)
        lrv, crv = Sidekiq.latest_release_version, Sidekiq.current_release_version
        if lrv <= crv
          yield
        elsif
          Sidekiq.logger.info "My version (#{crv}) mismatches latest version (#{lrv}). Shutting down..."
          Thread.main.raise Interrupt
        end
      end
    })
  }

  Sidekiq.configure_server do |config|
    config.server_middleware do |chain|
      chain.add Sidekiq::Middleware::VersionEnforcerMiddleware
    end
  end
end
latest_release_version() click to toggle source
# File lib/seppuqu.rb, line 15
def self.latest_release_version
  Sidekiq.redis do |conn|
    conn.get("release_version") || -1
  end.to_i
end
update_release_version() click to toggle source
# File lib/seppuqu.rb, line 44
def update_release_version
  Sidekiq.redis {|c| c.set "release_version", Sidekiq.current_release_version }
end

Public Instance Methods

call(worker, msg, queue) { || ... } click to toggle source
# File lib/seppuqu.rb, line 24
def call(worker, msg, queue)
  lrv, crv = Sidekiq.latest_release_version, Sidekiq.current_release_version
  if lrv <= crv
    yield
  elsif
    Sidekiq.logger.info "My version (#{crv}) mismatches latest version (#{lrv}). Shutting down..."
    Thread.main.raise Interrupt
  end
end

Private Instance Methods

install() click to toggle source
# File lib/seppuqu.rb, line 5
def install
  Sidekiq.class_exec{
    def self.get_release_version
      File.expand_path(__FILE__).split('/').last
    end

    def self.current_release_version
      @current_release_version ||= get_release_version
    end

    def self.latest_release_version
      Sidekiq.redis do |conn|
        conn.get("release_version") || -1
      end.to_i
    end
  }

  Sidekiq::Middleware.class_exec{
    Object.const_set("VersionEnforcerMiddleware", Class.new{
      def call(worker, msg, queue)
        lrv, crv = Sidekiq.latest_release_version, Sidekiq.current_release_version
        if lrv <= crv
          yield
        elsif
          Sidekiq.logger.info "My version (#{crv}) mismatches latest version (#{lrv}). Shutting down..."
          Thread.main.raise Interrupt
        end
      end
    })
  }

  Sidekiq.configure_server do |config|
    config.server_middleware do |chain|
      chain.add Sidekiq::Middleware::VersionEnforcerMiddleware
    end
  end
end
update_release_version() click to toggle source
# File lib/seppuqu.rb, line 44
def update_release_version
  Sidekiq.redis {|c| c.set "release_version", Sidekiq.current_release_version }
end