module Stir::Base::Configuration
Attributes
config[RW]
service_config[RW]
Public Class Methods
included(base)
click to toggle source
# File lib/stir/base/configuration.rb, line 7 def self.included(base) base.extend(Default) end
new()
click to toggle source
# File lib/stir/base/configuration.rb, line 11 def initialize config_list.each { |x| self.class.send(:attr_accessor, x) } configure_callbacks! send(:config=, self.class.config) custom_config_initializers end
Public Instance Methods
config=(value)
click to toggle source
# File lib/stir/base/configuration.rb, line 25 def config=(value) value = value.with_indifferent_access @environment = (value.has_key? :environment) ? value[:environment] : Stir.environment @version = (value.has_key? :version) ? value[:version] : Stir.version @config_file = value[:config_file] if value[:config_file] reload_configs! end
reload_configs!()
click to toggle source
# File lib/stir/base/configuration.rb, line 18 def reload_configs! @service_config = load_configs(@config_file) @service_config[:headers] = {} if @service_config[:headers].nil? set_config_variables @service_config end
Private Instance Methods
callback_methods()
click to toggle source
# File lib/stir/base/configuration.rb, line 76 def callback_methods config_list.inject([]) do |result, element| result.push("#{element}=".to_sym) end end
config_list()
click to toggle source
# File lib/stir/base/configuration.rb, line 38 def config_list fail(NotImplementedError, 'You must provide a list of valid configuration options') end
configs_to_send()
click to toggle source
# File lib/stir/base/configuration.rb, line 42 def configs_to_send @service_config.slice(*config_list) end
configure_callbacks!()
click to toggle source
# File lib/stir/base/configuration.rb, line 82 def configure_callbacks! callback_methods.each do |name| m = self.class.instance_method(name) self.class.send(:define_method, name) do |*args, &block| update_configs!(name, *args) m.bind(self).(*args, &block) end end end
custom_config_initializers()
click to toggle source
# File lib/stir/base/configuration.rb, line 35 def custom_config_initializers end
load_configs(filename)
click to toggle source
# File lib/stir/base/configuration.rb, line 53 def load_configs(filename) raise(ConfigurationError, "#{filename} not found.") unless File.exists?(filename) config = YAML.load(ERB.new(File.read(filename)).result) verify_configs(config) config[@version][@environment].with_indifferent_access end
merge_configs(args_passed_in = nil)
click to toggle source
# File lib/stir/base/configuration.rb, line 46 def merge_configs(args_passed_in = nil) args_passed_in.symbolize_keys! if args_passed_in params_to_send = configs_to_send args_passed_in.each { |key, value| params_to_send[key] = value } unless args_passed_in.nil? transform_config_for_httparty(params_to_send, args_passed_in).symbolize_keys end
set_config_variables()
click to toggle source
# File lib/stir/base/configuration.rb, line 72 def set_config_variables configs_to_send.each { |k, v| instance_variable_set("@#{k}", v) } end
update_configs!(name, value)
click to toggle source
# File lib/stir/base/configuration.rb, line 65 def update_configs!(name, value) name = name.to_s.delete('=') @service_config[name] = value instance_variable_set("@#{name}", value) @service_config.reject! { |key| @service_config[key].nil? } end
verify_configs(config)
click to toggle source
# File lib/stir/base/configuration.rb, line 60 def verify_configs(config) raise(ConfigurationError, "Version: '#{@version}' is not defined for this client in the config file.") unless config.has_key? @version raise(ConfigurationError, "Environment: '#{@environment}' is not defined for Version: '#{@version}' in the config file.") unless config[@version].has_key? @environment end