ar-octopus 0.4.0 → 0.5.0

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.
Files changed (77) hide show
  1. data/.gitignore +11 -0
  2. data/.travis.yml +22 -0
  3. data/Appraisals +18 -0
  4. data/Gemfile +3 -12
  5. data/README.mkdn +63 -24
  6. data/Rakefile +70 -92
  7. data/ar-octopus.gemspec +25 -198
  8. data/lib/ar-octopus.rb +1 -0
  9. data/lib/octopus.rb +73 -25
  10. data/lib/octopus/association.rb +6 -5
  11. data/lib/octopus/association_collection.rb +58 -4
  12. data/lib/octopus/has_and_belongs_to_many_association.rb +4 -4
  13. data/lib/octopus/logger.rb +9 -4
  14. data/lib/octopus/migration.rb +155 -50
  15. data/lib/octopus/model.rb +98 -34
  16. data/lib/octopus/proxy.rb +124 -53
  17. data/lib/octopus/rails2/association.rb +46 -93
  18. data/lib/octopus/rails2/persistence.rb +1 -1
  19. data/lib/octopus/rails2/scope.rb +17 -0
  20. data/lib/octopus/rails3.1/singular_association.rb +34 -0
  21. data/lib/octopus/rails3.2/persistence.rb +12 -0
  22. data/lib/octopus/rails3/abstract_adapter.rb +39 -0
  23. data/lib/octopus/rails3/arel.rb +5 -5
  24. data/lib/octopus/rails3/log_subscriber.rb +22 -0
  25. data/lib/octopus/rails3/persistence.rb +10 -5
  26. data/lib/octopus/railtie.rb +13 -0
  27. data/lib/octopus/scope_proxy.rb +22 -16
  28. data/lib/octopus/version.rb +3 -0
  29. data/lib/tasks/octopus.rake +20 -0
  30. data/sample_app/Gemfile +2 -2
  31. data/sample_app/config/initializers/inflections.rb +1 -1
  32. data/sample_app/config/initializers/secret_token.rb +1 -1
  33. data/sample_app/db/migrate/20100720172730_create_items.rb +1 -1
  34. data/sample_app/db/migrate/20100720210335_create_sample_users.rb +1 -1
  35. data/sample_app/db/seeds.rb +1 -1
  36. data/sample_app/features/migrate.feature +12 -12
  37. data/sample_app/features/seed.feature +3 -3
  38. data/sample_app/features/step_definitions/web_steps.rb +5 -5
  39. data/sample_app/features/support/env.rb +8 -8
  40. data/sample_app/lib/tasks/cucumber.rake +2 -2
  41. data/sample_app/public/javascripts/effects.js +1 -1
  42. data/spec/config/shards.yml +38 -28
  43. data/spec/migrations/11_add_field_in_all_slaves.rb +1 -1
  44. data/spec/migrations/12_create_users_using_block.rb +2 -2
  45. data/spec/migrations/13_create_users_using_block_and_using.rb +2 -2
  46. data/spec/migrations/14_create_users_on_shards_of_a_group_with_versions.rb +11 -0
  47. data/spec/migrations/1_create_users_on_master.rb +1 -1
  48. data/spec/migrations/2_create_users_on_canada.rb +1 -1
  49. data/spec/migrations/3_create_users_on_both_shards.rb +1 -1
  50. data/spec/migrations/4_create_users_on_shards_of_a_group.rb +1 -1
  51. data/spec/migrations/5_create_users_on_multiples_groups.rb +1 -1
  52. data/spec/migrations/6_raise_exception_with_invalid_shard_name.rb +1 -1
  53. data/spec/migrations/7_raise_exception_with_invalid_multiple_shard_names.rb +1 -1
  54. data/spec/migrations/8_raise_exception_with_invalid_group_name.rb +1 -1
  55. data/spec/migrations/9_raise_exception_with_multiple_invalid_group_names.rb +1 -1
  56. data/spec/octopus/association_spec.rb +88 -70
  57. data/spec/octopus/log_subscriber_spec.rb +22 -0
  58. data/spec/octopus/logger_spec.rb +28 -15
  59. data/spec/octopus/migration_spec.rb +47 -43
  60. data/spec/octopus/model_spec.rb +179 -13
  61. data/spec/octopus/octopus_spec.rb +26 -4
  62. data/spec/octopus/proxy_spec.rb +61 -23
  63. data/spec/octopus/{replication_specs.rb → replication_spec.rb} +33 -26
  64. data/spec/octopus/scope_proxy_spec.rb +3 -3
  65. data/spec/octopus/sharded_spec.rb +9 -9
  66. data/spec/spec_helper.rb +10 -12
  67. data/spec/support/active_record/connection_adapters/modify_config_adapter.rb +17 -0
  68. data/spec/support/database_connection.rb +2 -0
  69. data/spec/{database_models.rb → support/database_models.rb} +27 -2
  70. data/spec/support/octopus_helper.rb +50 -0
  71. data/spec/tasks/octopus.rake_spec.rb +36 -0
  72. metadata +188 -169
  73. data/Gemfile.lock +0 -68
  74. data/lib/octopus/rails3/association.rb +0 -112
  75. data/spec/database_connection.rb +0 -4
  76. data/spec/octopus/controller_spec.rb +0 -34
  77. data/spec/octopus_helper.rb +0 -37
