mysql_online_migrations 1.0.1 → 1.0.2

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: a1d3abafbc4f5d4bb2e9ad2acd279698afeb9c84
4
- data.tar.gz: ead1da79046e14307004120aaec6576417817791
3
+ metadata.gz: 5ec28875ae56b82a7591ae9067e57e1cab4d6124
4
+ data.tar.gz: 713d2a16703c64639066181adeeb2fa3d3acb26f
5
5
  SHA512:
6
- metadata.gz: 27454fc3df6e87f5c3eb4779c4c15b24af040603dc434f990015637d7d5775ce3618d1b931cef391073873f721e1185f1219a446313c4928658c93e5514338b6
7
- data.tar.gz: 0801d5ef9c79ff3ea3b973e9dd9e1f57672ea5de27bfe8630723a2654c1f95cac5c556f62a0901b77b0962a40f8ea7b962f9de32a3a3518c23d3f9308b3ba341
6
+ metadata.gz: 136c85eff0b974336cbdc123e8cf1d22fe972c0c6842f75a57be69cfb6968fe47a64a9e9525184515d3a69bf899f01f084cd750c2da2af060eb534e94a6e0dcd
7
+ data.tar.gz: f0060e523175fb1239c2b8a029b79c98ac9b8e68a4133d1a170294c70353ab001570b248eae4ca509aa5f72a358914a260597318d0162d69a49e5dcde774557b
data/Gemfile.lock CHANGED
@@ -1,34 +1,40 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mysql_online_migrations (0.1.4)
5
- activerecord (~> 3.2.15)
6
- activesupport (~> 3.2.15)
4
+ mysql_online_migrations (1.0.1)
5
+ activerecord (>= 3.2.15)
6
+ activesupport (>= 3.2.15)
7
7
  mysql2
8
8
 
9
9
  GEM
10
10
  remote: http://rubygems.org/
11
11
  specs:
12
- activemodel (3.2.15)
13
- activesupport (= 3.2.15)
14
- builder (~> 3.0.0)
15
- activerecord (3.2.15)
16
- activemodel (= 3.2.15)
17
- activesupport (= 3.2.15)
18
- arel (~> 3.0.2)
19
- tzinfo (~> 0.3.29)
20
- activesupport (3.2.15)
12
+ activemodel (4.0.2)
13
+ activesupport (= 4.0.2)
14
+ builder (~> 3.1.0)
15
+ activerecord (4.0.2)
16
+ activemodel (= 4.0.2)
17
+ activerecord-deprecated_finders (~> 1.0.2)
18
+ activesupport (= 4.0.2)
19
+ arel (~> 4.0.0)
20
+ activerecord-deprecated_finders (1.0.3)
21
+ activesupport (4.0.2)
21
22
  i18n (~> 0.6, >= 0.6.4)
22
- multi_json (~> 1.0)
23
- arel (3.0.3)
24
- builder (3.0.4)
23
+ minitest (~> 4.2)
24
+ multi_json (~> 1.3)
25
+ thread_safe (~> 0.1)
26
+ tzinfo (~> 0.3.37)
27
+ arel (4.0.2)
28
+ atomic (1.1.14)
29
+ builder (3.1.4)
25
30
  coderay (1.0.9)
26
31
  diff-lcs (1.2.5)
27
32
  i18n (0.6.9)
28
33
  logger (1.2.8)
29
34
  method_source (0.8.2)
30
- multi_json (1.8.2)
31
- mysql2 (0.3.14)
35
+ minitest (4.7.5)
36
+ multi_json (1.8.4)
37
+ mysql2 (0.3.15)
32
38
  pry (0.9.12.2)
33
39
  coderay (~> 1.0.5)
34
40
  method_source (~> 0.8)
@@ -42,6 +48,8 @@ GEM
42
48
  diff-lcs (>= 1.1.3, < 2.0)
43
49
  rspec-mocks (2.14.4)
44
50
  slop (3.4.6)
