slavery 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -83,10 +83,13 @@ module Slavery
83
83
  def slave_connection_holder
84
84
  @slave_connection_holder ||= Class.new(ActiveRecord::Base) {
85
85
  self.abstract_class = true
86
- establish_connection("#{Slavery.env}_slave")
86
+
87
+ spec = ["#{Slavery.env}_slave", Slavery.env].find do |spec|
88
+ ActiveRecord::Base.configurations[spec]
89
+ end or raise Error.new("#{Slavery.env}_slave or #{Slavery.env} must exist!")
90
+
91
+ establish_connection spec
87
92
  }
88
- rescue ActiveRecord::AdapterNotSpecified
89
- raise Error.new("#{Slavery.env}_slave does not exist!")
90
93
  end
91
94
  end
92
95
  end
@@ -1,3 +1,3 @@
1
1
  module Slavery
2
- VERSION = '1.1.0'
2
+ VERSION = '1.1.1'
3
3
  end
@@ -52,4 +52,32 @@ describe Slavery do
52
52
  Slavery.stub(:disabled).and_return(true)
53
53
  Slavery.on_slave { User.slaveryable?.should == false }
54
54
  end
55
+
56
+ describe 'configuration' do
57
+ before do
58
+ # Backup connection and configs
59
+ @old_conn = User.instance_variable_get :@slave_connection_holder
60
+ @old_config = ActiveRecord::Base.configurations.dup
61
+ User.instance_variable_set :@slave_connection_holder, nil
62
+ end
63
+
64
+ after do
65
+ # Restore connection and configs
66
+ User.instance_variable_set :@slave_connection_holder, @old_conn
67
+ ActiveRecord::Base.configurations = @old_config
68
+ end
69
+
70
+ it 'connects to master if slave configuration not specified' do
71
+ ActiveRecord::Base.configurations['test_slave'] = nil
72
+
73
+ Slavery.on_slave { User.count }.should == 2
74
+ end
75
+
76
+ it 'raises error when no configuration found' do
77
+ ActiveRecord::Base.configurations['test'] = nil
78
+ ActiveRecord::Base.configurations['test_slave'] = nil
79
+
80
+ expect { Slavery.on_slave { User.count } }.to raise_error(Slavery::Error)
81
+ end
82
+ end
55
83
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slavery
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-20 00:00:00.000000000 Z
12
+ date: 2012-10-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -98,10 +98,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  version: '0'
99
99
  requirements: []
100
100
  rubyforge_project:
101
- rubygems_version: 1.8.24
101
+ rubygems_version: 1.8.19
102
102
  signing_key:
103
103
  specification_version: 3
104
104
  summary: Simple, conservative slave reads for ActiveRecord
105
105
  test_files:
106
106
  - spec/slavery_spec.rb
107
107
  - spec/spec_helper.rb
108
+ has_rdoc: