ar-octopus 0.8.2 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +9 -9
  2. data/.rspec +1 -1
  3. data/.rubocop.yml +46 -0
  4. data/.rubocop_todo.yml +52 -0
  5. data/.ruby-version +1 -1
  6. data/.travis.yml +3 -9
  7. data/Appraisals +4 -0
  8. data/Rakefile +17 -16
  9. data/ar-octopus.gemspec +22 -16
  10. data/gemfiles/rails41.gemfile +7 -0
  11. data/init.rb +1 -1
  12. data/lib/ar-octopus.rb +1 -1
  13. data/lib/octopus.rb +38 -37
  14. data/lib/octopus/abstract_adapter.rb +0 -2
  15. data/lib/octopus/association.rb +8 -6
  16. data/lib/octopus/association_shard_tracking.rb +80 -81
  17. data/lib/octopus/collection_association.rb +7 -5
  18. data/lib/octopus/collection_proxy.rb +11 -9
  19. data/lib/octopus/has_and_belongs_to_many_association.rb +5 -3
  20. data/lib/octopus/load_balancing.rb +3 -2
  21. data/lib/octopus/load_balancing/round_robin.rb +12 -8
  22. data/lib/octopus/migration.rb +117 -108
  23. data/lib/octopus/model.rb +130 -134
  24. data/lib/octopus/persistence.rb +1 -1
  25. data/lib/octopus/proxy.rb +345 -339
  26. data/lib/octopus/railtie.rb +2 -2
  27. data/lib/octopus/relation_proxy.rb +6 -1
  28. data/lib/octopus/scope_proxy.rb +38 -36
  29. data/lib/octopus/shard_tracking.rb +36 -35
  30. data/lib/octopus/shard_tracking/attribute.rb +12 -14
  31. data/lib/octopus/shard_tracking/dynamic.rb +7 -3
  32. data/lib/octopus/singular_association.rb +5 -3
  33. data/lib/octopus/slave_group.rb +10 -8
  34. data/lib/octopus/version.rb +1 -1
  35. data/rails/init.rb +1 -1
  36. data/sample_app/autotest/discover.rb +2 -2
  37. data/sample_app/config/application.rb +1 -1
  38. data/sample_app/config/boot.rb +1 -1
  39. data/sample_app/config/environments/test.rb +1 -1
  40. data/sample_app/config/initializers/session_store.rb +1 -1
  41. data/sample_app/config/initializers/wrap_parameters.rb +1 -1
  42. data/sample_app/config/routes.rb +1 -1
  43. data/sample_app/db/migrate/20100720210335_create_sample_users.rb +2 -2
  44. data/sample_app/db/schema.rb +10 -10
  45. data/sample_app/db/seeds.rb +3 -3
  46. data/sample_app/features/step_definitions/seeds_steps.rb +4 -4
  47. data/sample_app/features/step_definitions/web_steps.rb +3 -4
  48. data/sample_app/features/support/env.rb +3 -4
  49. data/sample_app/features/support/paths.rb +4 -4
  50. data/sample_app/spec/spec_helper.rb +3 -3
  51. data/spec/migrations/10_create_users_using_replication.rb +3 -3
  52. data/spec/migrations/11_add_field_in_all_slaves.rb +3 -3
  53. data/spec/migrations/12_create_users_using_block.rb +7 -7
  54. data/spec/migrations/13_create_users_using_block_and_using.rb +4 -4
  55. data/spec/migrations/14_create_users_on_shards_of_a_group_with_versions.rb +2 -2
  56. data/spec/migrations/15_create_user_on_shards_of_default_group_with_versions.rb +2 -2
  57. data/spec/migrations/1_create_users_on_master.rb +3 -3
  58. data/spec/migrations/2_create_users_on_canada.rb +3 -3
  59. data/spec/migrations/3_create_users_on_both_shards.rb +3 -3
  60. data/spec/migrations/4_create_users_on_shards_of_a_group.rb +3 -3
  61. data/spec/migrations/5_create_users_on_multiples_groups.rb +2 -2
  62. data/spec/migrations/6_raise_exception_with_invalid_shard_name.rb +3 -3
  63. data/spec/migrations/7_raise_exception_with_invalid_multiple_shard_names.rb +3 -3
  64. data/spec/migrations/8_raise_exception_with_invalid_group_name.rb +3 -3
  65. data/spec/migrations/9_raise_exception_with_multiple_invalid_group_names.rb +4 -4
  66. data/spec/octopus/association_shard_tracking_spec.rb +413 -417
  67. data/spec/octopus/collection_proxy_spec.rb +6 -5
  68. data/spec/octopus/log_subscriber_spec.rb +4 -4
  69. data/spec/octopus/migration_spec.rb +48 -48
  70. data/spec/octopus/model_spec.rb +267 -292
  71. data/spec/octopus/octopus_spec.rb +40 -41
  72. data/spec/octopus/proxy_spec.rb +124 -124
  73. data/spec/octopus/relation_proxy_spec.rb +32 -32
  74. data/spec/octopus/replicated_slave_grouped_spec.rb +23 -23
  75. data/spec/octopus/replication_spec.rb +61 -66
  76. data/spec/octopus/scope_proxy_spec.rb +56 -10
  77. data/spec/octopus/sharded_replicated_slave_grouped_spec.rb +29 -29
  78. data/spec/octopus/sharded_spec.rb +10 -10
  79. data/spec/spec_helper.rb +6 -6
  80. data/spec/support/active_record/connection_adapters/modify_config_adapter.rb +1 -3
  81. data/spec/support/database_connection.rb +2 -2
  82. data/spec/support/database_models.rb +16 -17
  83. data/spec/support/octopus_helper.rb +19 -21
  84. data/spec/support/query_count.rb +1 -3
  85. data/spec/support/shared_contexts.rb +3 -3
  86. data/spec/tasks/octopus.rake_spec.rb +10 -10
  87. metadata +43 -26
