lib/fozzie/configuration.rb in fozzie-0.0.12 vs lib/fozzie/configuration.rb in fozzie-0.0.13

- old
+ new

@@ -1,26 +1,35 @@ require 'core_ext/hash' +require 'resolv' 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 + attr_accessor :env, :config_path, :host, :port, :appname, :namespaces def initialize(args = {}) merge_and_assign_config(args) self end def data_prefix - s = [appname, env].collect {|s| s.empty? ? nil : s }.compact.join('.').strip + s = [appname, origin_name, env].collect {|s| s.empty? ? nil : s.gsub('.', '-') }.compact.join('.').strip (s.empty? ? nil : s) end + def ip_from_host + @ip_from_host ||= host_to_ip + end + + def origin_name + @origin_name ||= %x{uname -n}.strip + end + private # Handle the merging of the given configuaration, and the default config. # @return [Hash] def merge_and_assign_config(args = {}) @@ -38,11 +47,22 @@ { :host => '127.0.0.1', :port => 8125, :config_path => '', :env => (ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development'), - :appname => '' + :appname => '', + :namespaces => %w{Stats S Statistics Warehouse} }.dup + end + + def host_to_ip + return self.host unless self.host.match(ip_address_regex).nil? + ips = Resolv.getaddresses(self.host) + ips.compact.reject {|ip| ip.to_s.match(ip_address_regex).nil? }.first unless ips.nil? + end + + def ip_address_regex + /^(?:\d{1,3}\.){3}\d{1,3}$/ end def full_config_path(path) File.expand_path('config/fozzie.yml', path) end \ No newline at end of file