Sha256: f6e8a377a9d3b189d4847848e0b2c37725b07073c8876a32b27b09b3cb4f2d9a
Contents?: true
Size: 1.45 KB
Versions: 3
Compression:
Stored size: 1.45 KB
Contents
require 'core_ext/hash' module Fozzie # Fozzie configuration allows assignment of global properties # that will be used within the Fozzie codebase. class Configuration attr_accessor :env, :config_path, :host, :port, :appname def initialize(args = {}) merge_and_assign_config(args) self end def data_prefix s = env s = [appname, s].join('.').strip unless appname.nil? || appname.empty? s end private # Handle the merging of the given configuaration, and the default config. # @return [Hash] def merge_and_assign_config(args = {}) arg = self.class.default_configuration.merge(args.symbolize_keys) arg.delete_if {|key, val| !self.respond_to?(key.to_sym) } arg.merge!(config_from_yaml(arg)) arg.each {|a,v| self.send("#{a}=", v) } arg end # Default configuration settings # @return [Hash] def self.default_configuration { :host => '127.0.0.1', :port => 8125, :config_path => '', :env => (ENV['RAILS_ENV'] || 'development'), :appname => '' }.dup end def full_config_path(path) File.expand_path('config/fozzie.yml', path) end def config_from_yaml(args) fp = full_config_path(args[:config_path]) return {} unless File.exists?(fp) cnf = YAML.load(File.open(fp))[args[:env]] (cnf.kind_of?(Hash)) ? cnf.symbolize_keys : {} end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
fozzie-0.0.5 | lib/fozzie/configuration.rb |
fozzie-0.0.4 | lib/fozzie/configuration.rb |
fozzie-0.0.3 | lib/fozzie/configuration.rb |