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.
- checksums.yaml +9 -9
- data/.rspec +1 -1
- data/.rubocop.yml +46 -0
- data/.rubocop_todo.yml +52 -0
- data/.ruby-version +1 -1
- data/.travis.yml +3 -9
- data/Appraisals +4 -0
- data/Rakefile +17 -16
- data/ar-octopus.gemspec +22 -16
- data/gemfiles/rails41.gemfile +7 -0
- data/init.rb +1 -1
- data/lib/ar-octopus.rb +1 -1
- data/lib/octopus.rb +38 -37
- data/lib/octopus/abstract_adapter.rb +0 -2
- data/lib/octopus/association.rb +8 -6
- data/lib/octopus/association_shard_tracking.rb +80 -81
- data/lib/octopus/collection_association.rb +7 -5
- data/lib/octopus/collection_proxy.rb +11 -9
- data/lib/octopus/has_and_belongs_to_many_association.rb +5 -3
- data/lib/octopus/load_balancing.rb +3 -2
- data/lib/octopus/load_balancing/round_robin.rb +12 -8
- data/lib/octopus/migration.rb +117 -108
- data/lib/octopus/model.rb +130 -134
- data/lib/octopus/persistence.rb +1 -1
- data/lib/octopus/proxy.rb +345 -339
- data/lib/octopus/railtie.rb +2 -2
- data/lib/octopus/relation_proxy.rb +6 -1
- data/lib/octopus/scope_proxy.rb +38 -36
- data/lib/octopus/shard_tracking.rb +36 -35
- data/lib/octopus/shard_tracking/attribute.rb +12 -14
- data/lib/octopus/shard_tracking/dynamic.rb +7 -3
- data/lib/octopus/singular_association.rb +5 -3
- data/lib/octopus/slave_group.rb +10 -8
- data/lib/octopus/version.rb +1 -1
- data/rails/init.rb +1 -1
- data/sample_app/autotest/discover.rb +2 -2
- data/sample_app/config/application.rb +1 -1
- data/sample_app/config/boot.rb +1 -1
- data/sample_app/config/environments/test.rb +1 -1
- data/sample_app/config/initializers/session_store.rb +1 -1
- data/sample_app/config/initializers/wrap_parameters.rb +1 -1
- data/sample_app/config/routes.rb +1 -1
- data/sample_app/db/migrate/20100720210335_create_sample_users.rb +2 -2
- data/sample_app/db/schema.rb +10 -10
- data/sample_app/db/seeds.rb +3 -3
- data/sample_app/features/step_definitions/seeds_steps.rb +4 -4
- data/sample_app/features/step_definitions/web_steps.rb +3 -4
- data/sample_app/features/support/env.rb +3 -4
- data/sample_app/features/support/paths.rb +4 -4
- data/sample_app/spec/spec_helper.rb +3 -3
- data/spec/migrations/10_create_users_using_replication.rb +3 -3
- data/spec/migrations/11_add_field_in_all_slaves.rb +3 -3
- data/spec/migrations/12_create_users_using_block.rb +7 -7
- data/spec/migrations/13_create_users_using_block_and_using.rb +4 -4
- data/spec/migrations/14_create_users_on_shards_of_a_group_with_versions.rb +2 -2
- data/spec/migrations/15_create_user_on_shards_of_default_group_with_versions.rb +2 -2
- data/spec/migrations/1_create_users_on_master.rb +3 -3
- data/spec/migrations/2_create_users_on_canada.rb +3 -3
- data/spec/migrations/3_create_users_on_both_shards.rb +3 -3
- data/spec/migrations/4_create_users_on_shards_of_a_group.rb +3 -3
- data/spec/migrations/5_create_users_on_multiples_groups.rb +2 -2
- data/spec/migrations/6_raise_exception_with_invalid_shard_name.rb +3 -3
- data/spec/migrations/7_raise_exception_with_invalid_multiple_shard_names.rb +3 -3
- data/spec/migrations/8_raise_exception_with_invalid_group_name.rb +3 -3
- data/spec/migrations/9_raise_exception_with_multiple_invalid_group_names.rb +4 -4
- data/spec/octopus/association_shard_tracking_spec.rb +413 -417
- data/spec/octopus/collection_proxy_spec.rb +6 -5
- data/spec/octopus/log_subscriber_spec.rb +4 -4
- data/spec/octopus/migration_spec.rb +48 -48
- data/spec/octopus/model_spec.rb +267 -292
- data/spec/octopus/octopus_spec.rb +40 -41
- data/spec/octopus/proxy_spec.rb +124 -124
- data/spec/octopus/relation_proxy_spec.rb +32 -32
- data/spec/octopus/replicated_slave_grouped_spec.rb +23 -23
- data/spec/octopus/replication_spec.rb +61 -66
- data/spec/octopus/scope_proxy_spec.rb +56 -10
- data/spec/octopus/sharded_replicated_slave_grouped_spec.rb +29 -29
- data/spec/octopus/sharded_spec.rb +10 -10
- data/spec/spec_helper.rb +6 -6
- data/spec/support/active_record/connection_adapters/modify_config_adapter.rb +1 -3
- data/spec/support/database_connection.rb +2 -2
- data/spec/support/database_models.rb +16 -17
- data/spec/support/octopus_helper.rb +19 -21
- data/spec/support/query_count.rb +1 -3
- data/spec/support/shared_contexts.rb +3 -3
- data/spec/tasks/octopus.rake_spec.rb +10 -10
- metadata +43 -26
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YTI3ZTg3NmY0Y2UzMTRjMzRhMGU1MTFkMjk4MWViMjcyODYwMzE0Ng==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
7
|
-
|
6
|
+
NjhiZjAwMTc2ZDZjZGQxNjZlYzBlODJiZjcwN2NlOWNkNmU1Y2E0Yg==
|
7
|
+
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YTI4YTk2ODU0NWI4ZjZiZWRmOGRlOGZjZmQ5YzQwNTZjMWY3YjI5OGRmNDA4
|
10
|
+
NTRhZDNkNGUzZDM4NWU2NTUzOTNlZTA3YjU0NTRiNmE2MDViMTQyODkwZjdm
|
11
|
+
ZTIzMWQxY2E1ZWYzZTRkMjQyNzVmZTA2ZDIxZmJlYzJkM2JmNjk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTFhZjg1ZWEwMGE0YzYyNDIzOWI5ZTU1ZTkwNTQ1OGJmYTg3Mjc0Y2I1MWY2
|
14
|
+
Y2QxNTMxZTBiMzgzNzYwOTZjYTY4MmFkYjg1ZTg2YzMxMTU0ZjkyZDRlMjk0
|
15
|
+
YzZmYzU0NjkzOGYxYTU5Yzk4ZDc4ZWRkMjhhMTY2ZjQ1OTUyOWU=
|
data/.rspec
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
--color
|
2
|
-
--format=documentation
|
2
|
+
--format=documentation
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
inherit_from: .rubocop_todo.yml
|
2
|
+
|
3
|
+
ActionFilter:
|
4
|
+
EnforcedStyle: filter
|
5
|
+
|
6
|
+
CaseIndentation:
|
7
|
+
IndentWhenRelativeTo: end
|
8
|
+
|
9
|
+
CollectionMethods:
|
10
|
+
PreferredMethods:
|
11
|
+
find: detect
|
12
|
+
|
13
|
+
EmptyLineBetweenDefs:
|
14
|
+
AllowAdjacentOneLineDefs: true
|
15
|
+
|
16
|
+
Encoding:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
EndAlignment:
|
20
|
+
AlignWith: variable
|
21
|
+
|
22
|
+
HashSyntax:
|
23
|
+
EnforcedStyle: hash_rockets
|
24
|
+
|
25
|
+
Style/IndentHash:
|
26
|
+
EnforcedStyle: consistent
|
27
|
+
|
28
|
+
Loop:
|
29
|
+
Enabled: false
|
30
|
+
|
31
|
+
PredicateName:
|
32
|
+
Enabled: false
|
33
|
+
|
34
|
+
RegexpLiteral:
|
35
|
+
Enabled: false
|
36
|
+
|
37
|
+
Semicolon:
|
38
|
+
AllowAsExpressionSeparator: true
|
39
|
+
|
40
|
+
Style/TrailingComma:
|
41
|
+
EnforcedStyleForMultiline: comma
|
42
|
+
|
43
|
+
Style/TrivialAccessors:
|
44
|
+
AllowDSLWriters: true
|
45
|
+
AllowPredicates: true
|
46
|
+
ExactNameMatch: true
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
# This configuration was generated by `rubocop --auto-gen-config`
|
2
|
+
# on 2014-07-23 21:41:36 -0700 using RuboCop version 0.24.1.
|
3
|
+
# The point is for the user to remove these configuration records
|
4
|
+
# one by one as the offenses are removed from the code base.
|
5
|
+
# Note that changes in the inspected code, or installation of new
|
6
|
+
# versions of RuboCop, may require this file to be generated again.
|
7
|
+
|
8
|
+
# Offense count: 27
|
9
|
+
Lint/AmbiguousRegexpLiteral:
|
10
|
+
Enabled: false
|
11
|
+
|
12
|
+
# Offense count: 1
|
13
|
+
Lint/HandleExceptions:
|
14
|
+
Enabled: false
|
15
|
+
|
16
|
+
# Offense count: 1
|
17
|
+
# Configuration parameters: CountComments.
|
18
|
+
Style/ClassLength:
|
19
|
+
Max: 324
|
20
|
+
|
21
|
+
# Offense count: 3
|
22
|
+
Style/CyclomaticComplexity:
|
23
|
+
Max: 14
|
24
|
+
|
25
|
+
# Offense count: 81
|
26
|
+
Style/Documentation:
|
27
|
+
Enabled: false
|
28
|
+
|
29
|
+
# Offense count: 1
|
30
|
+
# Configuration parameters: Exclude.
|
31
|
+
Style/FileName:
|
32
|
+
Enabled: false
|
33
|
+
|
34
|
+
# Offense count: 1
|
35
|
+
# Configuration parameters: MinBodyLength.
|
36
|
+
Style/GuardClause:
|
37
|
+
Enabled: false
|
38
|
+
|
39
|
+
# Offense count: 273
|
40
|
+
# Configuration parameters: AllowURI.
|
41
|
+
Style/LineLength:
|
42
|
+
Max: 180
|
43
|
+
|
44
|
+
# Offense count: 10
|
45
|
+
# Configuration parameters: CountComments.
|
46
|
+
Style/MethodLength:
|
47
|
+
Max: 52
|
48
|
+
|
49
|
+
# Offense count: 2
|
50
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
51
|
+
Style/Next:
|
52
|
+
Enabled: false
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
2.1.1
|
data/.travis.yml
CHANGED
@@ -5,19 +5,13 @@ before_script:
|
|
5
5
|
- "bundle exec rake db:prepare"
|
6
6
|
rvm:
|
7
7
|
- 1.9.3
|
8
|
-
|
8
|
+
- 2.0.0
|
9
|
+
- 2.1.1
|
9
10
|
gemfile:
|
10
11
|
- gemfiles/rails32.gemfile
|
11
12
|
- gemfiles/rails4.gemfile
|
12
|
-
|
13
|
+
- gemfiles/rails41.gemfile
|
13
14
|
notifications:
|
14
15
|
recipients:
|
15
16
|
- gabriel.sobrinho@gmail.com
|
16
17
|
- thiago.pradi@gmail.com
|
17
|
-
|
18
|
-
matrix:
|
19
|
-
include:
|
20
|
-
- rvm: 2.0.0
|
21
|
-
gemfile: gemfiles/rails32.gemfile
|
22
|
-
- rvm: 2.0.0
|
23
|
-
gemfile: gemfiles/rails4.gemfile
|
data/Appraisals
CHANGED
data/Rakefile
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
2
|
require 'rspec/core/rake_task'
|
3
|
+
require 'rubocop/rake_task'
|
3
4
|
require 'appraisal'
|
4
5
|
|
5
|
-
|
6
|
+
RSpec::Core::RakeTask.new
|
7
|
+
RuboCop::RakeTask.new
|
6
8
|
|
7
|
-
|
8
|
-
end
|
9
|
+
task :default => [:spec]
|
9
10
|
|
10
11
|
namespace :db do
|
11
12
|
desc 'Build the databases for tests'
|
@@ -13,20 +14,20 @@ namespace :db do
|
|
13
14
|
pg_spec = {
|
14
15
|
:adapter => 'postgresql',
|
15
16
|
:host => 'localhost',
|
16
|
-
:username => (ENV['POSTGRES_USER'] ||
|
17
|
-
:encoding => 'utf8'
|
17
|
+
:username => (ENV['POSTGRES_USER'] || 'postgres'),
|
18
|
+
:encoding => 'utf8',
|
18
19
|
}
|
19
20
|
|
20
21
|
mysql_spec = {
|
21
22
|
:adapter => 'mysql2',
|
22
23
|
:host => 'localhost',
|
23
|
-
:username => (ENV['MYSQL_USER'] ||
|
24
|
-
:encoding => 'utf8'
|
24
|
+
:username => (ENV['MYSQL_USER'] || 'root'),
|
25
|
+
:encoding => 'utf8',
|
25
26
|
}
|
26
27
|
|
27
|
-
|
28
|
+
` rm -f /tmp/database.sqlite3 `
|
28
29
|
|
29
|
-
require
|
30
|
+
require 'active_record'
|
30
31
|
|
31
32
|
# Connects to PostgreSQL
|
32
33
|
ActiveRecord::Base.establish_connection(pg_spec.merge('database' => 'postgres', 'schema_search_path' => 'public'))
|
@@ -49,9 +50,9 @@ namespace :db do
|
|
49
50
|
|
50
51
|
desc 'Create tables on tests databases'
|
51
52
|
task :create_tables do
|
52
|
-
require
|
53
|
+
require 'octopus'
|
53
54
|
# Set the octopus variable directory to spec dir, in order to load the config/shards.yml file.
|
54
|
-
Octopus.instance_variable_set(:@directory, "#{File.dirname(__FILE__)}/spec/"
|
55
|
+
Octopus.instance_variable_set(:@directory, "#{File.dirname(__FILE__)}/spec/")
|
55
56
|
|
56
57
|
# Require the database connection
|
57
58
|
require "#{File.dirname(__FILE__)}/spec/support/database_connection"
|
@@ -61,9 +62,9 @@ namespace :db do
|
|
61
62
|
shard_symbols.each do |shard_symbol|
|
62
63
|
# Rails 3.1 needs to do some introspection around the base class, which requires
|
63
64
|
# the model be a descendent of ActiveRecord::Base.
|
64
|
-
class BlankModel < ActiveRecord::Base; end
|
65
|
+
class BlankModel < ActiveRecord::Base; end
|
65
66
|
|
66
|
-
BlankModel.using(shard_symbol).connection.initialize_schema_migrations_table
|
67
|
+
BlankModel.using(shard_symbol).connection.initialize_schema_migrations_table
|
67
68
|
|
68
69
|
BlankModel.using(shard_symbol).connection.create_table(:users) do |u|
|
69
70
|
u.string :name
|
@@ -148,14 +149,14 @@ namespace :db do
|
|
148
149
|
|
149
150
|
BlankModel.using(shard_symbol).connection.create_table(:weapons) do |u|
|
150
151
|
u.integer :mmorpg_player_id
|
151
|
-
u.string
|
152
|
-
u.string
|
152
|
+
u.string :name
|
153
|
+
u.string :hand
|
153
154
|
end
|
154
155
|
|
155
156
|
BlankModel.using(shard_symbol).connection.create_table(:skills) do |u|
|
156
157
|
u.integer :mmorpg_player_id
|
157
158
|
u.integer :weapon_id
|
158
|
-
u.string
|
159
|
+
u.string :name
|
159
160
|
end
|
160
161
|
end
|
161
162
|
end
|
data/ar-octopus.gemspec
CHANGED
@@ -1,36 +1,42 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
require
|
2
|
+
$LOAD_PATH.push File.expand_path('../lib', __FILE__)
|
3
|
+
require 'octopus/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
|
-
s.name =
|
6
|
+
s.name = 'ar-octopus'
|
7
7
|
s.version = Octopus::VERSION
|
8
|
-
s.authors = [
|
9
|
-
s.email = [
|
10
|
-
s.homepage =
|
11
|
-
s.summary =
|
12
|
-
s.description =
|
8
|
+
s.authors = ['Thiago Pradi', 'Mike Perham', 'Gabriel Sobrinho']
|
9
|
+
s.email = ['tchandy@gmail.com', 'mperham@gmail.com', 'gabriel.sobrinho@gmail.com']
|
10
|
+
s.homepage = 'https://github.com/tchandy/octopus'
|
11
|
+
s.summary = 'Easy Database Sharding for ActiveRecord'
|
12
|
+
s.description = 'This gem allows you to use sharded databases with ActiveRecord. This also provides a interface for replication and for running migrations with multiples shards.'
|
13
13
|
|
14
14
|
s.files = `git ls-files`.split("\n")
|
15
15
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
-
s.require_paths = [
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
17
|
+
s.require_paths = ['lib']
|
18
18
|
|
19
19
|
s.post_install_message = "Important: If you are upgrading from < Octopus 0.5.0 you need to run:\n" \
|
20
20
|
"$ rake octopus:copy_schema_versions\n\n" \
|
21
|
-
|
22
|
-
|
21
|
+
'Octopus now stores schema version information in each shard and migrations will not ' \
|
22
|
+
'work properly unless this task is invoked.'
|
23
23
|
|
24
24
|
s.add_dependency 'activerecord', '>= 3.2.0'
|
25
25
|
s.add_dependency 'activesupport', '>= 3.2.0'
|
26
26
|
|
27
|
-
s.add_development_dependency '
|
28
|
-
s.add_development_dependency 'rspec', '>= 2.0.0'
|
27
|
+
s.add_development_dependency 'appraisal', '>= 0.3.8'
|
29
28
|
s.add_development_dependency 'mysql2', '> 0.3'
|
30
29
|
s.add_development_dependency 'pg', '>= 0.11.0'
|
30
|
+
s.add_development_dependency 'rake', '>= 0.8.7'
|
31
|
+
s.add_development_dependency 'rspec', '>= 3'
|
32
|
+
s.add_development_dependency 'rubocop'
|
31
33
|
s.add_development_dependency 'sqlite3', '>= 1.3.4'
|
32
|
-
|
33
|
-
|
34
|
+
|
35
|
+
if RUBY_VERSION < '2.0.0'
|
36
|
+
s.add_development_dependency 'pry-debugger'
|
37
|
+
else
|
38
|
+
s.add_development_dependency 'pry-byebug'
|
39
|
+
end
|
34
40
|
|
35
41
|
s.license = 'MIT'
|
36
42
|
end
|
data/init.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), 'rails', 'init')
|
1
|
+
require File.join(File.dirname(__FILE__), 'rails', 'init')
|
data/lib/ar-octopus.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require
|
1
|
+
require 'octopus'
|
data/lib/octopus.rb
CHANGED
@@ -2,24 +2,24 @@ require 'active_record'
|
|
2
2
|
require 'active_support/version'
|
3
3
|
require 'active_support/core_ext/class'
|
4
4
|
|
5
|
-
require
|
6
|
-
require
|
5
|
+
require 'yaml'
|
6
|
+
require 'erb'
|
7
7
|
|
8
8
|
module Octopus
|
9
|
-
def self.env
|
9
|
+
def self.env
|
10
10
|
@env ||= 'octopus'
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.rails_env
|
13
|
+
def self.rails_env
|
14
14
|
@rails_env ||= self.rails? ? Rails.env.to_s : 'shards'
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.config
|
18
18
|
@config ||= begin
|
19
|
-
file_name = Octopus.directory
|
19
|
+
file_name = Octopus.directory + '/config/shards.yml'
|
20
20
|
|
21
|
-
if File.
|
22
|
-
config ||= HashWithIndifferentAccess.new(YAML.load(ERB.new(File.read(file_name)).result))[Octopus.env
|
21
|
+
if File.exist?(file_name) || File.symlink?(file_name)
|
22
|
+
config ||= HashWithIndifferentAccess.new(YAML.load(ERB.new(File.read(file_name)).result))[Octopus.env]
|
23
23
|
else
|
24
24
|
config ||= HashWithIndifferentAccess.new
|
25
25
|
end
|
@@ -45,7 +45,7 @@ module Octopus
|
|
45
45
|
|
46
46
|
# Returns the Rails.root_to_s when you are using rails
|
47
47
|
# Running the current directory in a generic Ruby process
|
48
|
-
def self.directory
|
48
|
+
def self.directory
|
49
49
|
@directory ||= defined?(Rails) ? Rails.root.to_s : Dir.pwd
|
50
50
|
end
|
51
51
|
|
@@ -72,12 +72,16 @@ module Octopus
|
|
72
72
|
ActiveRecord::VERSION::MAJOR >= 4
|
73
73
|
end
|
74
74
|
|
75
|
+
def self.rails41?
|
76
|
+
rails4? && ActiveRecord::VERSION::MINOR >= 1
|
77
|
+
end
|
78
|
+
|
75
79
|
def self.rails?
|
76
80
|
defined?(Rails)
|
77
81
|
end
|
78
82
|
|
79
83
|
def self.shards=(shards)
|
80
|
-
config[rails_env
|
84
|
+
config[rails_env] = HashWithIndifferentAccess.new(shards)
|
81
85
|
ActiveRecord::Base.connection.initialize_shards(@config)
|
82
86
|
end
|
83
87
|
|
@@ -91,36 +95,33 @@ module Octopus
|
|
91
95
|
end
|
92
96
|
end
|
93
97
|
|
94
|
-
def self.fully_replicated(&
|
95
|
-
old_fully_replicated = Thread.current[
|
96
|
-
Thread.current[
|
98
|
+
def self.fully_replicated(&_block)
|
99
|
+
old_fully_replicated = Thread.current['octopus.fully_replicated']
|
100
|
+
Thread.current['octopus.fully_replicated'] = true
|
97
101
|
yield
|
98
102
|
ensure
|
99
|
-
Thread.current[
|
103
|
+
Thread.current['octopus.fully_replicated'] = old_fully_replicated
|
100
104
|
end
|
101
105
|
end
|
102
106
|
|
103
|
-
require
|
104
|
-
require
|
105
|
-
require
|
106
|
-
|
107
|
-
require
|
108
|
-
require
|
109
|
-
require
|
110
|
-
require
|
111
|
-
require
|
112
|
-
require
|
113
|
-
require
|
114
|
-
require
|
115
|
-
require
|
116
|
-
require
|
117
|
-
|
118
|
-
if defined?(::Rails)
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
require
|
124
|
-
require "octopus/collection_proxy"
|
125
|
-
require "octopus/relation_proxy"
|
126
|
-
require "octopus/scope_proxy"
|
107
|
+
require 'octopus/shard_tracking'
|
108
|
+
require 'octopus/shard_tracking/attribute'
|
109
|
+
require 'octopus/shard_tracking/dynamic'
|
110
|
+
|
111
|
+
require 'octopus/model'
|
112
|
+
require 'octopus/migration'
|
113
|
+
require 'octopus/association'
|
114
|
+
require 'octopus/collection_association'
|
115
|
+
require 'octopus/has_and_belongs_to_many_association' unless Octopus.rails41?
|
116
|
+
require 'octopus/association_shard_tracking'
|
117
|
+
require 'octopus/persistence'
|
118
|
+
require 'octopus/log_subscriber'
|
119
|
+
require 'octopus/abstract_adapter'
|
120
|
+
require 'octopus/singular_association'
|
121
|
+
|
122
|
+
require 'octopus/railtie' if defined?(::Rails)
|
123
|
+
|
124
|
+
require 'octopus/proxy'
|
125
|
+
require 'octopus/collection_proxy'
|
126
|
+
require 'octopus/relation_proxy'
|
127
|
+
require 'octopus/scope_proxy'
|