@@ -1,54 +1,54 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
- describe "when the database is both sharded and replicated" do
3
+ describe 'when the database is both sharded and replicated' do
4
4
 
5
- it "should pick the shard based on current_shard when you have a sharded model" do
5
+ it 'should pick the shard based on current_shard when you have a sharded model' do
6
6
 
7
7
  OctopusHelper.using_environment :sharded_replicated_slave_grouped do
8
8
  Octopus.using(:russia) do
9
- Cat.create!(:name => "Thiago1")
10
- Cat.create!(:name => "Thiago2")
9
+ Cat.create!(:name => 'Thiago1')
10
+ Cat.create!(:name => 'Thiago2')
11
11
  end
12
12
 
13
13
  # We must stub here to make it effective (not in the `before(:each)` block)
14
- Octopus.stub(:env).and_return("sharded_replicated_slave_grouped")
14
+ allow(Octopus).to receive(:env).and_return('sharded_replicated_slave_grouped')
15
15
 
16
- Cat.using(:russia).count.should == 2
16
+ expect(Cat.using(:russia).count).to eq(2)
17
17
  # It distributes queries between two slaves in the slave group
18
- Cat.using(shard: :russia, slave_group: :slaves1).count.should == 0
19
- Cat.using(shard: :russia, slave_group: :slaves1).count.should == 2
20
- Cat.using(shard: :russia, slave_group: :slaves1).count.should == 0
18
+ expect(Cat.using(:shard => :russia, :slave_group => :slaves1).count).to eq(0)
19
+ expect(Cat.using(:shard => :russia, :slave_group => :slaves1).count).to eq(2)
20
+ expect(Cat.using(:shard => :russia, :slave_group => :slaves1).count).to eq(0)
21
21
  # It distributes queries between two slaves in the slave group