@@ -0,0 +1,22 @@
1
+ require "spec_helper"
2
+
3
+ if Octopus.rails3?
4
+ describe Octopus::LogSubscriber, :shards => [:canada] do
5
+
6
+ before :each do
7
+ @out = StringIO.new
8
+ @log = Logger.new(@out)
9
+ ActiveRecord::Base.logger = @log
10
+ ActiveRecord::Base.logger.level = Logger::DEBUG
11
+ end
12
+
13
+ after :each do
14
+ ActiveRecord::Base.logger = nil
15
+ end
16
+
17
+ it "should add to the default logger the shard name the query was sent to" do
18
+ User.using(:canada).create!(:name => "test")
19
+ @out.string.should =~ /Shard: canada/
20
+ end
21
+ end
22
+ end
@@ -1,19 +1,32 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
1
+ require "spec_helper"
2
2
 
3
- describe Octopus::Logger do
3
+ describe Octopus::Logger, :shards => [:canada] do
4
+ before :each do
5
+ @out = StringIO.new
6
+ @log = Octopus::Logger.new(@out)
7
+ ActiveRecord::Base.logger = @log
8
+ end
9
+
10
+ after :each do
11
+ ActiveRecord::Base.logger = nil
12
+ end
4
13
 
5
- before :each do
6
- @out = StringIO.new
7
- @log = Octopus::Logger.new(@out)
8
- ActiveRecord::Base.logger = @log
9
- end
10
-
11
- after :each do
12
- ActiveRecord::Base.logger = nil
14
+ if Octopus.rails3?
15
+ it "should add to the default logger what shard the query was sent" do
16
+ User.using(:canada).create!(:name => "test")
17
+ @out.string.should =~ /Shard: canada/
18
+ end
13
19
  end
14
20
 
15
- it "should add to the default logger what shard the query was sent" do
16
- User.using(:canada).create!(:name => "test")
17
- @out.string.should =~ /Shard: canada/
18
- end
19
- end
21
+ it "should be deprecated" do
22
+ @last_message = nil
23
+ ActiveSupport::Deprecation.behavior = Proc.new { |message| @last_message = message }
24
+ @log = Octopus::Logger.new(@out)
25
+
26
+ if @last_message.is_a?(Array)
27
+ @last_message.first.should =~ /DEPRECATION WARNING: Octopus::Logger is deprecated and will be removed in Octopus 0\.6\.x\./
28
+ else
29
+ @last_message.should =~ /DEPRECATION WARNING: Octopus::Logger is deprecated and will be removed in Octopus 0\.6\.x\./
30
+ end
31
+ end
32
+ end
@@ -1,91 +1,73 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
1
+ require "spec_helper"
2
2
 
3
- describe Octopus::Migration do
3
+ describe Octopus::Migration do
4
4
  it "should run just in the master shard" do
5
- migrating_to_version 1 do
6
- User.using(:master).find_by_name("Master").should_not be_nil
5
+ OctopusHelper.migrating_to_version 1 do
6
+ User.using(:master).find_by_name("Master").should_not be_nil
7
7
  User.using(:canada).find_by_name("Master").should be_nil
8
8
  end
9
9
  end
10
10
 
11
11
  it "should run on specific shard" do
12
- migrating_to_version 2 do
13
- User.using(:master).find_by_name("Sharding").should be_nil
12
+ OctopusHelper.migrating_to_version 2 do
13
+ User.using(:master).find_by_name("Sharding").should be_nil
14
14
  User.using(:canada).find_by_name("Sharding").should_not be_nil
15
15
  end
