active_record_shards 3.15.1 → 3.18.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.
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module ActiveRecordShards
3
4
  class ShardSupport
4
5
  class ShardEnumerator
@@ -1,16 +1,16 @@
1
- # show which connection was picked to debug master/slave slowness when both servers are the same
1
+ # show which connection was picked to debug primary/replica slowness when both servers are the same
2
2
  module ActiveRecordShards
3
3
  module SqlComments
4
4
  module Methods
5
5
  def execute(query, name = nil)
6
- slave = ActiveRecord::Base.current_shard_selection.on_slave?
7
- query += " /* #{slave ? 'slave' : 'master'} */"
6
+ replica = ActiveRecord::Base.current_shard_selection.on_replica?
7
+ query += " /* #{replica ? 'replica' : 'primary'} */"
8
8
  super(query, name)
9
9
  end
10
10
  end
11
11
 
12
12
  def self.enable
13
- ActiveRecord::Base.on_slave do
13
+ ActiveRecord::Base.on_replica do
14
14
  ActiveRecord::Base.on_shard(nil) do
15
15
  ActiveRecord::Base.connection.class.prepend(Methods)
16
16
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'active_record_shards'
3
4
 
4
5
  %w[db:drop db:create db:abort_if_pending_migrations db:reset db:test:purge].each do |name|
@@ -8,15 +9,16 @@ end
8
9
  namespace :db do
9
10
  desc 'Drops the database for the current RAILS_ENV including shards'
10
11
  task drop: :load_config do
11
- ActiveRecord::Base.configurations.each do |key, conf|
12
- next if !key.starts_with?(ActiveRecordShards.rails_env) || key.ends_with?("_slave")
12
+ ActiveRecord::Base.configurations.to_h.each do |key, conf|
13
+ next if !key.start_with?(ActiveRecordShards.rails_env) || key.end_with?("_replica", "_slave")
14
+
13
15
  begin
14
16
  ActiveRecordShards::Tasks.root_connection(conf).drop_database(conf['database'])
15
17
  # rescue ActiveRecord::NoDatabaseError # TODO: exists in AR but never is raised here ...
16
18
  # $stderr.puts "Database '#{conf['database']}' does not exist"
17
- rescue StandardError => error
18
- $stderr.puts error, *error.backtrace
19
- $stderr.puts "Couldn't drop #{conf['database']}"
19
+ rescue StandardError => e
20
+ warn e, *e.backtrace
21
+ warn "Couldn't drop #{conf['database']}"
20
22
  end
21
23
  end
22
24
  end
@@ -28,8 +30,9 @@ namespace :db do
28
30
 
29
31
  desc "Create the database defined in config/database.yml for the current RAILS_ENV including shards"
30
32
  task create: :load_config do
31
- ActiveRecord::Base.configurations.each do |key, conf|
32
- next if !key.starts_with?(ActiveRecordShards.rails_env) || key.ends_with?("_slave")
33
+ ActiveRecord::Base.configurations.to_h.each do |key, conf|
34
+ next if !key.start_with?(ActiveRecordShards.rails_env) || key.end_with?("_replica", "_slave")
35
+
33
36
  begin
34
37
  # MysqlAdapter takes charset instead of encoding in Rails 4.2 or greater
35
38
  # https://github.com/rails/rails/blob/4-2-stable/activerecord/lib/active_record/tasks/mysql_database_tasks.rb#L85-L96
@@ -37,11 +40,11 @@ namespace :db do
37
40
  symbolized_configuration[:charset] = symbolized_configuration[:encoding]
38
41
 
39
42
  ActiveRecordShards::Tasks.root_connection(conf).create_database(conf['database'], symbolized_configuration)
40
- rescue ActiveRecord::StatementInvalid => ex
41
- if ex.message.include?('database exists')
43
+ rescue ActiveRecord::StatementInvalid => e
44
+ if e.message.include?('database exists')
42
45
  puts "#{conf['database']} already exists"
43
46
  else
44
- raise ex
47
+ raise e
45
48
  end
46
49
  end
47
50
  end
@@ -52,7 +55,10 @@ namespace :db do
52
55
  task abort_if_pending_migrations: :environment do
53
56
  if defined? ActiveRecord
54
57
  pending_migrations =
