lib/yogi_berra/catcher.rb in yogi_berra-0.1.7 vs lib/yogi_berra/catcher.rb in yogi_berra-0.2.0

- old
+ new

@@ -1,36 +1,26 @@ require 'mongo' -require 'facets' require 'yaml' require 'timeout' module YogiBerra class Catcher - extend Facets - cattr_accessor :settings, :mongo_client, :connection - class << self def load_db_settings(config_file = nil) if config_file - database_config = config_file - elsif defined?(::Rails) - database_config = Rails.root ? "#{Rails.root}/config/yogi.yml" : "config/yogi.yml" - else - YogiBerra::Logger.log("No config file specified!", :error) + YogiBerra.yogi_yml = config_file end - if database_config - begin - File.open(database_config, 'r') do |f| - yaml_file = YAML.load(f) - @@settings = yaml_file["#{environment}"] if yaml_file - end - rescue - YogiBerra::Logger.log("No such file: #{database_config}", :error) + begin + File.open(YogiBerra.yogi_yml, 'r') do |f| + yaml_file = YAML.load(f) + YogiBerra.settings = yaml_file["#{environment}"] if yaml_file end - @@settings + rescue + YogiBerra::Logger.log("No such file: #{database_config}", :error) end + YogiBerra.settings end def environment if ENV["YOGI_ENV"] ENV["YOGI_ENV"] @@ -42,54 +32,54 @@ "test" end end def fork_database - host = @@settings["host"] - port = @@settings["port"] - database = @@settings["database"] - username = @@settings["username"] - password = @@settings["password"] - replica_set = @@settings["replica_set"] + host = YogiBerra.settings["host"] + port = YogiBerra.settings["port"] + database = YogiBerra.settings["database"] + username = YogiBerra.settings["username"] + password = YogiBerra.settings["password"] + replica_set = YogiBerra.settings["replica_set"] # :w => 0 set the default write concern to 0, this allows writes to be non-blocking # by not waiting for a response from mongodb Thread.new do begin if replica_set - @@mongo_client = Mongo::MongoReplicaSetClient.new(replica_set, :w => 0, :connect_timeout => 10) + YogiBerra.mongo_client = Mongo::MongoReplicaSetClient.new(replica_set, :w => 0, :connect_timeout => 10) else - @@mongo_client = Mongo::MongoClient.new(host, port, :w => 0, :connect_timeout => 10) + YogiBerra.mongo_client = Mongo::MongoClient.new(host, port, :w => 0, :connect_timeout => 10) end rescue Timeout::Error => timeout_error YogiBerra::Logger.log("Couldn't connect to the mongo database timeout on host: #{host} port: #{port}.\n #{timeout_error.inspect}", :error) retry rescue => error YogiBerra::Logger.log("Couldn't connect to the mongo database on host: #{host} port: #{port}.\n #{error.inspect}", :error) sleep 1 retry end - @@connection = @@mongo_client[database] + YogiBerra.connection = YogiBerra.mongo_client[database] if username && password begin - @@connection.authenticate(username, password) + YogiBerra.connection.authenticate(username, password) rescue YogiBerra::Logger.log("Couldn't authenticate with user #{username} to mongo database on host: #{host} port: #{port} database: #{database}.", :warn) end end end end def connect(load_settings = false) - load_db_settings if load_settings + load_db_settings if load_db_settings - if @@settings + if YogiBerra.settings fork_database else YogiBerra::Logger.log("Couldn't load the yogi.yml file.", :error) if load_settings end - @@connection + YogiBerra.connection end end end end \ No newline at end of file