Module: Shackles
- Defined in:
- lib/shackles.rb,
lib/shackles/railtie.rb,
lib/shackles/version.rb,
lib/shackles/connection_handler.rb,
lib/shackles/connection_specification.rb
Defined Under Namespace
Modules: ConnectionHandler, ConnectionSpecification
Classes: Railtie
Constant Summary
collapse
- VERSION =
"1.0.2"
Class Method Summary
collapse
Class Method Details
.activate(environment) ⇒ Object
switch environment for the duration of the block will keep the old connections around
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/shackles.rb', line 49
def activate(environment)
environment ||= :master
return yield if environment == self.environment
begin
old_environment = activate!(environment)
yield
ensure
@environment = old_environment
ActiveRecord::Base.connection_handler = ensure_handler unless Rails.env.test?
end
end
|
.activate!(environment) ⇒ Object
for use from script/console ONLY
62
63
64
65
66
67
68
69
|
# File 'lib/shackles.rb', line 62
def activate!(environment)
environment ||= :master
save_handler
old_environment = self.environment
@environment = environment
ActiveRecord::Base.connection_handler = ensure_handler unless Rails.env.test?
old_environment
end
|
.apply_config!(hash) ⇒ Object
for altering other pieces of config (i.e. username) will force a disconnect
32
33
34
35
|
# File 'lib/shackles.rb', line 32
def apply_config!(hash)
global_config.merge!(hash)
bump_sequence
end
|
.bump_sequence ⇒ Object
24
25
26
27
28
|
# File 'lib/shackles.rb', line 24
def bump_sequence
@global_config_sequence ||= 1
@global_config_sequence += 1
ActiveRecord::Base::connection_handler.clear_all_connections!
end
|
.connection_handlers ⇒ Object
42
43
44
45
|
# File 'lib/shackles.rb', line 42
def connection_handlers
save_handler
@connection_handlers
end
|
.environment ⇒ Object
3
4
5
|
# File 'lib/shackles.rb', line 3
def environment
@environment ||= :master
end
|
.global_config ⇒ Object
7
8
9
|
# File 'lib/shackles.rb', line 7
def global_config
@global_config ||= {}
end
|
.global_config_sequence ⇒ Object
20
21
22
|
# File 'lib/shackles.rb', line 20
def global_config_sequence
@global_config_sequence ||= 1
end
|
.initialize! ⇒ Object
12
13
14
15
16
17
18
|
# File 'lib/shackles.rb', line 12
def initialize!
require 'shackles/connection_handler'
require 'shackles/connection_specification'
ActiveRecord::ConnectionAdapters::ConnectionHandler.send(:include, Shackles::ConnectionHandler)
ActiveRecord::Base::ConnectionSpecification.send(:include, Shackles::ConnectionSpecification)
end
|
.remove_config!(key) ⇒ Object
37
38
39
40
|
# File 'lib/shackles.rb', line 37
def remove_config!(key)
global_config.delete(key)
bump_sequence
end
|