55
- if ActiveRecord::VERSION::STRING >= "5.2.0"
58
+ if ActiveRecord::VERSION::MAJOR >= 6
59
+ migrations = ActiveRecord::MigrationContext.new(ActiveRecord::Migrator.migrations_paths, ActiveRecord::SchemaMigration).migrations
60
+ ActiveRecord::Migrator.new(:up, migrations, ActiveRecord::SchemaMigration).pending_migrations
61
+ elsif ActiveRecord::VERSION::STRING >= "5.2.0"
56
62
  migrations = ActiveRecord::MigrationContext.new(ActiveRecord::Migrator.migrations_paths).migrations
57
63
  ActiveRecord::Migrator.new(:up, migrations).pending_migrations
58
64
  else
@@ -60,9 +66,9 @@ namespace :db do
60
66
  end
61
67
 
62
68
  if pending_migrations.any?
63
- $stderr.puts "You have #{pending_migrations.size} pending migrations:"
69
+ warn "You have #{pending_migrations.size} pending migrations:"
64
70
  pending_migrations.each do |pending_migration|
65
- $stderr.puts ' %4d %s' % [pending_migration.version, pending_migration.name]
71
+ warn ' %4d %s' % [pending_migration.version, pending_migration.name]
66
72
  end
67
73
  abort %(Run "rake db:migrate" to update your database then try again.)
68
74
  end
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.15.1
4
+ version: 3.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Quorning
@@ -10,10 +10,10 @@ authors:
10
10
  - Mick Staugaard
11
11
  - Eric Chapweske
12
12
  - Ben Osheroff
13
- autorequire:
13
+ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2019-10-10 00:00:00.000000000 Z
16
+ date: 2021-06-21 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: activerecord
@@ -24,7 +24,7 @@ dependencies:
24
24
  version: '4.2'
25
25
  - - "<"
26
26
  - !ruby/object:Gem::Version
27
- version: '6.0'
27
+ version: '6.1'
28
28
  type: :runtime
29
29
  prerelease: false
30
30
  version_requirements: !ruby/object:Gem::Requirement
@@ -34,7 +34,7 @@ dependencies:
34
34
  version: '4.2'
35
35
  - - "<"
36
36
  - !ruby/object:Gem::Version
37
- version: '6.0'
37
+ version: '6.1'
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: activesupport
40
40
  requirement: !ruby/object:Gem::Requirement
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: '4.2'
45
45
  - - "<"
46
46
  - !ruby/object:Gem::Version
47
- version: '6.0'
47
+ version: '6.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
@@ -54,37 +54,37 @@ dependencies:
54
54
  version: '4.2'
55
55
  - - "<"
56
56
  - !ruby/object:Gem::Version
57
- version: '6.0'
57
+ version: '6.1'
58
58
  - !ruby/object:Gem::Dependency
59
- name: rake
59
+ name: bump
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - "~>"
62
+ - - ">="
63
63
  - !ruby/object:Gem::Version
64
- version: '12.0'
64
+ version: '0'
65
65
  type: :development
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
- - - "~>"
69
+ - - ">="
70
70
  - !ruby/object:Gem::Version
71
- version: '12.0'
71
+ version: '0'
72
72
  - !ruby/object:Gem::Dependency
73
- name: mysql2
73
+ name: minitest
74
74
  requirement: !ruby/object:Gem::Requirement
75
75
  requirements:
76
76
  - - ">="
77
77
  - !ruby/object:Gem::Version
78
- version: '0'
78
+ version: 5.10.0
79
79
  type: :development
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
83
  - - ">="
84
84
  - !ruby/object:Gem::Version
85
- version: '0'
85
+ version: 5.10.0
86
86
  - !ruby/object:Gem::Dependency
87
- name: bump
87
+ name: minitest-rg
88
88
  requirement: !ruby/object:Gem::Requirement
89
89
  requirements:
90
90
  - - ">="
@@ -98,21 +98,21 @@ dependencies:
98
98
  - !ruby/object:Gem::Version
99
99
  version: '0'
100
100
  - !ruby/object:Gem::Dependency
101
- name: rubocop
101
+ name: mocha
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - '='
104
+ - - ">="
105
105
  - !ruby/object:Gem::Version
106
- version: 0.50.0
106
+ version: 1.4.0
107
107
  type: :development
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - '='
111
+ - - ">="
112
112
  - !ruby/object:Gem::Version
113
- version: 0.50.0
113
+ version: 1.4.0
114
114
  - !ruby/object:Gem::Dependency
115
- name: minitest
115
+ name: mysql2
116
116
  requirement: !ruby/object:Gem::Requirement
117
117
  requirements:
118
118
  - - ">="
@@ -126,48 +126,76 @@ dependencies:
126
126
  - !ruby/object:Gem::Version
