lib/mongorilla/collection.rb in mongorilla-0.1.3 vs lib/mongorilla/collection.rb in mongorilla-0.2.0
- old
+ new
@@ -4,10 +4,11 @@
class Collection
@@master = nil
@@slaves = nil
@@slave_index = 0
@@config = nil
+ @@loger = nil
def self.master
@@master
end
@@ -21,14 +22,15 @@
def self.load_config(path)
@@config = YAML.load(File.read(path))
end
- def self.build(path=File.expand_path("../config.yml",__FILE__))
+ def self.build(path=File.expand_path("../config.yml",__FILE__),logger=nil)
load_config(path)
@@config["max_retries"] ||= 10
@@config["meantime"] ||= 0.5
+ @@loger = logger
if @@config["hosts"]
@@master = Mongo::ReplSetConnection.new(*@@config["hosts"]).db(@@config["database"])
elsif @@config["slaves"]
@@master = Mongo::Connection.new(@@config["host"],@@config["port"]).db(@@config["database"])
@@slaves = @@config["slaves"].map{|s| Mongo::Connection.new(s["host"],s["port"]).db(@@config["database"])}
@@ -65,10 +67,11 @@
ret = find(cond,opt)
ret.first
end
def count(cond={},opt={})
+ @@loger.info("count cond:#{cond.inspect} opt:#{opt.inspect}") if @@loger
find(cond,opt).count
end
def find(cond={},opt={})
if opt[:master] || opt["master"]
@@ -76,34 +79,39 @@
opt.delete("master")
if @@config["hosts"]
opt[:read] = :primary
end
rescue_connection_failure do
+ @@loger.info("find(master) cond:#{cond.inspect} opt:#{opt.inspect}") if @@loger
w_col.find(cond,opt)
end
else
if @@config["hosts"] && @@config["read_secondary"]
opt[:read] = :secondary
end
begin
rescue_connection_failure do
+ @@loger.info("find(secondary) cond:#{cond.inspect} opt:#{opt.inspect}") if @@loger
r_col.find(cond,opt)
end
rescue
+ @@loger.info("find(master) cond:#{cond.inspect} opt:#{opt.inspect}") if @@loger
w_col.find(cond,opt)
end
end
end
def insert(data,opt={})
rescue_connection_failure do
+ @@loger.info("insert data:#{data.inspect} opt:#{opt.inspect}") if @@loger
w_col.insert(data,opt)
end
end
def update(cond,data,opt)
rescue_connection_failure do
+ @@loger.info("update cond:#{cond.inspect} data:#{data.inspect} opt:#{opt.inspect}") if @@loger
w_col.update(cond,data,opt)
end
end
def remove(cond={},opt={})
@@ -111,9 +119,10 @@
cond = {:_id => BSON::ObjectId(cond)}
elsif cond.is_a? BSON::ObjectId
cond = {:_id => cond}
end
rescue_connection_failure do
+ @@loger.info("remove cond:#{cond.inspect} opt:#{opt.inspect}") if @@loger
w_col.remove(cond,opt)
end
end
def rescue_connection_failure(max_retries=@@config["max_retries"])