22
- Cat.using(shard: :russia, slave_group: :slaves2).count.should == 2
23
- Cat.using(shard: :russia, slave_group: :slaves2).count.should == 0
24
- Cat.using(shard: :russia, slave_group: :slaves2).count.should == 2
25
-
26
- Cat.using(:europe).count.should == 0
27
- Cat.using(shard: :europe, slave_group: :slaves1)
28
- .count.should == 0
29
- Cat.using(shard: :europe, slave_group: :slaves2)
30
- .count.should == 2
22
+ expect(Cat.using(:shard => :russia, :slave_group => :slaves2).count).to eq(2)
23
+ expect(Cat.using(:shard => :russia, :slave_group => :slaves2).count).to eq(0)
24
+ expect(Cat.using(:shard => :russia, :slave_group => :slaves2).count).to eq(2)
25
+
26
+ expect(Cat.using(:europe).count).to eq(0)
27
+ expect(Cat.using(:shard => :europe, :slave_group => :slaves1)
28
+ .count).to eq(0)
29
+ expect(Cat.using(:shard => :europe, :slave_group => :slaves2)
30
+ .count).to eq(2)
31
31
  end
32
32
  end
33
33
 
34
- it "should make queries to master when slave groups are configured for the shard but not selected" do
34
+ it 'should make queries to master when slave groups are configured for the shard but not selected' do
35
35
  OctopusHelper.using_environment :sharded_replicated_slave_grouped do
36
36
  Octopus.using(:europe) do
37
37
  # All the queries go to :master(`octopus_shard_1`)
38
38
 
39
- Cat.create!(:name => "Thiago1")
40
- Cat.create!(:name => "Thiago2")
39
+ Cat.create!(:name => 'Thiago1')
40
+ Cat.create!(:name => 'Thiago2')
41
41
 
42
42
  # In `database.yml` and `shards.yml`, we have configured 1 master and 6 slaves for `sharded_replicated_slave_grouped`
43
43
  # So we can ensure Octopus is not distributing queries between them
44
44
  # by asserting 1 + 6 = 7 queries go to :master(`octopus_shard_1`)
45
- Cat.count.should == 2
46
- Cat.count.should == 2
47
- Cat.count.should == 2
48
- Cat.count.should == 2
49
- Cat.count.should == 2
50
- Cat.count.should == 2
51
- Cat.count.should == 2
45
+ expect(Cat.count).to eq(2)
46
+ expect(Cat.count).to eq(2)
47
+ expect(Cat.count).to eq(2)
48
+ expect(Cat.count).to eq(2)
49
+ expect(Cat.count).to eq(2)
50
+ expect(Cat.count).to eq(2)
51
+ expect(Cat.count).to eq(2)
52
52
  end
53
53
  end
54
54
  end
@@ -1,13 +1,13 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
- describe "when the database is not entire sharded" do
3
+ describe 'when the database is not entire sharded' do
4
4
  before(:each) do
5
- Octopus.stub(:env).and_return("not_entire_sharded")
6
- OctopusHelper.clean_connection_proxy()
5
+ allow(Octopus).to receive(:env).and_return('not_entire_sharded')
6
+ OctopusHelper.clean_connection_proxy
7
7
  end
8
8
 
9
- it "should not send all queries to the specified slave" do
10
- pending()
9
+ it 'should not send all queries to the specified slave' do
10
+ skip
11
11
  # User.create!(:name => "Thiago")
12
12
  #
13
13
  # using_environment :not_entire_sharded do
@@ -19,15 +19,15 @@ describe "when the database is not entire sharded" do
19
19
  # User.count.should == 2
20
20
  end
21
21
 
22
- it "should pick the shard based on current_shard when you have a sharded model" do
23
- Cat.create!(:name => "Thiago")
22
+ it 'should pick the shard based on current_shard when you have a sharded model' do
23
+ Cat.create!(:name => 'Thiago')
24
24
 
25
25
  OctopusHelper.using_environment :not_entire_sharded do
26
26
  Octopus.using(:russia) do
27
- Cat.create!(:name => "Thiago")
27
+ Cat.create!(:name => 'Thiago')
28
28
  end
29
29
  end
30
30
 
31
- Cat.count.should == 1
31
+ expect(Cat.count).to eq(1)
32
32
  end
33
33
  end
