active_record_shards 3.11.2 → 3.11.3

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: bbc0fcaa322a29df41febb37f52fd52dfb4e9259
4
- data.tar.gz: 460544575270a626b64fc671d95d706bfac532a6
3
+ metadata.gz: '09b0da024cd5b13020b14dde7e822530b7f82fcc'
4
+ data.tar.gz: 0c2d9149aa653176d122c97fe632e6d47e00716a
5
5
  SHA512:
6
- metadata.gz: 7d7cb9f8d135e1c230c2f467dbb761b844004c7e86d77cf5af267e6966654af8f5061d34852c76bdcc59af606a6c9688bb5ac70cfa2c928bdbec4c4ffd7f1345
7
- data.tar.gz: 5e471616a88ccab4a18eb8c29a707911ad1246623729ea61c576d5964c73ddfd5f50a30847399d87012310b2457afb141c09411368c6dae27e8a19a610a4297e
6
+ metadata.gz: 59ec6f7c8e6c8639beee8aea8ded4c0b8aa910b839c4f0350836077bc745692330a0106df273b7b78e46251c0b3a4fb0a27e6164a17475669eac8afea0444d5c
7
+ data.tar.gz: dd24e476ad1c062427b54e5898f5a33393547acfeb1d1faf63024b4b900c2144672d2c67c2c42023225ef63b0e0c69c3722c188f320f6d50fc28e0773f356e21
@@ -30,7 +30,7 @@ when '3.2'
30
30
  require 'active_record_shards/patches-3-2'
31
31
  when '4.2'
32
32
  require 'active_record_shards/patches-4-2'
33
- when '5.0', '5.1'
33
+ when '5.0', '5.1', '5.2'
34
34
  require 'active_record_shards/patches-5-0'
35
35
  else
36
36
  raise "ActiveRecordShards is not compatible with #{ActiveRecord::VERSION::STRING}"
@@ -32,8 +32,6 @@ module ActiveRecordShards
32
32
  end
33
33
 
34
34
  def method_missing(method, *args, &block) # rubocop:disable Style/MethodMissing
35
- # would love to not rely on version here, unfortunately @association_collection
36
- # is a sensitive little bitch of an object.
37
35
  reflection = @association_collection.proxy_association.reflection
38
36
  reflection.klass.on_cx_switch_block(@which) { @association_collection.send(method, *args, &block) }
39
37
  end
@@ -10,6 +10,11 @@ module ActiveRecordShards
10
10
 
11
11
  conf.to_a.each do |env_name, env_config|
12
12
  next unless shards = env_config.delete('shards')
13
+
14
+ unless shards.keys.all? { |shard_name| shard_name.is_a?(Integer) }
15
+ raise "All shard names must be integers: #{shards.keys.inspect}."
16
+ end
17
+
13
18
  env_config['shard_names'] = shards.keys
14
19
  shards.each do |shard_name, shard_conf|
15
20
  expand_child!(env_config, shard_conf)
@@ -22,14 +22,11 @@ module ActiveRecordShards
22
22
  spec = configurations[name]
23
23
 
24
24
  if spec.nil?
25
- raise ActiveRecord::AdapterNotSpecified, "No database defined by #{name} in database.yml"
25
+ raise ActiveRecord::AdapterNotSpecified, "No database defined by #{name} in your database config. (configurations: #{configurations.inspect})"
26
26
  end
27
27
 
28
28
  # in 3.2 rails is asking for a connection pool in a map of these ConnectionSpecifications. If we want to re-use connections,
29
29
  # we need to re-use specs.
30
-
31
- # note that since we're subverting the standard establish_connection path, we have to handle the funky autoloading of the
32
- # connection adapter ourselves.
33
30
  if ActiveRecord::VERSION::MAJOR >= 4
34
31
  specification_cache[name] ||= begin
35
32
  resolver = ActiveRecordShards::ConnectionSpecification::Resolver.new configurations
@@ -4,7 +4,7 @@ module ActiveRecordShards
4
4
  name = current_shard_selection.resolve_connection_name(sharded: is_sharded?, configurations: configurations)
5
5
 
6
6
  unless configurations[name] || name == "primary"
7
- raise ActiveRecord::AdapterNotSpecified, "No database defined by #{name} in database.yml"
7
+ raise ActiveRecord::AdapterNotSpecified, "No database defined by #{name} in your database config. (configurations: #{configurations.inspect})"
8
8
  end
9
9
 
10
10
  name
@@ -4,7 +4,7 @@ module ActiveRecordShards
4
4
  name = current_shard_selection.resolve_connection_name(sharded: is_sharded?, configurations: configurations)
5
5
 