16
16
  end
17
17
 
18
18
  it "should run on specifieds shards" do
19
- migrating_to_version 3 do
20
- User.using(:brazil).find_by_name("Both").should_not be_nil
19
+ OctopusHelper.migrating_to_version 3 do
20
+ User.using(:brazil).find_by_name("Both").should_not be_nil
21
21
  User.using(:canada).find_by_name("Both").should_not be_nil
22
22
  end
23
23
  end
24
24
 
25
25
  it "should run on specified group" do
26
- migrating_to_version 4 do
26
+ OctopusHelper.migrating_to_version 4 do
27
27
  User.using(:canada).find_by_name("Group").should_not be_nil
28
- User.using(:brazil).find_by_name("Group").should_not be_nil
28
+ User.using(:brazil).find_by_name("Group").should_not be_nil
29
29
  User.using(:russia).find_by_name("Group").should_not be_nil
30
30
  end
31
31
  end
32
32
 
33
- it "should run on multiples groups" do
34
- migrating_to_version 5 do
35
- User.using(:canada).find(:all, {:conditions => {:name => "MultipleGroup"}}).size.should == 2
36
- User.using(:brazil).find(:all, {:conditions => {:name => "MultipleGroup"}}).size.should == 2
37
- User.using(:russia).find(:all, {:conditions => {:name => "MultipleGroup"}}).size.should == 2
33
+ it "should run once per shard" do
34
+ OctopusHelper.migrating_to_version 5 do
35
+ User.using(:canada).find(:all, {:conditions => {:name => "MultipleGroup"}}).size.should == 1
36
+ User.using(:brazil).find(:all, {:conditions => {:name => "MultipleGroup"}}).size.should == 1
37
+ User.using(:russia).find(:all, {:conditions => {:name => "MultipleGroup"}}).size.should == 1
38
38
  end
39
39
  end
40
40
 
41
41
  it "should create users inside block" do
42
- migrating_to_version 12 do
42
+ OctopusHelper.migrating_to_version 12 do
43
43
  User.using(:brazil).find(:all, :conditions => {:name => "UsingBlock1"}).size.should == 1
44
44
  User.using(:brazil).find(:all, :conditions => {:name => "UsingBlock2"}).size.should == 1
45
45
  User.using(:canada).find(:all, :conditions => {:name => "UsingCanada"}).size.should == 1
46
46
  User.using(:canada).find(:all, :conditions => {:name => "UsingCanada2"}).size.should == 1
47
47
  end
48
48
  end
49
-
49
+
50
50
  it "should send the query to the correct shard" do
51
- migrating_to_version 13 do
51
+ OctopusHelper.migrating_to_version 13 do
52
52
  User.using(:brazil).find(:all, :conditions => {:name => "Brazil"}).size.should == 1
53
53
  User.using(:brazil).find(:all, :conditions => {:name => "Canada"}).size.should == 0
54
54
  User.using(:canada).find(:all, :conditions => {:name => "Brazil"}).size.should == 0
55
55
  User.using(:canada).find(:all, :conditions => {:name => "Canada"}).size.should == 1
56
- end
57
- end
58
-
59
- describe "should raise a exception when" do
60
- it "you specify a invalid shard name" do
61
- lambda { ActiveRecord::Migrator.run(:up, MIGRATIONS_ROOT, 6) }.should raise_error("Nonexistent Shard Name: amazing_shard")
62
- end
63
-
64
- it "you specify a invalid shard name, even if you have multiple shards, and one of them are right" do
65
- lambda { ActiveRecord::Migrator.run(:up, MIGRATIONS_ROOT, 7) }.should raise_error("Nonexistent Shard Name: invalid_shard")
66
56
  end
57
+ end
67
58
 
68
- it "you specify a invalid group name" do
69
- lambda { ActiveRecord::Migrator.run(:up, MIGRATIONS_ROOT, 8) }.should raise_error("Nonexistent Group Name: invalid_group")
70
- end
71
-
72
- it "you specify a invalid group name, even if you have multiple groups, and one of them are right" do
73
- lambda { ActiveRecord::Migrator.run(:up, MIGRATIONS_ROOT, 9) }.should raise_error("Nonexistent Group Name: invalid_group")
74
- end
75
- end
76
-
77
- describe "when using replication" do
59
+ describe "when using replication" do
78
60
  it "should run writes on master when you use replication" do
