Sha256: 1760a3a6a0db9ef669e2b5198fd739041e10460e8f36bd4a40615b8918a5df75

Contents?: true

Size: 1.31 KB

Versions: 4

Compression:

Stored size: 1.31 KB

Contents

module Sneakers
  class RunnerConfig
    def method_missing(meth, *args, &block)
      if %w{ before_fork after_fork }.include? meth.to_s
        @conf[meth] = block
      elsif %w{ workers start_worker_delay amqp }.include? meth.to_s
        @conf[meth] = args.first
      else
        super
      end
    end

    def initialize(worker_classes)
      @worker_classes = worker_classes
      @conf = {}
    end

    def to_h
      @conf
    end


    def reload_config!
      Sneakers.logger.warn("Loading runner configuration...")
      config_file = Sneakers::Config[:runner_config_file]

      if config_file
        begin
          instance_eval(File.read(config_file), config_file)
          Sneakers.logger.info("Loading config with file: #{config_file}")
        rescue
          Sneakers.logger.error("Cannot load from file '#{config_file}', #{$!}")
        end
      end

      config = make_serverengine_config

      [:before_fork, :after_fork].each do | hook |
        Sneakers::Config[:hooks][hook] = config.delete(hook) if config[hook]
      end


      Sneakers.logger.info("New configuration: #{config.inspect}")
      config
    end

  private
    def make_serverengine_config
      Sneakers::Config.merge(@conf).merge({
        :worker_type => 'process',
        :worker_classes => @worker_classes
      })
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sneakers-0.0.6 lib/sneakers/runner_config.rb
sneakers-0.0.5 lib/sneakers/runner_config.rb
sneakers-0.0.4 lib/sneakers/runner_config.rb
sneakers-0.0.3 lib/sneakers/runner_config.rb