6
6
  unless configurations[name] || name == "primary"
7
- raise ActiveRecord::AdapterNotSpecified, "No database defined by #{name} in database.yml"
7
+ raise ActiveRecord::AdapterNotSpecified, "No database defined by #{name} in your database config. (configurations: #{configurations.inspect})"
8
8
  end
9
9
 
10
10
  name
@@ -139,7 +139,10 @@ module ActiveRecordShards
139
139
 
140
140
  def shard_names
141
141
  unless config = configurations[shard_env]
142
- raise "Did not find #{shard_env} in configurations, did you forget to add it to your database.yml ? (configurations: #{configurations.inspect})"
142
+ raise "Did not find #{shard_env} in configurations, did you forget to add it to your database config? (configurations: #{configurations.inspect})"
143
+ end
144
+ unless config.fetch(SHARD_NAMES_CONFIG_KEY, []).all? { |shard_name| shard_name.is_a?(Integer) }
145
+ raise "All shard names must be integers: #{config[SHARD_NAMES_CONFIG_KEY].inspect}."
143
146
  end
144
147
  config[SHARD_NAMES_CONFIG_KEY] || []
145
148
  end
@@ -153,6 +156,9 @@ module ActiveRecordShards
153
156
  end
154
157
 
155
158
  if options.key?(:shard)
159
+ unless configurations[shard_env]
160
+ raise "Did not find #{shard_env} in configurations, did you forget to add it to your database config? (configurations: #{configurations.inspect})"
161
+ end
156
162
  current_shard_selection.shard = options[:shard]
157
163
  end
158
164
 
@@ -214,7 +220,7 @@ when '3.2', '4.2'
214
220
  require 'active_record_shards/connection_switcher-4-0'
215
221
  when '5.0'
216
222
  require 'active_record_shards/connection_switcher-5-0'
217
- when '5.1'
223
+ when '5.1', '5.2'
218
224
  require 'active_record_shards/connection_switcher-5-1'
219
225
  else
220
226
  raise "ActiveRecordShards is not compatible with #{ActiveRecord::VERSION::STRING}"
@@ -14,24 +14,6 @@ module ActiveRecord
14
14
  alias_method :"#{m}_without_sharding", m.to_sym
15
15
  alias_method m.to_sym, :"#{m}_with_sharding"
16
16
  end
17
-
18
- def bootstrap_migrations_from_nil_shard(migrations_path, this_migration = nil)
19
- migrations = nil
20
- ActiveRecord::Base.on_shard(nil) do
21
- migrations = ActiveRecord::Migrator.new(:up, migrations_path).migrated
22
- end
23
-
24
- puts "inserting #{migrations.size} migrations on all shards..."
25
- ActiveRecord::Base.on_all_shards do
26
- migrator = ActiveRecord::Migrator.new(:up, migrations_path)
27
- migrations.each do |m|
28
- migrator.__send__(:record_version_state_after_migrating, m)
29
- end
30
- if this_migration
31
- migrator.__send__(:record_version_state_after_migrating, this_migration)
32
- end
33
- end
34
- end
35
17
  end
36
18
 
37
19
  # don't allow Migrator class to cache versions
@@ -82,9 +64,6 @@ module ActiveRecordShards
82
64
  end
83
65
  end
84
66
 
85
- # ok, so some 'splaining to do. Rails 3.1 puts the migrate() method on the instance of the
86
- # migration, where it should have been. But this makes our monkey patch incompatible.
87
- # So we're forced to *either* include or extend this.
88
67
  module ActualMigrationExtension
89
68
  def migrate_with_forced_shard(direction)
90
69
  if migration_shard.blank?
@@ -9,7 +9,7 @@ module ActiveRecordShards
9
9
  self.sharded = false
10
10
  end
11
11
 
12
- def is_sharded? # rubocop:disable Style/PredicateName
12
+ def is_sharded? # rubocop:disable Naming/PredicateName
13
13
  if self == ActiveRecord::Base
14
14
  sharded != false && supports_sharding?
15
15
  elsif self == base_class
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_shards
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.11.2
4
+ version: 3.11.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mick Staugaard
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-09-08 00:00:00.000000000 Z
13
+ date: 2017-12-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: 0.49.1
117
+ version: 0.50.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - '='
123
123
  - !ruby/object:Gem::Version
124
- version: 0.49.1
124
+ version: 0.50.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: minitest
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -229,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
229
229
  version: '0'
230
230
  requirements: []
231
231
  rubyforge_project:
232
- rubygems_version: 2.6.13
232
+ rubygems_version: 2.6.14
233
233
  signing_key:
234
234
  specification_version: 4
235
235
  summary: Simple database switching for ActiveRecord.