switchman 3.0.13 → 3.0.14
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.
- checksums.yaml +4 -4
- data/lib/switchman/active_record/database_configurations.rb +14 -0
- data/lib/switchman/version.rb +1 -1
- data/lib/tasks/switchman.rake +12 -3
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 148d79c6d4c79ef51204c2d32718b30463814b56849effaaf9cacaf86789261d
|
4
|
+
data.tar.gz: 1db4039008bd8958e0dc918b0de81a85294f795f6aea23a1e68e592d6ddc691f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2ff7f714441d360a38125d7eea85ac3aba981d76fa8a8fceca527f499b7c1a90eb4dd2c91fcf6e292569089e35b077b7ad248cb069a3a9a0579071b93f54a0d
|
7
|
+
data.tar.gz: 7fc113c8b0a1ecdd6d5590401af399fc8f7dd220bc655c190e962870f5e64e2d1e922879e3515693713a9cc77b290913d38740102a29000c19071dab21c10844
|
@@ -3,6 +3,20 @@
|
|
3
3
|
module Switchman
|
4
4
|
module ActiveRecord
|
5
5
|
module DatabaseConfigurations
|
6
|
+
# key difference: For each env name, ensure only one writable config is returned
|
7
|
+
# since all should point to the same data, even if multiple are writable
|
8
|
+
# (Picks 'primary' since it is guaranteed to exist and switchman handles activating
|
9
|
+
# deploy through other means)
|
10
|
+
def configs_for(include_replicas: false, name: nil, **)
|
11
|
+
res = super
|
12
|
+
if name && !include_replicas
|
13
|
+
return nil unless name.end_with?('primary')
|
14
|
+
elsif !include_replicas
|
15
|
+
return res.select { |config| config.name.end_with?('primary') }
|
16
|
+
end
|
17
|
+
res
|
18
|
+
end
|
19
|
+
|
6
20
|
private
|
7
21
|
|
8
22
|
# key difference: assumes a hybrid two-tier structure; each third tier
|
data/lib/switchman/version.rb
CHANGED
data/lib/tasks/switchman.rake
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# In rails 7.0+ if you have only 1 db in the env it doesn't try to do explicit activation
|
4
|
+
# (and for rails purposes we only have one db per env because each database server is a separate env)
|
5
|
+
if Rails.version < '7.0'
|
6
|
+
task_prefix = ::Rake::Task.task_defined?('app:db:migrate') ? 'app:db' : 'db'
|
7
|
+
::Rake::Task["#{task_prefix}:migrate"].clear_actions.enhance do
|
8
|
+
::ActiveRecord::Tasks::DatabaseTasks.migrate
|
9
|
+
# Ensure this doesn't blow up when running inside the dummy app
|
10
|
+
Rake::Task["#{task_prefix}:_dump"].invoke
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
3
14
|
module Switchman
|
4
15
|
module Rake
|
5
16
|
def self.filter_database_servers(&block)
|
@@ -50,9 +61,7 @@ module Switchman
|
|
50
61
|
end
|
51
62
|
|
52
63
|
# classes - an array or proc, to activate as the current shard during the
|
53
|
-
# task.
|
54
|
-
# so that schema updates for non-default tables happen against all shards.
|
55
|
-
# this is handled automatically for the default migration tasks, below.
|
64
|
+
# task.
|
56
65
|
def self.shardify_task(task_name, classes: [::ActiveRecord::Base])
|
57
66
|
old_task = ::Rake::Task[task_name]
|
58
67
|
old_actions = old_task.actions.dup
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: switchman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
8
8
|
- James Williams
|
9
9
|
- Jacob Fugal
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
date: 2022-03-23 00:00:00.000000000 Z
|
@@ -300,7 +300,7 @@ licenses:
|
|
300
300
|
- MIT
|
301
301
|
metadata:
|
302
302
|
rubygems_mfa_required: 'true'
|
303
|
-
post_install_message:
|
303
|
+
post_install_message:
|
304
304
|
rdoc_options: []
|
305
305
|
require_paths:
|
306
306
|
- lib
|
@@ -316,7 +316,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
316
316
|
version: '0'
|
317
317
|
requirements: []
|
318
318
|
rubygems_version: 3.1.4
|
319
|
-
signing_key:
|
319
|
+
signing_key:
|
320
320
|
specification_version: 4
|
321
321
|
summary: Rails sharding magic
|
322
322
|
test_files: []
|