fresh_connection 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f7219fe266291b57df16e6ff52d4c11aed5c0904
4
- data.tar.gz: 59af852fd4ae575f7f6cb1fd5bdbaa49e823d16d
3
+ metadata.gz: 10888efb25fd374b6b5d64d1a8c414ffdc9ae179
4
+ data.tar.gz: 35412910638fd33b2000190a7a92d647916a0403
5
5
  SHA512:
6
- metadata.gz: a0ed4657a4f37ad1821508d78f74e963331ea807d35a58e868392731296d214567c1cf82a295c8cb66ff40532262b7afc12b5cbe7dacee204817038597b7db92
7
- data.tar.gz: 6ace3cbb2659fae15bedf325045490e728fa64809ef85695fe130cf394c0d28bd4fa2eaa28f34125a8343f2e0dd4919fadcde5c4627940aaf2790e62e9cd6645
6
+ metadata.gz: bafc8b2f529f0452c1df3dc1954b93ca242dcc11d1328bd905b9a6621d6e4ce664d38667afae0ff532a107bbbba522b54f9576d9dddd4edd4a6a7d61b00aef89
7
+ data.tar.gz: c2ca3ca877878a874384c33df520fec72b1451eed1982c43ab69428ff04b28ec3171763e402d57fe8f973ad2603be19dfb13db4af5ac1a6cd4cf0ea713cc4657
data/.travis.yml CHANGED
@@ -3,7 +3,6 @@ before_script:
3
3
  - mysql -e 'create database fresh_connection_test;'
4
4
  - mysql -e 'create database fresh_connection_test_master;'
5
5
  - mysql -e 'create database fresh_connection_test_slave;'
6
- - "bundle exec ruby spec/prepare.rb"
7
6
  rvm:
8
7
  - 2.0.0
9
8
  - 2.1
data/README.md CHANGED
@@ -61,35 +61,43 @@ article.destory
61
61
 
62
62
  Add this line to your application's Gemfile:
63
63
 
64
- gem "fresh_connection"
64
+ ```ruby
65
+ gem "fresh_connection"
66
+ ```
65
67
 
66
68
  And then execute:
67
69
 
68
- $ bundle
70
+ ```
71
+ $ bundle
72
+ ```
69
73
 
70
74
  Or install it yourself as:
71
75
 
72
- $ gem install fresh_connection
76
+ ```
77
+ $ gem install fresh_connection
78
+ ```
73
79
 
74
80
 
75
81
  ## Config
76
82
  ### config/database.yml
77
83
 
78
- production:
79
- adapter: mysql2
80
- encoding: utf8
81
- reconnect: true
82
- database: kaeru
83
- pool: 5
84
- username: master
85
- password: master
86
- host: localhost
87
- socket: /var/run/mysqld/mysqld.sock
88
-
89
- slave:
90
- username: slave
91
- password: slave
92
- host: slave
84
+ ```yaml
85
+ production:
86
+ adapter: mysql2
87
+ encoding: utf8
88
+ reconnect: true
89
+ database: kaeru
90
+ pool: 5
91
+ username: master
92
+ password: master
93
+ host: localhost
94
+ socket: /var/run/mysqld/mysqld.sock
95
+
96
+ slave:
97
+ username: slave
98
+ password: slave
99
+ host: slave
100
+ ```
93
101
 
94
102
  ```slave``` is a config to connect to slave servers.
95
103
  Others will use the master server setting.
@@ -97,53 +105,61 @@ Others will use the master server setting.
97
105
  ### use multiple slave servers group
98
106
  If you may want to use multiple slave groups, write the config to ```config/database.yml```.
99
107
 
100
- production:
101
- adapter: mysql2
102
- encoding: utf8
103
- reconnect: true
104
- database: kaeru
105
- pool: 5
106
- username: master
107
- password: master
108
- host: localhost
109
- socket: /var/run/mysqld/mysqld.sock
110
-
111
- slave:
112
- username: slave
113
- password: slave
114
- host: slave
115
-
116
- admin_slave:
117
- username: slave
118
- password: slave
119
- host: admin_slaves
108
+ ```yaml
109
+ production:
110
+ adapter: mysql2
111
+ encoding: utf8
112
+ reconnect: true
113
+ database: kaeru
114
+ pool: 5
115
+ username: master
116
+ password: master
117
+ host: localhost
118
+ socket: /var/run/mysqld/mysqld.sock
119
+
120
+ slave:
121
+ username: slave
122
+ password: slave
123
+ host: slave
124
+
125
+ admin_slave:
126
+ username: slave
127
+ password: slave
128
+ host: admin_slaves
129
+ ```
120
130
 
