shackles 1.0.10 → 1.1.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.
- checksums.yaml +5 -13
- data/lib/shackles.rb +4 -11
- data/lib/shackles/connection_handler.rb +8 -11
- data/lib/shackles/connection_specification.rb +2 -7
- data/lib/shackles/version.rb +1 -1
- data/spec/shackles_spec.rb +2 -3
- metadata +60 -18
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NGU0ZjEzYWI5OGZiZTk2ZWVlZDliYWMzNTY1Njg5OTI0NTU4YmZkMQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 71107d30a7307374ffbf19d585bcfcfdc7be7cd2
|
4
|
+
data.tar.gz: eb3b93f08eb0aaad52dd3c790ad90e2c25bb7006
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NDZiYTIxY2JiMzc2NWU2MGRiODMwYzExMzBjNzNmMmY1YWI0Y2QzNmFiMjFl
|
11
|
-
YTYzYjM3MDYyZjE2ZDRjNWJkMGM4ZDE5MmNjOTIxNzM5OWQ2YWU=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NDUyNjcwYjJjOTExM2U4MTM4Zjc4NGY5NWJlNzY1ODJkMTdmNGFlMzlmY2Zm
|
14
|
-
NDMzNWY2ODRkODhhMjg5Y2ZkNTA3MTZlZjdiMTNhZDBlNmJhNWVhNTVhODk3
|
15
|
-
MTM4NDQ0MTQ4OTM4MmFjZjZiMmU2M2MxMjY0ZGZiYzYwMzcyNjc=
|
6
|
+
metadata.gz: af803e0e4278db28f9c00ebfdd06218262ab048e1a44cd56dbb227adef84d9fd29036dd4b48627e5f611329a3258564d55b2ee1eae35e35e8e61769949cc3dd7
|
7
|
+
data.tar.gz: 8ce9c41baa33ea174084017662d9f87549bcae1a46d34caa5ffae54c81fa51e7cd86192c69aad912417dc7980321aacf23e110a7ef35db75c37a77e2439415d7
|
data/lib/shackles.rb
CHANGED
@@ -22,9 +22,8 @@ module Shackles
|
|
22
22
|
|
23
23
|
activated_environments << Shackles.environment
|
24
24
|
|
25
|
-
ActiveRecord::ConnectionAdapters::ConnectionHandler.
|
26
|
-
|
27
|
-
klass::ConnectionSpecification.send(:include, ConnectionSpecification)
|
25
|
+
ActiveRecord::ConnectionAdapters::ConnectionHandler.prepend(ConnectionHandler)
|
26
|
+
ActiveRecord::ConnectionAdapters::ConnectionSpecification.prepend(ConnectionSpecification)
|
28
27
|
end
|
29
28
|
|
30
29
|
def global_config_sequence
|
@@ -89,15 +88,9 @@ module Shackles
|
|
89
88
|
new_handler = @connection_handlers[environment]
|
90
89
|
if !new_handler
|
91
90
|
new_handler = @connection_handlers[environment] = ActiveRecord::ConnectionAdapters::ConnectionHandler.new
|
92
|
-
pools =
|
93
|
-
ActiveRecord::Base.connection_handler.instance_variable_get(:@connection_pools)
|
94
|
-
elsif Rails.version < '4.0'
|
95
|
-
ActiveRecord::Base.connection_handler.instance_variable_get(:@class_to_pool)
|
96
|
-
else
|
97
|
-
ActiveRecord::Base.connection_handler.send(:owner_to_pool)
|
98
|
-
end
|
91
|
+
pools = ActiveRecord::Base.connection_handler.send(:owner_to_pool)
|
99
92
|
pools.each_pair do |model, pool|
|
100
|
-
model = model.constantize
|
93
|
+
model = model.constantize
|
101
94
|
new_handler.establish_connection(model, pool.spec)
|
102
95
|
end
|
103
96
|
end
|
@@ -1,16 +1,13 @@
|
|
1
1
|
module Shackles
|
2
2
|
module ConnectionHandler
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
EOS
|
12
|
-
klass.alias_method_chain "#{method}!".to_sym, :multiple_environments
|
13
|
-
end
|
3
|
+
%w{clear_active_connections clear_reloadable_connections
|
4
|
+
clear_all_connections verify_active_connections }.each do |method|
|
5
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
6
|
+
def #{method}!(super_method: false)
|
7
|
+
return super() if super_method
|
8
|
+
::Shackles.connection_handlers.values.each { |handler| handler.#{method}!(super_method: true) }
|
9
|
+
end
|
10
|
+
RUBY
|
14
11
|
end
|
15
12
|
end
|
16
13
|
end
|
@@ -31,13 +31,8 @@ module Shackles
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
def
|
35
|
-
|
36
|
-
klass.alias_method_chain :initialize, :deep_symbolize
|
37
|
-
end
|
38
|
-
|
39
|
-
def initialize_with_deep_symbolize(config, adapter_method)
|
40
|
-
initialize_without_deep_symbolize(config.deep_symbolize_keys, adapter_method)
|
34
|
+
def initialize(config, adapter_method)
|
35
|
+
super(config.deep_symbolize_keys, adapter_method)
|
41
36
|
end
|
42
37
|
|
43
38
|
def config
|
data/lib/shackles/version.rb
CHANGED
data/spec/shackles_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'active_record'
|
2
|
+
require 'byebug'
|
2
3
|
require 'rails'
|
3
4
|
require 'shackles'
|
4
5
|
|
@@ -10,9 +11,7 @@ RSpec.configure do |config|
|
|
10
11
|
end
|
11
12
|
|
12
13
|
describe Shackles do
|
13
|
-
ConnectionSpecification =
|
14
|
-
ActiveRecord::Base::ConnectionSpecification :
|
15
|
-
ActiveRecord::ConnectionAdapters::ConnectionSpecification
|
14
|
+
ConnectionSpecification = ActiveRecord::ConnectionAdapters::ConnectionSpecification
|
16
15
|
|
17
16
|
it "should allow changing environments" do
|
18
17
|
conf = {
|
metadata
CHANGED
@@ -1,61 +1,103 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shackles
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
- - <
|
19
|
+
version: '4.0'
|
20
|
+
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '5.1'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
30
|
-
- - <
|
29
|
+
version: '4.0'
|
30
|
+
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '5.1'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: appraisal
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: byebug
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
33
61
|
- !ruby/object:Gem::Dependency
|
34
62
|
name: mocha
|
35
63
|
requirement: !ruby/object:Gem::Requirement
|
36
64
|
requirements:
|
37
|
-
- -
|
65
|
+
- - ">="
|
38
66
|
- !ruby/object:Gem::Version
|
39
67
|
version: '0'
|
40
68
|
type: :development
|
41
69
|
prerelease: false
|
42
70
|
version_requirements: !ruby/object:Gem::Requirement
|
43
71
|
requirements:
|
44
|
-
- -
|
72
|
+
- - ">="
|
45
73
|
- !ruby/object:Gem::Version
|
46
74
|
version: '0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rspec
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '2.0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '2.0'
|
47
89
|
- !ruby/object:Gem::Dependency
|
48
90
|
name: sqlite3
|
49
91
|
requirement: !ruby/object:Gem::Requirement
|
50
92
|
requirements:
|
51
|
-
- -
|
93
|
+
- - ">="
|
52
94
|
- !ruby/object:Gem::Version
|
53
95
|
version: '0'
|
54
96
|
type: :development
|
55
97
|
prerelease: false
|
56
98
|
version_requirements: !ruby/object:Gem::Requirement
|
57
99
|
requirements:
|
58
|
-
- -
|
100
|
+
- - ">="
|
59
101
|
- !ruby/object:Gem::Version
|
60
102
|
version: '0'
|
61
103
|
description: Allows multiple environments in database.yml, and dynamically switching
|
@@ -84,17 +126,17 @@ require_paths:
|
|
84
126
|
- lib
|
85
127
|
required_ruby_version: !ruby/object:Gem::Requirement
|
86
128
|
requirements:
|
87
|
-
- -
|
129
|
+
- - ">="
|
88
130
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
131
|
+
version: '2.0'
|
90
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
133
|
requirements:
|
92
|
-
- -
|
134
|
+
- - ">="
|
93
135
|
- !ruby/object:Gem::Version
|
94
136
|
version: '0'
|
95
137
|
requirements: []
|
96
138
|
rubyforge_project:
|
97
|
-
rubygems_version: 2.
|
139
|
+
rubygems_version: 2.5.1
|
98
140
|
signing_key:
|
99
141
|
specification_version: 4
|
100
142
|
summary: ActiveRecord database environment switching for slaves and least-privilege
|