data/spec/spec_helper.rb CHANGED
@@ -1,16 +1,16 @@
1
- require "rubygems"
2
- require "pry"
3
- require "bundler/setup"
4
- require "octopus"
1
+ require 'rubygems'
2
+ require 'pry'
3
+ require 'bundler/setup'
4
+ require 'octopus'
5
5
 
6
6
  Octopus.instance_variable_set(:@directory, File.dirname(__FILE__))
7
7
 
8
8
  # Requires supporting files with custom matchers and macros, etc,
9
9
  # in ./support/ and its subdirectories.
10
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
11
11
 
12
12
  RSpec.configure do |config|
13
- config.before(:each) do
13
+ config.before(:each) do |example|
14
14
  OctopusHelper.clean_all_shards(example.metadata[:shards])
15
15
  end
16
16
  end
@@ -4,14 +4,12 @@ module ActiveRecord
4
4
  ConnectionAdapters::ModifyConfigAdapter.new(config)
5
5
  end
6
6
  end
7
-
7
+
8
8
  module ConnectionAdapters
9
9
  class ModifyConfigAdapter < AbstractAdapter
10
-
11
10
  def initialize(config)
12
11
  config.replace(config.symbolize_keys)
13
12
  end
14
-
15
13
  end
16
14
  end
17
15
  end
@@ -1,4 +1,4 @@
1
- require "logger"
1
+ require 'logger'
2
2
 
3
- ActiveRecord::Base.establish_connection(:adapter => "mysql2", :database => "octopus_shard_1", :username => "root", :password => "")
3
+ ActiveRecord::Base.establish_connection(:adapter => 'mysql2', :database => 'octopus_shard_1', :username => 'root', :password => '')
4
4
  ActiveRecord::Base.logger = Logger.new(File.open('database.log', 'a'))
@@ -1,36 +1,36 @@
1
1
  # Rails 3.1 needs to do some introspection around the base class, which requires
2
2
  # the model be a descendent of ActiveRecord::Base.
3
- class BlankModel < ActiveRecord::Base; end;
3
+ class BlankModel < ActiveRecord::Base; end
4
4
 
5
- #The user class is just sharded, not replicated
5
+ # The user class is just sharded, not replicated
6
6
  class User < ActiveRecord::Base
7
- scope :thiago, lambda { where(:name => 'Thiago') }
7
+ scope :thiago, -> { where(:name => 'Thiago') }
8
8
 
9
9
  def awesome_queries
10
10
  Octopus.using(:canada) do
11
- User.create(:name => "teste")
11
+ User.create(:name => 'teste')
12
12
  end
13
13
  end
14
14
  end
15
15
 
16
- #The client class isn't replicated
16
+ # The client class isn't replicated
17
17
  class Client < ActiveRecord::Base
18
18
  has_many :items
19
19
  has_many :comments, :as => :commentable
20
20
  end
21
21
 
22
- #This class is replicated
22
+ # This class is replicated
23
23
  class Cat < ActiveRecord::Base
24
- replicated_model()
25
- #sharded_model()
24
+ replicated_model
25
+ # sharded_model()
26
26
  end
27
27
 
28
- #This class sets its own connection
28
+ # This class sets its own connection
29
29
  class CustomConnection < ActiveRecord::Base
30
- octopus_establish_connection(:adapter => "mysql2", :database => "octopus_shard_2", :username => "root", :password => "")
30
+ octopus_establish_connection(:adapter => 'mysql2', :database => 'octopus_shard_2', :username => 'root', :password => '')
31
31
  end
32
32
 
33
- #This items belongs to a client
33
+ # This items belongs to a client
34
34
  class Item < ActiveRecord::Base
35
35
  belongs_to :client
36
36
  has_many :parts
@@ -77,22 +77,21 @@ class Comment < ActiveRecord::Base
77
77
  belongs_to :commentable, :polymorphic => true
78
78
  end
79
79
 
80
-
81
80
  class Bacon < ActiveRecord::Base
82
81
  self.table_name = 'yummy'
83
82
  end
84
83
 
85
84
  class Cheese < ActiveRecord::Base
86
- self.table_name = 'yummy'
85
+ self.table_name = 'yummy'
87
86
  end