121
131
  And call the establish_fresh_connection method in a model that access to ```admin_slave``` slave group.
122
132
 
123
- class AdminUser < ActiveRecord::Base
124
- establish_fresh_connection :admin_slave
125
- end
133
+ ```ruby
134
+ class AdminUser < ActiveRecord::Base
135
+ establish_fresh_connection :admin_slave
136
+ end
137
+ ```
126
138
 
127
139
  The model of children class will access to same slave group as the parent.
128
140
 
129
- class Parent < ActiveRecord::Base
130
- establish_fresh_connection :admin_slave
131
- end
141
+ ```ruby
142
+ class Parent < ActiveRecord::Base
143
+ establish_fresh_connection :admin_slave
144
+ end
132
145
 
133
- class AdminUser < Parent
134
- end
146
+ class AdminUser < Parent
147
+ end
135
148
 
136
- class Benefit < Parent
137
- end
149
+ class Benefit < Parent
150
+ end
151
+ ```
138
152
 
139
153
  AdminUser and Benefit access to ```admin_slave``` slave group.
140
154
 
141
155
 
142
156
  ### Declare model that doesn't use slave db
143
157
 
144
- class SomethingModel < ActiveRecord::Base
145
- master_db_only!
146
- end
158
+ ```ruby
159
+ class SomethingModel < ActiveRecord::Base
160
+ master_db_only!
161
+ end
162
+ ```
147
163
 
148
164
  If a model that always access to the master server is exist, You write ```master_db_only!``` in the model.
149
165
  The model that master_db_only model's child is always access to master db.
@@ -170,24 +186,28 @@ If you would like to change slave connection manager, assign yourself slave conn
170
186
 
171
187
  #### config/initializers/fresh_connection.rb
172
188
 
173
- FreshConnection.connection_manager = MySlaveConnection
189
+ ```ruby
190
+ FreshConnection.connection_manager = MySlaveConnection
191
+ ```
174
192
 
175
193
 
176
194
  Yourself Slave Connection Manager should be inherited FreshConnection::AbstractConnectionManager
177
195
 
178
- class MySlaveConnection < FreshConnection::AbstractConnectionManager
179
- def slave_connection
180
- # must return object of ActiveRecord::ConnectionAdapters::Mysql2Adapter
181
- end
182
-
183
- def put_aside!
184
- # called when end of Rails controller action
185
- end
186
-
187
- def recovery(failure_connection, exception)
188
- # called when raise exception to access slave server
189
- end
190
- end
196
+ ```ruby
197
+ class MySlaveConnection < FreshConnection::AbstractConnectionManager
198
+ def slave_connection
199
+ # must return object of ActiveRecord::ConnectionAdapters::Mysql2Adapter
200
+ end
201
+
202
+ def put_aside!
203
+ # called when end of Rails controller action
204
+ end
205
+
206
+ def recovery(failure_connection, exception)
207
+ # called when raise exception to access slave server
208
+ end
209
+ end
210
+ ```
191
211
 
192
212
 
193
213
  ## Contributing
@@ -213,7 +233,7 @@ bundle exec appraisal install
213
233
 
214
234
  This command run the spec suite for all rails versions supported.
215
235
 
