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 +4 -4
- data/.travis.yml +0 -1
- data/README.md +87 -67
- data/Rakefile +7 -3
- data/fresh_connection.gemspec +3 -2
- data/lib/fresh_connection/extend/ar_base.rb +4 -0
- data/lib/fresh_connection/extend/ar_relation.rb +4 -0
- data/lib/fresh_connection/version.rb +1 -1
- metadata +27 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10888efb25fd374b6b5d64d1a8c414ffdc9ae179
|
4
|
+
data.tar.gz: 35412910638fd33b2000190a7a92d647916a0403
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bafc8b2f529f0452c1df3dc1954b93ca242dcc11d1328bd905b9a6621d6e4ce664d38667afae0ff532a107bbbba522b54f9576d9dddd4edd4a6a7d61b00aef89
|
7
|
+
data.tar.gz: c2ca3ca877878a874384c33df520fec72b1451eed1982c43ab69428ff04b28ec3171763e402d57fe8f973ad2603be19dfb13db4af5ac1a6cd4cf0ea713cc4657
|
data/.travis.yml
CHANGED
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
|
-
|
64
|
+
```ruby
|
65
|
+
gem "fresh_connection"
|
66
|
+
```
|
65
67
|
|
66
68
|
And then execute:
|
67
69
|
|
68
|
-
|
70
|
+
```
|
71
|
+
$ bundle
|
72
|
+
```
|
69
73
|
|
70
74
|
Or install it yourself as:
|
71
75
|
|
72
|
-
|
76
|
+
```
|
77
|
+
$ gem install fresh_connection
|
78
|
+
```
|
73
79
|
|
74
80
|
|
75
81
|
## Config
|
76
82
|
### config/database.yml
|
77
83
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
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
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
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
|
-
|
124
|
-
|
125
|
-
|
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
|
-
|
130
|
-
|
131
|
-
|
141
|
+
```ruby
|
142
|
+
class Parent < ActiveRecord::Base
|
143
|
+
establish_fresh_connection :admin_slave
|
144
|
+
end
|
132
145
|
|
133
|
-
|
134
|
-
|
146
|
+
class AdminUser < Parent
|
147
|
+
end
|
135
148
|
|
136
|
-
|
137
|
-
|
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
|
-
|
145
|
-
|
146
|
-
|
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
|
-
|
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
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
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
|
-
```
|
217
|
-
bundle exec appraisal rake
|
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
|
2
|
+
require 'rake/testtask'
|
3
3
|
|
4
|
-
|
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 => :
|
10
|
+
task :default => :test
|
data/fresh_connection.gemspec
CHANGED
@@ -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
|
@@ -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
|
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.
|
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-
|
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:
|
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:
|
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:
|
96
|
+
name: appraisal
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
99
|
- - "~>"
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: '
|
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: '
|
108
|
+
version: '2.0'
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
|
-
name:
|
110
|
+
name: minitest
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
112
112
|
requirements:
|
113
|
-
- - "
|
113
|
+
- - ">="
|
114
114
|
- !ruby/object:Gem::Version
|
115
|
-
version: '
|
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: '
|
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.
|