88
87
 
89
88
  class Ham < ActiveRecord::Base
90
89
  self.table_name = 'yummy'
91
90
  end
92
91
 
93
- #This class sets its own connection
92
+ # This class sets its own connection
94
93
  class Advert < ActiveRecord::Base
95
- establish_connection(:adapter => "postgresql", :database => "octopus_shard_1", :username => ENV["POSTGRES_USER"] || "postgres", :password => "")
94
+ establish_connection(:adapter => 'postgresql', :database => 'octopus_shard_1', :username => ENV['POSTGRES_USER'] || 'postgres', :password => '')
96
95
  end
97
96
 
98
97
  class MmorpgPlayer < ActiveRecord::Base
@@ -102,9 +101,9 @@ end
102
101
 
103
102
  class Weapon < ActiveRecord::Base
104
103
  belongs_to :mmorpg_player, :inverse_of => :weapons
105
- validates :hand, :uniqueness => { :scope => :mmorpg_player_id }
104
+ validates :hand, :uniqueness => { :scope => :mmorpg_player_id }
106
105
  validates_presence_of :mmorpg_player
107
- has_many :skills
106
+ has_many :skills
108
107
  end
109
108
 
110
109
  class Skill < ActiveRecord::Base
@@ -5,30 +5,30 @@ module OctopusHelper
5
5
  end
6
6
 
7
7
  shards.each do |shard_symbol|
8
- ['schema_migrations', 'users', 'clients', 'cats', 'items', 'keyboards', 'computers', 'permissions_roles', 'roles', 'permissions', 'assignments', 'projects', 'programmers', "yummy", 'adverts'].each do |tables|
8
+ %w(schema_migrations users clients cats items keyboards computers permissions_roles roles permissions assignments projects programmers yummy adverts).each do |tables|
9
9
  BlankModel.using(shard_symbol).connection.execute("DELETE FROM #{tables}")
10
10
  end
11
11
 
12
12
  if shard_symbol == 'alone_shard'
13
- ['mmorpg_players', 'weapons', 'skills'].each do |table|
13
+ %w(mmorpg_players weapons skills).each do |table|
14
14
  BlankModel.using(shard_symbol).connection.execute("DELETE FROM #{table}")
15
15
  end
16
16
  end
17
17
  end
18
18
  end
19
19
 
20
- def self.clean_connection_proxy()
21
- Thread.current["octopus.current_model"] = nil
22
- Thread.current["octopus.current_shard"] = nil
23
- Thread.current["octopus.current_group"] = nil
24
- Thread.current["octopus.current_slave_group"] = nil
25
- Thread.current["octopus.block"] = nil
26
- Thread.current["octopus.last_current_shard"] = nil
20
+ def self.clean_connection_proxy
21
+ Thread.current['octopus.current_model'] = nil
22
+ Thread.current['octopus.current_shard'] = nil
23
+ Thread.current['octopus.current_group'] = nil
24
+ Thread.current['octopus.current_slave_group'] = nil
25
+ Thread.current['octopus.block'] = nil
26
+ Thread.current['octopus.last_current_shard'] = nil
27
27
 
28
- ActiveRecord::Base.send(:class_variable_set, '@@connection_proxy', nil)
28
+ ActiveRecord::Base.class_variable_set(:@@connection_proxy, nil)
29
29
  end
30
30
 
31
- def self.migrating_to_version(version, &block)
31
+ def self.migrating_to_version(version, &_block)
32
32
  migrations_root = File.expand_path(File.join(File.dirname(__FILE__), '..', 'migrations'))
33
33
 
34
34
  begin
@@ -39,18 +39,16 @@ module OctopusHelper
39
39
  end
40
40
  end
41
41
 
42
- def self.using_environment(environment, &block)
43
- begin
44
- set_octopus_env(environment.to_s)
45
- clean_connection_proxy()
46
- yield
47
- ensure
48
- set_octopus_env('octopus')
49
- clean_connection_proxy()
50
- end
42
+ def self.using_environment(environment, &_block)
43
+ self.octopus_env = environment.to_s
44
+ clean_connection_proxy
45
+ yield
46
+ ensure
47
+ self.octopus_env = 'octopus'
48
+ clean_connection_proxy
51
49
  end
