switchman 3.0.10 → 3.0.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/switchman/engine.rb +5 -5
- data/lib/switchman/standard_error.rb +13 -11
- data/lib/switchman/version.rb +1 -1
- data/lib/tasks/switchman.rake +3 -3
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb102ddffa5ff2319a8e73b4d62ff8b3ff18fe2e9905c9ecb03c4aa20fda4bd7
|
4
|
+
data.tar.gz: 941b024d4e92811e51bf53dedba0039aaea52c169398d0b50ecc7da6bc0aefbb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea2c591ba32875d6cce5016c285fc3398e2bb491a7631ee5c900f3033c008292a38fd51c77d6a2b9abb00996963e8d8b0a61ca43c44a468025750a5aacd459be
|
7
|
+
data.tar.gz: e7e3f2b2ee7551e38f5d2d41b66eee7fb335c630ed1096598e25a1d09af506dfcbe63920de25828ce842c4b83c55a4abc70221e5c5a2fdc2e7f64b3fe181b50a
|
data/lib/switchman/engine.rb
CHANGED
@@ -68,6 +68,9 @@ module Switchman
|
|
68
68
|
|
69
69
|
initializer 'switchman.extend_ar', before: 'active_record.initialize_database' do
|
70
70
|
::ActiveSupport.on_load(:active_record) do
|
71
|
+
# Switchman requires postgres, so just always load the pg adapter
|
72
|
+
require 'active_record/connection_adapters/postgresql_adapter'
|
73
|
+
|
71
74
|
require 'switchman/active_record/abstract_adapter'
|
72
75
|
require 'switchman/active_record/association'
|
73
76
|
require 'switchman/active_record/attribute_methods'
|
@@ -81,6 +84,7 @@ module Switchman
|
|
81
84
|
require 'switchman/active_record/migration'
|
82
85
|
require 'switchman/active_record/model_schema'
|
83
86
|
require 'switchman/active_record/persistence'
|
87
|
+
require 'switchman/active_record/postgresql_adapter'
|
84
88
|
require 'switchman/active_record/predicate_builder'
|
85
89
|
require 'switchman/active_record/query_cache'
|
86
90
|
require 'switchman/active_record/query_methods'
|
@@ -128,6 +132,7 @@ module Switchman
|
|
128
132
|
::ActiveRecord::ConnectionAdapters::AbstractAdapter.prepend(ActiveRecord::AbstractAdapter)
|
129
133
|
::ActiveRecord::ConnectionAdapters::ConnectionPool.prepend(ActiveRecord::ConnectionPool)
|
130
134
|
::ActiveRecord::ConnectionAdapters::AbstractAdapter.prepend(ActiveRecord::QueryCache)
|
135
|
+
::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(ActiveRecord::PostgreSQLAdapter)
|
131
136
|
|
132
137
|
::ActiveRecord::DatabaseConfigurations.prepend(ActiveRecord::DatabaseConfigurations)
|
133
138
|
::ActiveRecord::DatabaseConfigurations::DatabaseConfig.prepend(ActiveRecord::DatabaseConfigurations::DatabaseConfig)
|
@@ -180,11 +185,6 @@ module Switchman
|
|
180
185
|
require 'switchman/active_record/table_definition'
|
181
186
|
::ActiveRecord::ConnectionAdapters::TableDefinition.prepend(ActiveRecord::TableDefinition)
|
182
187
|
|
183
|
-
if defined?(::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
|
184
|
-
require 'switchman/active_record/postgresql_adapter'
|
185
|
-
::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(ActiveRecord::PostgreSQLAdapter)
|
186
|
-
end
|
187
|
-
|
188
188
|
Shard.send(:initialize_sharding)
|
189
189
|
end
|
190
190
|
end
|
@@ -3,20 +3,22 @@
|
|
3
3
|
module Switchman
|
4
4
|
module StandardError
|
5
5
|
def initialize(*args)
|
6
|
-
|
7
|
-
#
|
8
|
-
if is_a?(::
|
9
|
-
|
10
|
-
return
|
11
|
-
end
|
6
|
+
super
|
7
|
+
# These seem to get themselves into a bad state if we try to lookup shards while processing
|
8
|
+
return if is_a?(IO::EAGAINWaitReadable)
|
9
|
+
return if Thread.current[:switchman_error_handler]
|
12
10
|
|
13
11
|
begin
|
14
|
-
|
15
|
-
rescue ::ActiveRecord::ConnectionNotEstablished
|
16
|
-
# If we hit an error really early in boot, activerecord may not be initialized yet
|
17
|
-
end
|
12
|
+
Thread.current[:switchman_error_handler] = true
|
18
13
|
|
19
|
-
|
14
|
+
begin
|
15
|
+
@active_shards = Shard.active_shards if defined?(Shard)
|
16
|
+
rescue
|
17
|
+
# If we hit an error really early in boot, activerecord may not be initialized yet
|
18
|
+
end
|
19
|
+
ensure
|
20
|
+
Thread.current[:switchman_error_handler] = nil
|
21
|
+
end
|
20
22
|
end
|
21
23
|
|
22
24
|
def current_shard(klass = ::ActiveRecord::Base)
|
data/lib/switchman/version.rb
CHANGED
data/lib/tasks/switchman.rake
CHANGED
@@ -35,9 +35,9 @@ module Switchman
|
|
35
35
|
|
36
36
|
scope = base_scope.order(::Arel.sql('database_server_id IS NOT NULL, database_server_id, id'))
|
37
37
|
if servers != DatabaseServer.all
|
38
|
-
|
39
|
-
|
40
|
-
scope = scope.where(
|
38
|
+
database_server_ids = servers.map(&:id)
|
39
|
+
database_server_ids << nil if servers.include?(Shard.default.database_server)
|
40
|
+
scope = scope.where(database_server_id: database_server_ids)
|
41
41
|
end
|
42
42
|
|
43
43
|
scope = shard_scope(scope, shard) if shard
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
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.13
|
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
|
-
date: 2022-03-
|
13
|
+
date: 2022-03-23 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
@@ -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: []
|