216
- ```base
217
- bundle exec appraisal rake spec
236
+ ```bash
237
+ bundle exec appraisal rake test
218
238
  ```
219
239
 
data/Rakefile CHANGED
@@ -1,6 +1,10 @@
1
1
  require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
2
+ require 'rake/testtask'
3
3
 
4
- RSpec::Core::RakeTask.new(:spec)
4
+ Rake::TestTask.new do |t|
5
+ t.libs.push "test"
6
+ t.test_files = FileList['test/**/*_test.rb']
7
+ t.verbose = true
8
+ end
5
9
 
6
- task :default => :spec
10
+ task :default => :test
@@ -22,10 +22,11 @@ Gem::Specification.new do |spec|
22
22
  spec.required_ruby_version = '>= 2.0'
23
23
  spec.add_dependency 'activerecord', '>= 3.2.0', '< 4.3'
24
24
  spec.add_dependency 'activesupport', '>= 3.2.0', '< 4.3'
25
- spec.add_dependency 'mysql2', '~> 0.3'
25
+ spec.add_dependency 'mysql2', '~> 0.3.18'
26
26
 
27
27
  spec.add_development_dependency "bundler", "~> 1.7"
28
28
  spec.add_development_dependency "rake", '~> 10.0'
29
- spec.add_development_dependency "rspec", '~> 3.0'
30
29
  spec.add_development_dependency 'appraisal', '~> 2.0'
30
+ spec.add_development_dependency "minitest"
31
+ spec.add_development_dependency "minitest-reporters"
31
32
  end
@@ -25,6 +25,10 @@ module FreshConnection
25
25
  end
26
26
  end
27
27
 
28
+ def with_master(&block)
29
+ manage_access(false, &block)
30
+ end
31
+
28
32
  def establish_fresh_connection(slave_group = nil)
29
33
  slave_connection_handler.establish_connection(name, slave_group)
30
34
  end
@@ -17,6 +17,10 @@ module FreshConnection
17
17
  @klass.manage_access(slave_access) { super }
18
18
  end
19
19
 
20
+ def exists?(*args)
21
+ @klass.manage_access(enable_slave_access) { super }
22
+ end
23
+
20
24
  def enable_slave_access
21
25
  connection.open_transactions == 0 && @read_from_master.nil?
22
26
  end
@@ -1,4 +1,4 @@
1
1
  module FreshConnection
2
- VERSION = "0.4.2"
2
+ VERSION = "0.4.3"
3
3
  end
4
4
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fresh_connection
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tsukasa OISHI
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-05-20 00:00:00.000000000 Z
11
+ date: 2015-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -56,14 +56,14 @@ dependencies:
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: '0.3'
59
+ version: 0.3.18
60
60
  type: :runtime
61
61
  prerelease: false
62
62
  version_requirements: !ruby/object:Gem::Requirement
63
63
  requirements:
64
64
  - - "~>"
65
65
  - !ruby/object:Gem::Version
66
- version: '0.3'
66
+ version: 0.3.18
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: bundler
69
69
  requirement: !ruby/object:Gem::Requirement
@@ -93,33 +93,47 @@ dependencies:
93
93
  - !ruby/object:Gem::Version
94
94
  version: '10.0'
95
95
  - !ruby/object:Gem::Dependency
96
- name: rspec
96
+ name: appraisal
97
97
  requirement: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: '3.0'
101
+ version: '2.0'
102
102
  type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  requirements:
106
106
  - - "~>"
107
107
  - !ruby/object:Gem::Version
108
- version: '3.0'
108
+ version: '2.0'
109
109
  - !ruby/object:Gem::Dependency
110
- name: appraisal
110
+ name: minitest
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - "~>"
113
+ - - ">="
114
114
  - !ruby/object:Gem::Version
115
- version: '2.0'
115
+ version: '0'
116
116
  type: :development
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - "~>"
120
+ - - ">="
121
121
  - !ruby/object:Gem::Version
122
- version: '2.0'
122
+ version: '0'
123
+ - !ruby/object:Gem::Dependency
124
+ name: minitest-reporters
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
123
137
  description: https://github.com/tsukasaoishi/fresh_connection
124
138
  email:
125
139
  - tsukasa.oishi@gmail.com
@@ -177,7 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
191
  version: '0'
178
192
  requirements: []
179
193
  rubyforge_project:
180
- rubygems_version: 2.4.5
194
+ rubygems_version: 2.4.5.1
181
195
  signing_key:
182
196
  specification_version: 4
183
197
  summary: FreshConnection supports to connect with Mysql slave servers via Load Balancers.