79
- using_environment :production_replicated do
80
- migrating_to_version 10 do
61
+ OctopusHelper.using_environment :production_replicated do
62
+ OctopusHelper.migrating_to_version 10 do
81
63
  Cat.find_by_name("Replication").should be_nil
82
64
  end
83
65
  end
84
66
  end
85
67
 
86
68
  it "should run in all shards, master or another shards" do
87
- using_environment :production_replicated do
88
- migrating_to_version 11 do
69
+ OctopusHelper.using_environment :production_replicated do
70
+ OctopusHelper.migrating_to_version 11 do
89
71
  [:slave4, :slave1, :slave2, :slave3].each do |sym|
90
72
  Cat.find_by_name("Slaves").should_not be_nil
91
73
  end
@@ -93,5 +75,27 @@ describe Octopus::Migration do
93
75
  end
94
76
  end
95
77
  end
96
- end
97
78
 
79
+ it "should store the migration versions in each shard" do
80
+ class SchemaMigration < ActiveRecord::Base; end
81
+
82
+ OctopusHelper.migrating_to_version 14 do
83
+ Octopus.using(:canada) { ActiveRecord::Migrator.get_all_versions }.should include(14)
84
+ Octopus.using(:brazil) { ActiveRecord::Migrator.get_all_versions }.should include(14)
85
+ Octopus.using(:russia) { ActiveRecord::Migrator.get_all_versions }.should include(14)
86
+ end
87
+ end
88
+
89
+ it "should run the migrations on shards that are missing them" do
90
+ class SchemaMigration < ActiveRecord::Base; end
91
+
92
+ Octopus.using(:master) { SchemaMigration.create(:version => 14) }
93
+ Octopus.using(:canada) { SchemaMigration.create(:version => 14) }
94
+
95
+ OctopusHelper.migrating_to_version 14 do
96
+ Octopus.using(:canada) { ActiveRecord::Migrator.get_all_versions }.should include(14)
97
+ Octopus.using(:brazil) { ActiveRecord::Migrator.get_all_versions }.should include(14)
98
+ Octopus.using(:russia) { ActiveRecord::Migrator.get_all_versions }.should include(14)
99
+ end
100
+ end
101
+ end
@@ -1,9 +1,9 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
1
+ require "spec_helper"
2
2
 
3
3
  describe Octopus::Model do
4
4
  describe "#using method" do
5
5
  it "should return self after calling the #using method" do
6
- User.using(:canada).should == Octopus::ScopeProxy.new(:canada, User)
6
+ User.using(:canada).should be_a(Octopus::ScopeProxy)
7
7
  end
8
8
 
9
9
  it "should allow to send a block to the master shard" do
@@ -53,6 +53,21 @@ describe Octopus::Model do
53
53
  User.all.should == [u1]
54
54
  end
55
55
 
56
+ describe "multiple calls to the same scope" do
57
+ it "works with nil response" do
58
+ scope = User.using(:canada)
59
+ scope.count.should == 0
60
+ scope.first.should be_nil
61
+ end
62
+
63
+ it "works with non-nil response" do
64
+ user = User.using(:canada).create!(:name => 'oi')
65
+ scope = User.using(:canada)
66
+ scope.count.should == 1
67
+ scope.first.should == user
68
+ end
69
+ end
70
+
56
71
  it "should select the correct shard" do
57
72
  User.using(:canada)
58
73
  User.create!(:name => 'oi')
@@ -85,8 +100,8 @@ describe Octopus::Model do
85
100
  end
86
101
 
87
102
  it "should clean #current_shard from proxy when using execute" do
88
- ActiveRecord::Base.using(:canada).connection().execute("select * from users limit 1;")
89
- ActiveRecord::Base.connection.current_shard.should == :master
103
+ User.using(:canada).connection().execute("select * from users limit 1;")
104
+ User.connection.current_shard.should == :master
90
105
  end
91
106
 
92
107
  it "should allow scoping dynamically" do
@@ -118,6 +133,17 @@ describe Octopus::Model do
118
133
  User.count.should == 0
119
134
  end
120
135
 
136
+ it "should work with named scopes" do
137
+ u = User.using(:brazil).create!(:name => "Thiago")
138
+
139
+ User.thiago.using(:brazil).first.should eq(u)
140
+ User.using(:brazil).thiago.first.should eq(u)
141
+
142
+ Octopus.using(:brazil) do
143
+ User.thiago.first.should eq(u)
144
+ end
145
+ end
146
+
121
147
  describe "#current_shard attribute" do
