activerecord-mysql-reconnect 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YmIxN2Y4NzUyOGY2NGE0MWQzYjk3MTk4YmFjZTNiM2JiZDA0NjhiNQ==
5
- data.tar.gz: !binary |-
6
- Njk5Yjk5MDk0ZWUyMjlkNjRkNWUwMWMxMDkxMTQyZGE4NTczYjUyYg==
2
+ SHA1:
3
+ metadata.gz: 9feafc3ddcaeba6d385f2d99565689efcaa3c46b
4
+ data.tar.gz: 5c74370dd16ba0e406eccd436140da9c74c62cf7
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZWRjNjVhNzk3YjA5YzJhYTZmODlkNWQ0NDc0NDM0MjU2OTJlODIyYWU1YzI4
10
- NDFkNjJjODg4ZmViMThlMTE2OTRiZGIyN2FmMjE2MGUxZTQyZmRiMTRjZDIx
11
- MTc2OWQ3NzE1ZDQzYjQ0MTYxMDQ2MDcyOTc3NWRiNmIzNjkzNWY=
12
- data.tar.gz: !binary |-
13
- ZmNlMzZkZmNhZjRhNjc1Yzk0MGM1NmMxMzBjM2YzN2U1MGRiYTk5ZDdmYjQ1
14
- NTJkMmE2NjFmMzViN2U2OTNkMDM4YjRmYzE5MWM2NDU3MWQ3MjY5NDlkNGY5
15
- YTRiZWE5Y2U5MWU1ODhmOTA4ZjAwYzUwNTlhNTc2Y2Y5OGU1M2Q=
6
+ metadata.gz: 3166411ed87951ce3c42cb8626b4378b2da20c6d87a79963632b00fc74f819e9aa7fa1880760c9fdcb86462a3b15bf4cbb2443258282f051f44bcf25a4160e20
7
+ data.tar.gz: 98212109f565974bc9f4a04731d7fbe754bfbfedf453ac02cf8cc7588d1b437321a918de915d728cb49aaa0cc6c13047c95603b29aef9a1e525303be00c2e888
data/.gitignore CHANGED
@@ -16,3 +16,5 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
  test.rb
19
+ *.bak
20
+ *.swp
data/.rspec CHANGED
@@ -1,2 +1,4 @@
1
1
  --require spec_helper
2
2
  --colour
3
+ --require rspec/instafail
4
+ --format RSpec::Instafail
data/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ activerecord-mysql-reconnect 0.3.3 (January 18, 2014)
2
+
3
+ * use BigDecimal for sleep
4
+ * add handling error ('The MySQL server is running with the --read-only...')
5
+
1
6
  activerecord-mysql-reconnect 0.3.1 (January 9, 2014)
2
7
 
3
8
  * Retry mode is added
data/README.md CHANGED
@@ -22,7 +22,8 @@ Or install it yourself as:
22
22
  ## Usage
23
23
 
