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