fresh_connection 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
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.