diff --git a/lib/server_settings/role_db.rb b/lib/server_settings/role_db.rb index 5667d2e..bdf7d80 100644 --- a/lib/server_settings/role_db.rb +++ b/lib/server_settings/role_db.rb @@ -16,8 +16,8 @@ def build_db(name, config, group = nil) return db end - def find(db_name) - select { |s| s.name == db_name }.first + def find(db_name, db_group = nil) + select { |s| s.name == db_name && s.group == db_group }.first end def each diff --git a/spec/lib/servers_config_spec.rb b/spec/lib/servers_config_spec.rb index 9647f98..45fb51a 100644 --- a/spec/lib/servers_config_spec.rb +++ b/spec/lib/servers_config_spec.rb @@ -184,6 +184,14 @@ db3: :master: 192.168.30.86 :backup: 192.168.30.85 + db4: + :database: db4 + :master: 192.168.30.86 + :backup: 192.168.30.85 + db4: + :database: another_db4 + :master: 192.168.30.86 + :backup: 192.168.30.85 EOS describe ServerSettings::Database do @@ -191,7 +199,8 @@ context "db in group" do it 'describe database with group' do ServerSettings.load_from_yaml(db_config) - db = ServerSettings.databases.find("user_shard_1") + db = ServerSettings.databases.find("user_shard_1", "shards") + expect(db.group).to eq("shards") expect(db.config(:master)).to eq({ :adapter => "mysql2", @@ -214,6 +223,11 @@ expect(db.has_slave?).to be_falsey end + context "when yaml has another same db setting" do + it "" do + ServerSettings.load_from_yaml(db_config) + end + end end context "db not in group" do @@ -289,10 +303,10 @@ describe "each" do - it 'loop 6 times yield with db argument' do + it 'loop 8 times yield with db argument' do ServerSettings.load_from_yaml(db_config) - args = 6.times.map {ServerSettings::Database} - expect { |b| ServerSettings.databases.each(&b)}.to yield_control.exactly(6).times + args = 8.times.map {ServerSettings::Database} + expect { |b| ServerSettings.databases.each(&b)}.to yield_control.exactly(8).times expect { |b| ServerSettings.databases.each(&b)}.to yield_successive_args(*args) end end