module Infrastructure::Configurable
Public Class Methods
included(base)
click to toggle source
# File lib/infrastructure/configurable.rb, line 4 def self.included(base) base.extend Forwardable base.send :def_delegators, :configuration, :assign, :fetch, :configure, :each base.send :def_delegators, :configuration, :load_config, :load_config_if_exists, :save_config end
Public Instance Methods
after_assignment(*params)
click to toggle source
# File lib/infrastructure/configurable.rb, line 38 def after_assignment(*params) callbacks[:after_assignment].each { |block| block.call *params } end
after_configure(*params)
click to toggle source
# File lib/infrastructure/configurable.rb, line 46 def after_configure(*params) callbacks[:after_configure].each { |block| block.call *params } end
before_assignment(*params)
click to toggle source
# File lib/infrastructure/configurable.rb, line 34 def before_assignment(*params) callbacks[:before_assignment].each { |block| block.call *params } end
before_configure(*params)
click to toggle source
# File lib/infrastructure/configurable.rb, line 42 def before_configure(*params) callbacks[:before_configure].each { |block| block.call *params } end
callback(key, *params, &block)
click to toggle source
# File lib/infrastructure/configurable.rb, line 14 def callback(key, *params, &block) callbacks[key] << block if block callbacks[key] += Array(params) end
callbacks()
click to toggle source
# File lib/infrastructure/configurable.rb, line 19 def callbacks @callbacks ||= { before_configure: [], after_configure: [], before_assignment: [ -> (key, value) { configuration_accessor key unless respond_to? key } ], after_assignment: [] } end
configuration()
click to toggle source
# File lib/infrastructure/configurable.rb, line 10 def configuration @configuration ||= Configuration.new self end
configuration_accessor(key)
click to toggle source
# File lib/infrastructure/configurable.rb, line 30 def configuration_accessor(key) self.class.send(:define_method, key) { configuration.send(key) } end