127
127
  version: '0'
128
128
  - !ruby/object:Gem::Dependency
129
- name: minitest-rg
129
+ name: phenix
130
130
  requirement: !ruby/object:Gem::Requirement
131
131
  requirements:
132
132
  - - ">="
133
133
  - !ruby/object:Gem::Version
134
- version: '0'
134
+ version: 0.6.0
135
135
  type: :development
136
136
  prerelease: false
137
137
  version_requirements: !ruby/object:Gem::Requirement
138
138
  requirements:
139
139
  - - ">="
140
140
  - !ruby/object:Gem::Version
141
- version: '0'
141
+ version: 0.6.0
142
142
  - !ruby/object:Gem::Dependency
143
- name: mocha
143
+ name: rake
144
144
  requirement: !ruby/object:Gem::Requirement
145
145
  requirements:
146
- - - ">="
146
+ - - "~>"
147
147
  - !ruby/object:Gem::Version
148
- version: 1.4.0
148
+ version: '12.0'
149
149
  type: :development
150
150
  prerelease: false
151
151
  version_requirements: !ruby/object:Gem::Requirement
152
152
  requirements:
153
- - - ">="
153
+ - - "~>"
154
154
  - !ruby/object:Gem::Version
155
- version: 1.4.0
155
+ version: '12.0'
156
156
  - !ruby/object:Gem::Dependency
157
- name: phenix
157
+ name: rubocop
158
158
  requirement: !ruby/object:Gem::Requirement
159
159
  requirements:
160
- - - ">="
160
+ - - "~>"
161
161
  - !ruby/object:Gem::Version
162
- version: 0.2.0
162
+ version: 0.77.0
163
163
  type: :development
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
- - - ">="
167
+ - - "~>"
168
+ - !ruby/object:Gem::Version
169
+ version: 0.77.0
170
+ - !ruby/object:Gem::Dependency
171
+ name: rubocop-minitest
172
+ requirement: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - "~>"
175
+ - !ruby/object:Gem::Version
176
+ version: 0.5.0
177
+ type: :development
178
+ prerelease: false
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - "~>"
182
+ - !ruby/object:Gem::Version
183
+ version: 0.5.0
184
+ - !ruby/object:Gem::Dependency
185
+ name: rubocop-performance
186
+ requirement: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - "~>"
189
+ - !ruby/object:Gem::Version
190
+ version: 1.5.1
191
+ type: :development
192
+ prerelease: false
193
+ version_requirements: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - "~>"
168
196
  - !ruby/object:Gem::Version
169
- version: 0.2.0
170
- description: Easily run queries on shard and slave databases.
197
+ version: 1.5.1
198
+ description: Easily run queries on shard and replica databases.
171
199
  email:
172
200
  - bquorning@zendesk.com
173
201
  - gabe@zendesk.com
@@ -184,11 +212,13 @@ files:
184
212
  - lib/active_record_shards/connection_handler.rb
185
213
  - lib/active_record_shards/connection_pool.rb
186
214
  - lib/active_record_shards/connection_specification.rb
187
- - lib/active_record_shards/connection_switcher-4-0.rb
215
+ - lib/active_record_shards/connection_switcher-4-2.rb
188
216
  - lib/active_record_shards/connection_switcher-5-0.rb
189
217
  - lib/active_record_shards/connection_switcher-5-1.rb
190
218
  - lib/active_record_shards/connection_switcher.rb
219
+ - lib/active_record_shards/default_replica_patches.rb
191
220
  - lib/active_record_shards/default_slave_patches.rb
221
+ - lib/active_record_shards/deprecation.rb
192
222
  - lib/active_record_shards/migration.rb
193
223
  - lib/active_record_shards/model.rb
194
224
  - lib/active_record_shards/patches-4-2.rb
@@ -201,7 +231,7 @@ homepage: https://github.com/zendesk/active_record_shards
201
231
  licenses:
202
232
  - MIT
203
233
  metadata: {}
204
- post_install_message:
234
+ post_install_message:
205
235
  rdoc_options: []
206
236
  require_paths:
207
237
  - lib
@@ -216,8 +246,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
216
246
  - !ruby/object:Gem::Version
217
247
  version: '0'
218
248
  requirements: []
219
- rubygems_version: 3.0.3
220
- signing_key:
249
+ rubygems_version: 3.2.16
250
+ signing_key:
221
251
  specification_version: 4
222
252
  summary: Simple database switching for ActiveRecord.
223
253
  test_files: []