51
+ thread_safe (0.1.3)
52
+ atomic
45
53
  tzinfo (0.3.38)
46
54
 
47
55
  PLATFORMS
@@ -13,7 +13,23 @@ module MysqlOnlineMigrations
13
13
  end
14
14
 
15
15
  def connection
16
- @no_lock_adapter ||= ActiveRecord::ConnectionAdapters::Mysql2AdapterWithoutLock.new(super)
16
+ original_connection = super
17
+ adapter_mode = original_connection.class.name == "ActiveRecord::ConnectionAdapters::Mysql2Adapter"
18
+
19
+ @original_adapter ||= if adapter_mode
20
+ original_connection
21
+ else
22
+ original_connection.instance_variable_get(:@delegate)
23
+ end
24
+
25
+ @no_lock_adapter ||= ActiveRecord::ConnectionAdapters::Mysql2AdapterWithoutLock.new(@original_adapter)
26
+
27
+ if adapter_mode
28
+ @no_lock_adapter
29
+ else
30
+ original_connection.instance_variable_set(:@delegate, @no_lock_adapter)
31
+ original_connection
32
+ end
17
33
  end
18
34
 
19
35
  def with_lock
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'mysql_online_migrations'
3
- s.version = '1.0.1'
3
+ s.version = '1.0.2'
4
4
  s.summary = "Use MySQL 5.6+ capacities to enforce online migrations"
5
5
  s.description = "MySQL 5.6 adds a `LOCK=NONE` option to make sure migrations are done with no locking. Let's use it."
6
6
  s.authors = ["Anthony Alberto"]
@@ -10,11 +10,34 @@ describe MysqlOnlineMigrations do
10
10
  end
11
11
 
12
12
  context "#connection" do
13
- it "memoizes an instance of Mysql2AdapterWithoutLock" do
14
- ActiveRecord::ConnectionAdapters::Mysql2AdapterWithoutLock.should_receive(:new)
15
- .with(an_instance_of(ActiveRecord::ConnectionAdapters::Mysql2Adapter)).once.and_call_original
16
- 3.times { @connection = migration.connection }
17
- @connection.should be_an_instance_of(ActiveRecord::ConnectionAdapters::Mysql2AdapterWithoutLock)
13
+ shared_examples_for "Mysql2AdapterWithoutLock created" do
14
+ it "memoizes an instance of Mysql2AdapterWithoutLock" do
15
+ ActiveRecord::ConnectionAdapters::Mysql2AdapterWithoutLock.should_receive(:new)
16
+ .with(an_instance_of(ActiveRecord::ConnectionAdapters::Mysql2Adapter)).once.and_call_original
17
+ 3.times { migration.connection }
18
+ end
19
+ end
20
+
21
+ context 'when migrating' do
22
+ it "returns an instance of Mysql2AdapterWithoutLock" do
23
+ migration.connection.should be_an_instance_of(ActiveRecord::ConnectionAdapters::Mysql2AdapterWithoutLock)
24
+ end
25
+
26
+ it_behaves_like "Mysql2AdapterWithoutLock created"
27
+ end
28
+
29
+ context 'when rolling back' do
30
+ before do
31
+ migration.instance_variable_set(:@connection, ActiveRecord::Migration::CommandRecorder.new(ActiveRecord::Base.connection))
32
+ end
33
+
34
+ it "returns an instance of ActiveRecord::Migration::CommandRecorder" do
35
+ recorder_connection = migration.connection
36
+ recorder_connection.should be_an_instance_of(ActiveRecord::Migration::CommandRecorder)
37
+ recorder_connection.instance_variable_get(:@delegate).should be_an_instance_of(ActiveRecord::ConnectionAdapters::Mysql2AdapterWithoutLock)
38
+ end
39
+
40
+ it_behaves_like "Mysql2AdapterWithoutLock created"
18
41
  end
19
42
  end
20
43
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mysql_online_migrations
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Alberto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-08 00:00:00.000000000 Z
11
+ date: 2014-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord