Class: Lanes::Configuration

Inherits:
Object
  • Object
show all
Includes:
Lanes::Concerns::AttrAccessorWithDefault
Defined in:
lib/lanes/configuration.rb

Direct Known Subclasses

DefaultConfiguration

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



32
33
34
# File 'lib/lanes/configuration.rb', line 32

def initialize
    @observers=Hash.new{ |hash,key| hash[key] = Array.new }
end

Class Method Details

.applyObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/lanes/configuration.rb', line 49

def self.apply
    controlling_ext = Lanes::Extensions.controlling

    ActiveJob::Base.queue_adapter = Lanes.env.test? ? :test : :resque
    Lanes::Job::FailureLogger.configure

    DB.establish_connection

    Jobba.configure do |config|
        config.redis_options = Lanes.config.redis
        config.namespace = "#{controlling_ext.identifier}::jobba"
    end

    Resque.redis.namespace = "#{controlling_ext.identifier}::resque"
    Resque.redis = Lanes.config.redis

    Lanes::SystemSettings.for_ext('lanes').apply!
    Extensions.each{|ext| ext.apply_configuration }

    if Kernel.const_defined?(:Guard) && ::Guard.const_defined?(:Jest)
        ::Guard::Jest.logger = Lanes.logger
    end
end

.config_option(name, default, options = {}) ⇒ Object

Since changing a config value inadvertently can have pretty drastic consequences that might not be discovered immediately, we log each time a value is changed



18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/lanes/configuration.rb', line 18

def self.config_option( name, default, options={} )
    define_method( "#{name}=" ) do | value |
        old_value = self.send( name )
        if old_value && !options[:silent]
            Lanes.logger.info "Config option #{name} changed from '#{old_value.inspect}' to '#{value.inspect}'"
        end
        instance_variable_set( "@#{name}", value )
        if @observers.has_key?(name)
            @observers[name].each{ |cb| cb.call(value, old_value) }
        end
    end
    attr_reader_with_default(name, default)
end

Instance Method Details

#get(config, &block) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/lanes/configuration.rb', line 40

def get(config, &block)
    value = self.send(config.to_sym)
    if block
        on_change(config,&block)
        block.call( value, value )
    end
    value
end

#on_change(config, &block) ⇒ Object



36
37
38
# File 'lib/lanes/configuration.rb', line 36

def on_change(config, &block)
    @observers[config.to_sym] << block
end