52
50
 
53
- def self.set_octopus_env(env)
51
+ def self.octopus_env=(env)
54
52
  Octopus.instance_variable_set(:@config, nil)
55
53
  Octopus.stub(:env).and_return(env)
56
54
  end
@@ -1,6 +1,5 @@
1
1
  module ActiveRecord
2
2
  class QueryCounter
3
-
4
3
  attr_accessor :query_count
5
4
 
6
5
  def initialize
@@ -11,9 +10,8 @@ module ActiveRecord
11
10
  lambda(&method(:callback))
12
11
  end
13
12
 
14
- def callback(name, start, finish, message_id, values)
13
+ def callback(_name, _start, _finish, _message_id, values)
15
14
  @query_count += 1 unless %w(CACHE SCHEMA).include?(values[:name])
16
15
  end
17
-
18
16
  end
19
17
  end
@@ -1,4 +1,4 @@
1
- shared_context "with query cache enabled" do
1
+ shared_context 'with query cache enabled' do
2
2
  let!(:counter) { ActiveRecord::QueryCounter.new }
3
3
 
4
4
  before(:each) do
@@ -6,12 +6,12 @@ shared_context "with query cache enabled" do
6
6
  counter.query_count = 0
7
7
  end
8
8
 
9
- after(:each) do
9
+ after(:each) do
10
10
  ActiveRecord::Base.connection.disable_query_cache!
11
11
  end
12
12
 
13
13
  around(:each) do |example|
14
- active_support_subscribed(counter.to_proc, 'sql.active_record') do
14
+ active_support_subscribed(counter.to_proc, 'sql.active_record') do
15
15
  example.run
16
16
  end
17
17
  end
@@ -1,31 +1,31 @@
1
- require "spec_helper"
2
- require "rake"
1
+ require 'spec_helper'
2
+ require 'rake'
3
3
 
4
- describe "octopus.rake" do
4
+ describe 'octopus.rake' do
5
5
  before do
6
- load File.expand_path("../../../lib/tasks/octopus.rake", __FILE__)
6
+ load File.expand_path('../../../lib/tasks/octopus.rake', __FILE__)
7
7
  Rake::Task.define_task(:environment)
8
8
  end
9
9
 
10
- describe "octopus:copy_schema_versions" do
10
+ describe 'octopus:copy_schema_versions' do
11
11
  class SchemaMigration < ActiveRecord::Base; end
12
12
 
13
13
  before do
14
- Rake::Task["octopus:copy_schema_versions"].reenable
14
+ Rake::Task['octopus:copy_schema_versions'].reenable
15
15
 
16
- path = File.expand_path("../../migrations", __FILE__)
16
+ path = File.expand_path('../../migrations', __FILE__)
17
17
  ActiveRecord::Migrator.migrations_paths = [path]
18
18
  end
19
19
 
20
- it "assumes each shard migrated to the current master version" do
20
+ it 'assumes each shard migrated to the current master version' do
21
21
  SchemaMigration.create(:version => 1)
22
22
  SchemaMigration.create(:version => 2)
23
23
  SchemaMigration.create(:version => 3)
24
24
 
25
- Rake::Task["octopus:copy_schema_versions"].invoke
25
+ Rake::Task['octopus:copy_schema_versions'].invoke
26
26
 
27
27
  ActiveRecord::Base.connection.shard_names.each do |shard_name|
28
- Octopus.using(shard_name) { ActiveRecord::Migrator.get_all_versions }.should == [1, 2, 3]
28
+ expect(Octopus.using(shard_name) { ActiveRecord::Migrator.get_all_versions }).to eq([1, 2, 3])
29
29
  end
30
30
  end
31
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ar-octopus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thiago Pradi
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-07-03 00:00:00.000000000 Z
13
+ date: 2014-08-06 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -41,77 +41,77 @@ dependencies:
41
41
  - !ruby/object:Gem::Version