122
148
  it "should store the attribute when you create or find an object" do
123
149
  u = User.using(:alone_shard).create!(:name => "Alone")
@@ -183,13 +209,54 @@ describe Octopus::Model do
183
209
  lambda { User.using(:crazy_shard).create!(:name => 'Thiago') }.should raise_error("Nonexistent Shard Name: crazy_shard")
184
210
  end
185
211
  end
212
+
213
+ describe "equality" do
214
+ let(:canada1) do
215
+ u = User.new
216
+ u.id = 1
217
+ u.current_shard = :canada
218
+ u
219
+ end
220
+
221
+ let(:canada1_dup) do
222
+ u = User.new
223
+ u.id = 1
224
+ u.current_shard = :canada
225
+ u
226
+ end
227
+
228
+ let(:brazil1) do
229
+ u = User.new
230
+ u.id = 1
231
+ u.current_shard = :brazil
232
+ u
233
+ end
234
+
235
+ it "should work with persisted objects" do
236
+ u = User.using(:brazil).create(:name => "Mike")
237
+ User.using(:brazil).find_by_name("Mike").should == u
238
+ end
239
+
240
+ if Octopus.rails31? || Octopus.rails32?
241
+ # Rails <= 3.0 doesn't support equality checks on non-persisted objects
242
+ it "should check current_shard when determining equality" do
243
+ canada1.should_not == brazil1
244
+ canada1.should == canada1_dup
245
+ end
246
+
247
+ it "delegates equality check on scopes" do
248
+ u = User.using(:brazil).create!(:name => "Mike")
249
+ User.using(:brazil).where(:name => "Mike").should == [u]
250
+ end
251
+ end
252
+ end
186
253
  end
187
254
 
188
255
  describe "using a postgresql shard" do
189
256
  it "should update the Arel Engine" do
190
257
  if ActiveRecord::VERSION::STRING > '2.4.0'
191
258
  User.using(:postgresql_shard).arel_engine.connection.adapter_name.should == "PostgreSQL"
192
- User.using(:alone_shard).arel_engine.connection.adapter_name.should == "Mysql2"
259
+ User.using(:alone_shard).arel_engine.connection.adapter_name.should == "MySQL"
193
260
  end
194
261
  end
195
262
 
@@ -202,8 +269,13 @@ describe Octopus::Model do
202
269
  end
203
270
 
204
271
  describe "AR basic methods" do
205
- it "octopus_establish_connection" do
206
- CustomConnection.connection.current_database.should == "octopus_shard2"
272
+ it "establish_connection" do
273
+ CustomConnection.connection.current_database.should == "octopus_shard_2"
274
+ end
275
+
276
+ it "should not mess with custom connection table names" do
277
+ Advert.connection.current_database.should == "octopus_shard_1"
278
+ Advert.create!(:name => "Teste")
207
279
  end
208
280
 
209
281
  it "increment" do
@@ -221,6 +293,21 @@ describe Octopus::Model do
221
293
  u = User.using(:brazil).find_by_number(11).should_not be_nil
222
294
  end
223
295
 
296
+ it "decrement" do
297
+ u = User.using(:brazil).create!(:name => "Teste", :number => 10)
298
+ u = User.using(:brazil).find_by_number(10)
299
+ u.decrement(:number)
300
+ u.save()
301
+ u = User.using(:brazil).find_by_number(9).should_not be_nil
302
+ end
303
+
304
+ it "decrement!" do
305
+ u = User.using(:brazil).create!(:name => "Teste", :number => 10)
306
+ u = User.using(:brazil).find_by_number(10)
307
+ u.decrement!(:number)
308
+ u = User.using(:brazil).find_by_number(9).should_not be_nil
309
+ end
310
+
224
311
  it "toggle" do
225
312
  u = User.using(:brazil).create!(:name => "Teste", :admin => false)
226
313
  u = User.using(:brazil).find_by_name('Teste')
@@ -243,6 +330,73 @@ describe Octopus::Model do
243
330
  User.using(:brazil).find(:all, :conditions => {:name => "User2"}).count.should == 1
244
331
  end
245
332
 