24
24
  ```ruby
25
- require 'activerecord/mysql/reconnect'
25
+ require 'active_record'
26
+ require 'activerecord-mysql-reconnect'
26
27
  require 'logger'
27
28
 
28
29
  ActiveRecord::Base.establish_connection(
@@ -89,7 +90,10 @@ gem 'activerecord-mysql-reconnect'
89
90
  MyApp::Application.configure do
90
91
  ...
91
92
  config.active_record.enable_retry = true
93
+ #config.active_record.retry_databases = :employees # or [:employees], ['employees']
94
+ # retry_databases -> 0: retry all databases (default)
92
95
  config.active_record.execution_tries = 10 # times
96
+ # execution_tries -> 0: retry indefinitely
93
97
  config.active_record.execution_retry_wait = 1.5 # sec
94
98
  config.active_record.retry_mode = :rw # default: `:r`, valid values: `:r`, `:rw`, `:force`
95
99
  ...
@@ -20,8 +20,10 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  # '~> 3.2.14' or '~> 4.0.2'
22
22
  spec.add_dependency 'activerecord'
23
+ spec.add_dependency 'activesupport'
23
24
  spec.add_dependency 'mysql2'
24
25
  spec.add_development_dependency 'bundler', '~> 1.3'
25
26
  spec.add_development_dependency 'rake'
26
27
  spec.add_development_dependency 'rspec', '>= 2.14.1'
28
+ spec.add_development_dependency 'rspec-instafail'
27
29
  end
@@ -0,0 +1,5 @@
1
+ require 'active_support'
2
+
3
+ ActiveSupport.on_load :active_record do
4
+ require_relative 'activerecord/mysql/reconnect'
5
+ end
@@ -3,12 +3,10 @@ require 'logger'
3
3
  require 'bigdecimal'
4
4
 
5
5
  require 'active_record'
6
- require 'active_record/base'
7
6
  require 'active_record/connection_adapters/abstract_adapter'
8
7
  require 'active_record/connection_adapters/abstract_mysql_adapter'
9
8
  require 'active_record/connection_adapters/mysql2_adapter'
10
9
  require 'active_record/connection_adapters/abstract/connection_pool'
11
- require 'active_support'
12
10
 
13
11
  require 'activerecord/mysql/reconnect/version'
14
12
  require 'activerecord/mysql/reconnect/base_ext'
@@ -77,6 +75,20 @@ module Activerecord::Mysql::Reconnect
77
75
  @activerecord_mysql_reconnect_retry_mode || DEFAULT_RETRY_MODE
78
76
  end
79
77
 
78
+ def retry_databases=(v)
79
+ v ||= []
80
+
81
+ unless v.kind_of?(Array)
82
+ v = [v]
83
+ end
84
+
85
+ @activerecord_mysql_reconnect_retry_databases = v.map {|i| i.to_s }
86
+ end
87
+
88
+ def retry_databases
89
+ @activerecord_mysql_reconnect_retry_databases || []
90
+ end
91
+
80
92
  def retryable(opts)
81
93
  block = opts.fetch(:proc)
82
94
  on_error = opts[:on_error]
@@ -95,8 +107,9 @@ module Activerecord::Mysql::Reconnect
95
107
 
96
108
  opt_msgs = ["cause: #{e} [#{e.class}]"]
97
109
 
98
- if conn and conn.kind_of?(Mysql2::Client)
99
- opt_msgs << 'connection: ' + [:host, :database, :username].map {|k| "#{k}=#{conn.query_options[k]}" }.join(";")
110
+ if conn
111
+ conn_info = connection_info(conn)
112
+ opt_msgs << 'connection: ' + [:host, :database, :username].map {|k| "#{k}=#{conn_info[k]}" }.join(";")
100
113
  end
101
114
 
102
115
  logger.warn("MySQL server has gone away. Trying to reconnect in #{wait.to_f} seconds. (#{opt_msgs.join(', ')})")
@@ -161,11 +174,17 @@ module Activerecord::Mysql::Reconnect
161
174
  def should_handle?(e, opts = {})
162
175
  sql = opts[:sql]
163
176
  retry_mode = opts[:retry_mode]
177
+ conn = opts[:connection]
164
178
 
165
179
  if without_retry?
166
180
  return false
167
181
  end
168
182
 
183
+ if conn and not retry_databases.empty?
184
+ conn_info = connection_info(conn)
185
+ return false unless retry_databases.include?(conn_info[:database])
186
+ end
187
+
169
188
  unless HANDLE_ERROR.any? {|i| e.kind_of?(i) }
170
189
  return false
171
190
  end
@@ -186,5 +205,17 @@ module Activerecord::Mysql::Reconnect
186
205
 
187
206
  return true
188
207
  end
208
+
209
+ def connection_info(conn)
210
+ conn_info = {}
211
+
212
+ if conn.kind_of?(Mysql2::Client)
213
+ [:host, :database, :username].each {|k| conn_info[k] = conn.query_options[k] }
214
+ elsif conn.kind_of?(Hash)
215
+ conn_info = conn.dup
216
+ end
217
+
218
+ return conn_info
219
+ end
189
220
  end # end of class methods
190
221
  end
@@ -15,6 +15,14 @@ class ActiveRecord::Base
15
15
  Activerecord::Mysql::Reconnect.retry_mode
16
16
  end
17
17
 
18
+ def retry_databases=(v)
19
+ Activerecord::Mysql::Reconnect.retry_databases = v
20
+ end
21
+
22
+ def retry_databases
23
+ Activerecord::Mysql::Reconnect.retry_databases
24
+ end
25
+
18
26
  def without_retry
19
27
  Activerecord::Mysql::Reconnect.without_retry do
20
28
  yield
@@ -3,7 +3,8 @@ class ActiveRecord::ConnectionAdapters::ConnectionPool
3
3
  Activerecord::Mysql::Reconnect.retryable(
4
4
  :proc => proc {
5
5
  new_connection_without_retry
6
- }
6
+ },
7
+ :connection => spec.config,
7
8
  )
8
9
  end
9
10
 
@@ -1,7 +1,7 @@
1
1
  module Activerecord
2
2
  module Mysql
3
3
  module Reconnect
4
- VERSION = '0.3.3'
4
+ VERSION = '0.3.4'
5
5
  end
6
6
  end
7
7
  end
data/run-all-tests.sh ADDED
@@ -0,0 +1,46 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ # sysvbanner
5
+ # https://github.com/uffejakobsen/sysvbanner
6
+
7
+ banner `mysqld --version`
8
+
9
+ export ACTIVERECORD_MYSQL_RECONNECT_ENGINE=InnoDB
10
+ banner $ACTIVERECORD_MYSQL_RECONNECT_ENGINE
11
+
12
+ sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '= 3.2.14'/" activerecord-mysql-reconnect.gemspec
13
+ bundle install -j4
14
+ banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
15
+ bundle exec rake
16
+
17
+ sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '~> 3.2.14'/" activerecord-mysql-reconnect.gemspec
18
+ bundle install -j4
19
+ banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
20
+ bundle exec rake
21
+
22
+ sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '~> 4.0'/" activerecord-mysql-reconnect.gemspec
23
+ bundle install -j4
24
+ banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
25
+ bundle exec rake
26
+
27
+ export ACTIVERECORD_MYSQL_RECONNECT_ENGINE=MyISAM
28
+ banner $ACTIVERECORD_MYSQL_RECONNECT_ENGINE
29
+
30
+ sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '= 3.2.14'/" activerecord-mysql-reconnect.gemspec
31
+ bundle install -j4
32
+ banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
33
+ bundle exec rake
34
+
35
+ sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '~> 3.2.14'/" activerecord-mysql-reconnect.gemspec
36
+ bundle install -j4
37
+ banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
38
+ bundle exec rake
39
+
40
+ sed -i.bak "s/spec.add_dependency 'activerecord'.*/spec.add_dependency 'activerecord', '~> 4.0'/" activerecord-mysql-reconnect.gemspec
41
+ bundle install -j4
42
+ banner `bundle exec ruby -e 'require "active_record"; puts ActiveRecord::VERSION::STRING'`
43
+ bundle exec rake
44
+
45
+ git checkout activerecord-mysql-reconnect.gemspec
46
+ rm *.bak spec/*.bak
@@ -18,7 +18,7 @@ describe 'activerecord-mysql-reconnect' do
18
18
  it 'on select' do
19
19
  expect {
20
20
  th = thread_run {|do_stop|
21
- expect(Employee.where(:id => 1).pluck('sleep(15) * 0')).to eq([0])
21
+ expect(Employee.where(:id => 1).pluck('sleep(10) * 0')).to eq([0])
22
22
  }
23
23
 
24
24
  mysql_restart
@@ -36,7 +36,7 @@ describe 'activerecord-mysql-reconnect' do
36
36
  emp = Employee.create(
37
37
  :emp_no => 1,
38
38
  :birth_date => Time.now,
39
- :first_name => "' + sleep(15) + '",
39
+ :first_name => "' + sleep(10) + '",
40
40
  :last_name => 'Tiger',
41
41
  :hire_date => Time.now
42
42
  )
@@ -58,7 +58,7 @@ describe 'activerecord-mysql-reconnect' do
58
58
  expect {
59
59
  th = thread_run {|do_stop|
60
60
  emp = Employee.where(:id => 1).first
61
- emp.first_name = "' + sleep(15) + '"
61
+ emp.first_name = "' + sleep(10) + '"
62
62
  emp.last_name = 'ZapZapZap'
63
63
 
64
64
  mysql2_error('MySQL server has gone away') do
@@ -88,77 +88,81 @@ describe 'activerecord-mysql-reconnect' do
88
88
  end
89
89
 
90
90
  it 'transaction' do
91
- expect {
92
- expect(Employee.count).to eq(300024)
91
+ unless /MyISAM/i =~ ENV['ACTIVERECORD_MYSQL_RECONNECT_ENGINE']
92
+ expect {
93
+ expect(Employee.count).to eq(300024)
93
94
 
94
- mysql2_error('MySQL server has gone away') do
95
- ActiveRecord::Base.transaction do
96
- emp = Employee.create(
97
- :emp_no => 1,
98
- :birth_date => Time.now,
99
- :first_name => 'Scott',
100
- :last_name => 'Tiger',
101
- :hire_date => Time.now
102
- )
103
- expect(emp.id).to eq(300025)
104
- expect(emp.emp_no).to eq(1)
105
- mysql_restart
106
- emp = Employee.create(
107
- :emp_no => 2,
108
- :birth_date => Time.now,
109
- :first_name => 'Scott',
110
- :last_name => 'Tiger',
111
- :hire_date => Time.now
112
- )
113
- expect(emp.id).to eq(300025)
114
- expect(emp.emp_no).to eq(2)
95
+ mysql2_error('MySQL server has gone away') do
96
+ ActiveRecord::Base.transaction do
97
+ emp = Employee.create(
98
+ :emp_no => 1,
99
+ :birth_date => Time.now,
100
+ :first_name => 'Scott',
101
+ :last_name => 'Tiger',
102
+ :hire_date => Time.now
103
+ )
104
+ expect(emp.id).to eq(300025)
105
+ expect(emp.emp_no).to eq(1)
106
+ mysql_restart
107
+ emp = Employee.create(
108
+ :emp_no => 2,
109
+ :birth_date => Time.now,
110
+ :first_name => 'Scott',
111
+ :last_name => 'Tiger',
112
+ :hire_date => Time.now
113
+ )
114
+ expect(emp.id).to eq(300025)
115
+ expect(emp.emp_no).to eq(2)
116
+ end
115
117
  end
116
- end
117
118
 
118
- expect(Employee.count).to eq(300025)
119
- }.to_not raise_error
119
+ expect(Employee.count).to eq(300025)
120
+ }.to_not raise_error
121
+ end
120
122
  end
121
123
 
122
124
  it 'retryable_transaction' do
123
- expect {
124
- expect(Employee.count).to eq(300024)
125
+ unless /MyISAM/i =~ ENV['ACTIVERECORD_MYSQL_RECONNECT_ENGINE']
126
+ expect {
127
+ expect(Employee.count).to eq(300024)
125
128
 
126
- mysql2_error('MySQL server has gone away') do
127
- ActiveRecord::Base.retryable_transaction do
128
- emp = Employee.create(
129
- :emp_no => 1,
130
- :birth_date => Time.now,
131
- :first_name => 'Scott',
132
- :last_name => 'Tiger',
133
- :hire_date => Time.now
134
- )
135
- expect(emp.id).to eq(300025)
136
- expect(emp.emp_no).to eq(1)
137
- mysql_restart
138
- emp = Employee.create(
139
- :emp_no => 2,
140
- :birth_date => Time.now,
141
- :first_name => 'Scott',
142
- :last_name => 'Tiger',
143
- :hire_date => Time.now
144
- )
145
- expect(emp.id).to eq(300026)
146
- expect(emp.emp_no).to eq(2)
147
- mysql_restart
148
- emp = Employee.create(
149
- :emp_no => 3,
150
- :birth_date => Time.now,
151
- :first_name => 'Scott',
152
- :last_name => 'Tiger',
153
- :hire_date => Time.now
154
- )
155
- expect(emp.id).to eq(300027)
156
- expect(emp.emp_no).to eq(3)
129
+ mysql2_error('MySQL server has gone away') do
130
+ ActiveRecord::Base.retryable_transaction do
131
+ emp = Employee.create(
132
+ :emp_no => 1,
133
+ :birth_date => Time.now,
134
+ :first_name => 'Scott',
135
+ :last_name => 'Tiger',
136
+ :hire_date => Time.now
137
+ )
138
+ expect(emp.id).to eq(300025)
139
+ expect(emp.emp_no).to eq(1)
140
+ mysql_restart
141
+ emp = Employee.create(
142
+ :emp_no => 2,
143
+ :birth_date => Time.now,
144
+ :first_name => 'Scott',
145
+ :last_name => 'Tiger',
146
+ :hire_date => Time.now
147
+ )
148
+ expect(emp.id).to eq(300026)
149
+ expect(emp.emp_no).to eq(2)
150
+ mysql_restart
151
+ emp = Employee.create(
152
+ :emp_no => 3,
153
+ :birth_date => Time.now,
154
+ :first_name => 'Scott',
155
+ :last_name => 'Tiger',
156
+ :hire_date => Time.now
157
+ )
158
+ expect(emp.id).to eq(300027)
159
+ expect(emp.emp_no).to eq(3)
160
+ end
157
161
  end
158
- end
159
162
 
160
- expect(Employee.count).to eq(300027)
161
- }.to_not raise_error
163
+ expect(Employee.count).to eq(300027)
164
+ }.to_not raise_error
165
+ end
162
166
  end
163
167
 
164
168
  it 'retry new connection' do
@@ -173,7 +177,7 @@ describe 'activerecord-mysql-reconnect' do
173
177
  expect {
174
178
  th = thread_run {|do_stop|
175
179
  mysql_stop
176
- sleep 15
180
+ sleep 10
177
181
  mysql_start
178
182
  }
179
183
 
@@ -186,7 +190,7 @@ describe 'activerecord-mysql-reconnect' do
186
190
  expect {
187
191
  th = thread_run {|do_stop|
188
192
  mysql_stop
189
- sleep 15
193
+ sleep 10
190
194
  mysql_start
191
195
  }
192
196
 
@@ -224,12 +228,14 @@ describe 'activerecord-mysql-reconnect' do
224
228
  it 'read only (write)' do
225
229
  enable_read_only do
226
230
  expect {
231
+ lock_table
232
+
227
233
  th = thread_run {|do_stop|
228
234
  mysql2_error('MySQL server has gone away') do
229
235
  emp = Employee.create(
230
236
  :emp_no => 1,
231
237
  :birth_date => Time.now,
232
- :first_name => "' + sleep(15) + '",
238
+ :first_name => 'Scott',
233
239
  :last_name => 'Tiger',
234
240
  :hire_date => Time.now
235
241
  )
@@ -243,12 +249,14 @@ describe 'activerecord-mysql-reconnect' do
243
249
  end
244
250
 
245
251
  it 'lost connection' do
246
- sql = "INSERT INTO `employees` (`birth_date`, `emp_no`, `first_name`, `hire_date`, `last_name`) VALUES ('2014-01-09 03:22:25', 1, '' + sleep(15) + '', '2014-01-09 03:22:25', 'Tiger')"
252
+ sql = "INSERT INTO `employees` (`birth_date`, `emp_no`, `first_name`, `hire_date`, `last_name`) VALUES ('2014-01-09 03:22:25', 1, 'Scott', '2014-01-09 03:22:25', 'Tiger')"
247
253
 
248
254
  expect {
249
255
  ActiveRecord::Base.connection.execute(sql)
250
256
  }.to_not raise_error
251
257
 
258
+ lock_table
259
+
252
260
  mysql2_error('Lost connection to MySQL server during query') do
253
261
  expect {
254
262
  th = thread_run {|do_stop|
@@ -262,7 +270,7 @@ describe 'activerecord-mysql-reconnect' do
262
270
  end
263
271
 
264
272
  it 'force retry' do
265
- sql = "INSERT INTO `employees` (`birth_date`, `emp_no`, `first_name`, `hire_date`, `last_name`) VALUES ('2014-01-09 03:22:25', 1, '' + sleep(15) + '', '2014-01-09 03:22:25', 'Tiger')"
273
+ sql = "INSERT INTO `employees` (`birth_date`, `emp_no`, `first_name`, `hire_date`, `last_name`) VALUES ('2014-01-09 03:22:25', 1, '' + sleep(10) + '', '2014-01-09 03:22:25', 'Tiger')"
266
274
 
267
275
  expect {
268
276
  ActiveRecord::Base.connection.execute(sql)
@@ -291,4 +299,20 @@ describe 'activerecord-mysql-reconnect' do
291
299
  }.to_not raise_error
292
300
  end
293
301
  end
302
+
303
+ it 'retry specific database' do
304
+ retry_databases(:employees2) do
305
+ expect {
306
+ expect(Employee.all.length).to eq(300024)
307
+ mysql_restart
308
+ expect(Employee.all.length).to eq(300024)
309
+ }.to raise_error(ActiveRecord::StatementInvalid)
310
+ end
311
+
312
+ expect {
313
+ expect(Employee.all.length).to eq(300024)
314
+ mysql_restart
315
+ expect(Employee.all.length).to eq(300024)
316
+ }.to_not raise_error
317
+ end
294
318
  end
data/spec/spec_helper.rb CHANGED
@@ -67,6 +67,16 @@ def force_retry
67
67
  end
68
68
  end
69
69
 
70
+ def retry_databases(dbs)
71
+ begin
72
+ expect(ActiveRecord::Base.retry_databases).to eq([])
73
+ ActiveRecord::Base.retry_databases = dbs
74
+ yield
75
+ ensure
76
+ ActiveRecord::Base.retry_databases = []
77
+ end
78
+ end
79
+
70
80
  def thread_run
71
81
  thread_running = false
72
82
  do_stop = proc { thread_running = false }
@@ -84,8 +94,42 @@ def thread_run
84
94
  return th
85
95
  end
86
96
 
97
+ def lock_table
98
+ Thread.start do
99
+ begin
100
+ ActiveRecord::Base.connection.execute("LOCK TABLES employees WRITE")
101
+ rescue Exception
102
+ end
103
+ end
104
+
105
+ sleep 3
106
+ end
107
+
87
108
  RSpec.configure do |config|
109
+ config.before(:all) do
110
+ if ENV['ACTIVERECORD_MYSQL_RECONNECT_ENGINE']
111
+ engine = ENV['ACTIVERECORD_MYSQL_RECONNECT_ENGINE']
112
+ employees_sql = File.expand_path('../employees.sql', __FILE__)
113
+ system("sed -i.bak '17s/ENGINE=[^ ]*/ENGINE=#{engine}/' #{employees_sql}")
114
+ end
115
+ end
116
+
117
+ config.after(:all) do
118
+ employees_sql = File.expand_path('../employees.sql', __FILE__)
119
+ system("git checkout #{employees_sql}")
120
+ end
121
+
88
122
  config.before(:each) do
123
+ desc = example.metadata[:full_description]
124
+ puts <<-EOS
125
+
126
+
127
+ #{'#' * (desc.length + 4)}
128
+ # #{desc} #
129
+ #{'#' * (desc.length + 4)}
130
+
131
+ EOS
132
+
89
133
  employees_sql = File.expand_path('../employees.sql', __FILE__)
90
134
  system("mysql -u root < #{employees_sql}")
91
135
 
metadata CHANGED
@@ -1,41 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-mysql-reconnect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-18 00:00:00.000000000 Z
11
+ date: 2014-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
25
39
  - !ruby/object:Gem::Version
26
40
  version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: mysql2
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ! '>='
45
+ - - '>='
32
46
  - !ruby/object:Gem::Version
33
47
  version: '0'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - ! '>='
52
+ - - '>='
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  - !ruby/object:Gem::Dependency
@@ -56,30 +70,44 @@ dependencies:
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - ! '>='
73
+ - - '>='
60
74
  - !ruby/object:Gem::Version
61
75
  version: '0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - ! '>='
80
+ - - '>='
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rspec
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ! '>='
87
+ - - '>='
74
88
  - !ruby/object:Gem::Version
75
89
  version: 2.14.1
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - ! '>='
94
+ - - '>='
81
95
  - !ruby/object:Gem::Version
82
96
  version: 2.14.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-instafail
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
83
111
  description: It is the library to reconnect automatically when ActiveRecord is disconnected
84
112
  from MySQL.
85
113
  email:
@@ -96,6 +124,7 @@ files:
96
124
  - README.md
97
125
  - Rakefile
98
126
  - activerecord-mysql-reconnect.gemspec
127
+ - lib/activerecord-mysql-reconnect.rb
99
128
  - lib/activerecord/mysql/reconnect.rb
100
129
  - lib/activerecord/mysql/reconnect/abstract_adapter_ext.rb
101
130
  - lib/activerecord/mysql/reconnect/abstract_mysql_adapter_ext.rb
@@ -103,6 +132,7 @@ files:
103
132
  - lib/activerecord/mysql/reconnect/connection_pool_ext.rb
104
133
  - lib/activerecord/mysql/reconnect/mysql2_adapter_ext.rb
105
134
  - lib/activerecord/mysql/reconnect/version.rb
135
+ - run-all-tests.sh
106
136
  - spec/activerecord-mysql-reconnect_spec.rb
107
137
  - spec/employees.sql
108
138
  - spec/spec_helper.rb
@@ -116,17 +146,17 @@ require_paths:
116
146
  - lib
117
147
  required_ruby_version: !ruby/object:Gem::Requirement
118
148
  requirements:
119
- - - ! '>='
149
+ - - '>='
120
150
  - !ruby/object:Gem::Version
121
151
  version: '0'
122
152
  required_rubygems_version: !ruby/object:Gem::Requirement
123
153
  requirements:
124
- - - ! '>='
154
+ - - '>='
125
155
  - !ruby/object:Gem::Version
126
156
  version: '0'
127
157
  requirements: []
128
158
  rubyforge_project:
129
- rubygems_version: 2.1.11
159
+ rubygems_version: 2.0.14
130
160
  signing_key:
131
161
  specification_version: 4
132
162
  summary: It is the library to reconnect automatically when ActiveRecord is disconnected