42
42
  version: 3.2.0
43
43
  - !ruby/object:Gem::Dependency
44
- name: rake
44
+ name: appraisal
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ! '>='
48
48
  - !ruby/object:Gem::Version
49
- version: 0.8.7
49
+ version: 0.3.8
50
50
  type: :development
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - ! '>='
55
55
  - !ruby/object:Gem::Version
56
- version: 0.8.7
56
+ version: 0.3.8
57
57
  - !ruby/object:Gem::Dependency
58
- name: rspec
58
+ name: mysql2
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - ! '>='
61
+ - - ! '>'
62
62
  - !ruby/object:Gem::Version
63
- version: 2.0.0
63
+ version: '0.3'
64
64
  type: :development
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - ! '>='
68
+ - - ! '>'
69
69
  - !ruby/object:Gem::Version
70
- version: 2.0.0
70
+ version: '0.3'
71
71
  - !ruby/object:Gem::Dependency
72
- name: mysql2
72
+ name: pg
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - ! '>'
75
+ - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
- version: '0.3'
77
+ version: 0.11.0
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - ! '>'
82
+ - - ! '>='
83
83
  - !ruby/object:Gem::Version
84
- version: '0.3'
84
+ version: 0.11.0
85
85
  - !ruby/object:Gem::Dependency
86
- name: pg
86
+ name: rake
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - ! '>='
90
90
  - !ruby/object:Gem::Version
91
- version: 0.11.0
91
+ version: 0.8.7
92
92
  type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - ! '>='
97
97
  - !ruby/object:Gem::Version
98
- version: 0.11.0
98
+ version: 0.8.7
99
99
  - !ruby/object:Gem::Dependency
100
- name: sqlite3
100
+ name: rspec
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - ! '>='
104
104
  - !ruby/object:Gem::Version
105
- version: 1.3.4
105
+ version: '3'
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - ! '>='
111
111
  - !ruby/object:Gem::Version
112
- version: 1.3.4
112
+ version: '3'
113
113
  - !ruby/object:Gem::Dependency
114
- name: pry-debugger
114
+ name: rubocop
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ! '>='
@@ -125,19 +125,33 @@ dependencies:
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0'
127
127
  - !ruby/object:Gem::Dependency
128
- name: appraisal
128
+ name: sqlite3
129
129
  requirement: !ruby/object:Gem::Requirement
130
130
  requirements:
131
131
  - - ! '>='
132
132
  - !ruby/object:Gem::Version
133
- version: 0.3.8
133
+ version: 1.3.4
134
134
  type: :development
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
137
137
  requirements:
138
138
  - - ! '>='
139
139
  - !ruby/object:Gem::Version
140
- version: 0.3.8
140
+ version: 1.3.4
141
+ - !ruby/object:Gem::Dependency
142
+ name: pry-debugger
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ! '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ! '>='
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
141
155
  description: This gem allows you to use sharded databases with ActiveRecord. This
142
156
  also provides a interface for replication and for running migrations with multiples
143
157
  shards.
@@ -151,6 +165,8 @@ extra_rdoc_files: []
151
165
  files:
152
166
  - .gitignore
153
167
  - .rspec
168
+ - .rubocop.yml
169
+ - .rubocop_todo.yml
154
170
  - .ruby-version
155
171
  - .travis.yml
156
172
  - Appraisals
@@ -161,6 +177,7 @@ files:
161
177
  - ar-octopus.gemspec
162
178
  - gemfiles/rails32.gemfile
163
179
  - gemfiles/rails4.gemfile
180
+ - gemfiles/rails41.gemfile
164
181
  - init.rb
165
182
  - lib/ar-octopus.rb
166
183
  - lib/octopus.rb
@@ -327,7 +344,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
327
344
  version: '0'
328
345
  requirements: []
329
346
  rubyforge_project:
330
- rubygems_version: 2.0.10
347
+ rubygems_version: 2.2.2
331
348
  signing_key:
332
349
  specification_version: 4
333
350
  summary: Easy Database Sharding for ActiveRecord