333
+ it "maximum" do
334
+ u1 = User.using(:brazil).create!(:name => "Teste", :number => 11)
335
+ u2 = User.using(:master).create!(:name => "Teste", :number => 12)
336
+
337
+ User.using(:brazil).maximum(:number).should == 11
338
+ User.using(:master).maximum(:number).should == 12
339
+ end
340
+
341
+ if Octopus.rails3?
342
+ describe "any?" do
343
+ before { User.using(:brazil).create!(:name => "User1") }
344
+
345
+ it "works when true" do
346
+ scope = User.using(:brazil).where(:name => "User1")
347
+ scope.any?.should be_true
348
+ end
349
+
350
+ it "works when false" do
351
+ scope = User.using(:brazil).where(:name => "User2")
352
+ scope.any?.should be_false
353
+ end
354
+ end
355
+
356
+ it "exists?" do
357
+ @user = User.using(:brazil).create!(:name => "User1")
358
+
359
+ User.using(:brazil).where(:name => "User1").exists?.should be_true
360
+ User.using(:brazil).where(:name => "User2").exists?.should be_false
361
+ end
362
+
363
+ describe "touch" do
364
+ it "updates updated_at by default" do
365
+ @user = User.using(:brazil).create!(:name => "User1")
366
+ User.using(:brazil).update_all({:updated_at => Time.now - 3.months}, {:id => @user.id})
367
+ @user.touch
368
+ @user.reload.updated_at.to_date.should eq(Date.today)
369
+ end
370
+
371
+ it "updates passed in attribute name" do
372
+ @user = User.using(:brazil).create!(:name => "User1")
373
+ User.using(:brazil).update_all({:created_at => Time.now - 3.months}, {:id => @user.id})
374
+ @user.touch(:created_at)
375
+ @user.reload.created_at.to_date.should eq(Date.today)
376
+ end
377
+ end
378
+
379
+ end
380
+
381
+ if Octopus.rails32?
382
+ describe "#pluck" do
383
+ before { User.using(:brazil).create!(:name => "User1") }
384
+
385
+ it "should works from scope proxy" do
386
+ names = User.using(:brazil).pluck(:name)
387
+ names.should eq(["User1"])
388
+ User.using(:master).pluck(:name).should eq([])
389
+ end
390
+ end
391
+
392
+ it "update_column" do
393
+ @user = User.using(:brazil).create!(:name => "User1")
394
+ @user2 = User.using(:brazil).find(@user.id)
395
+ @user2.update_column(:name, "Joaquim Shard Brazil")
396
+ User.using(:brazil).find_by_name("Joaquim Shard Brazil").should_not be_nil
397
+ end
398
+ end
399
+
246
400
  it "update_attributes" do
247
401
  @user = User.using(:brazil).create!(:name => "User1")
248
402
  @user2 = User.using(:brazil).find(@user.id)
@@ -325,13 +479,25 @@ describe Octopus::Model do
325
479
  it 'should work correctly' do
326
480
  Bacon.using(:brazil).create!(:name => "YUMMMYYYY")
327
481
  end
482
+
483
+ it 'should work correctly with a block' do
484
+ Cheese.using(:brazil).create!(:name => "YUMMMYYYY")
485
+ end
486
+ end
487
+
488
+ if Octopus.rails32?
489
+ describe "when using table_name=" do
490
+ it 'should work correctly' do
491
+ Ham.using(:brazil).create!(:name => "YUMMMYYYY")
492
+ end
493
+ end
328
494
  end
329
495
 
330
496
  describe "when using a environment with a single adapter" do
331
497
  it 'should not clean the table name' do
332
- using_environment :production_fully_replicated do
498
+ OctopusHelper.using_environment :production_fully_replicated do
333
499
  Keyboard.should_not_receive(:reset_table_name)
334
- Keyboard.using(:master).create!("Master Cat")
500
+ Keyboard.using(:master).create!(:name => "Master Cat")
335
501
  end
336
502
  end
337
503
  end
@@ -407,15 +573,15 @@ describe Octopus::Model do
407
573
 
408
574
  describe "#replicated_model method" do
409
575
  it "should be replicated" do
410
- using_environment :production_replicated do
576
+ OctopusHelper.using_environment :production_replicated do
411
577
  ActiveRecord::Base.connection_proxy.instance_variable_get(:@replicated).should be_true
412
578
  end
413
579
  end
414
580
 
415
581
  it "should mark the Cat model as replicated" do
416
- using_environment :production_replicated do
417
- User.read_inheritable_attribute(:replicated).should be_false
418
- Cat.read_inheritable_attribute(:replicated).should be_true
582
+ OctopusHelper.using_environment :production_replicated do
583
+ User.replicated.should be_false
584
+ Cat.replicated.should be_true
419
585
  end
420
586
  end
421
587
  end