shackles 1.0.7 → 1.0.8
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/README.md +24 -0
- data/lib/shackles.rb +1 -0
- data/lib/shackles/helper_methods.rb +36 -0
- data/lib/shackles/version.rb +1 -1
- metadata +14 -13
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ODdmYzI1NGFhN2ZjNDZjNDdhY2VhMzJkN2VlNjJhZjg0OTBhOTEwNA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 23205d6343336809e09e975d3be07cf530c2d190
|
4
|
+
data.tar.gz: 3f26bddb52cadf78b0ff40e4fa2c458d216d8e00
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MDczNjgwNGJkMDhmYTRhMjk4YjIxZjIyMDY2NTZiYzBjNWYyZmQ2ZWE5ZTQ5
|
11
|
-
MDcxMjYwZDYxZjAwMzg1OWQwYWJkOWRlN2YzMDY0YzZkYTFmNTg=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZDA0ZDJiYmFhZTEwYzA5ZGI0NDkzYzYwMDU3YmUzNTQwNjA0ZjVkMTQ3NWQw
|
14
|
-
YWNmNzk4YWJlZjdkYWUyZmVkM2IxYzdmMTc3YTBiZWYxZDQwN2Y2MGI3YjBl
|
15
|
-
MTIxYTYzZjk5YmVmNmIyYjRhNTNlOTYyNDcyNWFhYmJjZDUxNzE=
|
6
|
+
metadata.gz: e11d0cce5aa33ef195fdc5559f0da888981806fa0b16929100cff327f391e7285c4cf9c421c3c33a79e86e6caaa6ed047ffd6980392cff895e2c397654f4b00c
|
7
|
+
data.tar.gz: e6b6a73d80c93bb76b3f5e9794ecb22d181b30808d90525c5d58f15c2fe42742cb39d73138460eb733c2326dfc3972076b4b83786cb07a5d9a1b610e4d9ff070
|
data/README.md
CHANGED
@@ -49,3 +49,27 @@ if ENV['RAILS_DATABASE_USER']
|
|
49
49
|
Shackles.apply_config!(:username => ENV['RAILS_DATABASE_USER'])
|
50
50
|
end
|
51
51
|
```
|
52
|
+
|
53
|
+
Additionally **in Ruby 2.0+** you can include Shackles::HelperMethods and use several helpers
|
54
|
+
to execute methods on specific environments:
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
class SomeModel
|
58
|
+
include Shackles::HelperMethods
|
59
|
+
|
60
|
+
def expensive_read_only
|
61
|
+
...
|
62
|
+
end
|
63
|
+
shackle_method :expensive_read_only, environment: :slave
|
64
|
+
|
65
|
+
def self.class_level_expensive_read_only
|
66
|
+
...
|
67
|
+
end
|
68
|
+
shackle_class_method :class_level_expensive_read_only, environment: :slave
|
69
|
+
|
70
|
+
# helpers for multiple methods are also available
|
71
|
+
|
72
|
+
shackle_methods :instance_method_foo, :instance_method_bar, environment: :slave
|
73
|
+
shackle_class_methods :class_method_foo, :class_method_bar, environment: :slave
|
74
|
+
end
|
75
|
+
```
|
data/lib/shackles.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
module Shackles
|
2
|
+
module HelperMethods
|
3
|
+
def self.included(base)
|
4
|
+
base.extend(ClassMethods)
|
5
|
+
end
|
6
|
+
|
7
|
+
# see readme for example usage
|
8
|
+
module ClassMethods
|
9
|
+
def shackle_class_methods(*methods, opts)
|
10
|
+
methods.each { |m| shackle_class_method(m, opts) }
|
11
|
+
end
|
12
|
+
|
13
|
+
def shackle_class_method(method, opts)
|
14
|
+
self.singleton_class.shackle_method(method, opts)
|
15
|
+
end
|
16
|
+
|
17
|
+
def shackle_methods(*methods, opts)
|
18
|
+
methods.each { |m| shackle_method(m, opts) }
|
19
|
+
end
|
20
|
+
|
21
|
+
def shackle_method(method, opts)
|
22
|
+
@shackles_module ||= begin
|
23
|
+
m = Module.new
|
24
|
+
self.prepend m
|
25
|
+
m
|
26
|
+
end
|
27
|
+
|
28
|
+
@shackles_module.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
29
|
+
def #{method}(*args)
|
30
|
+
Shackles.activate(#{opts[:environment].inspect}) { super }
|
31
|
+
end
|
32
|
+
RUBY
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/shackles/version.rb
CHANGED
metadata
CHANGED
@@ -1,61 +1,61 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shackles
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.8
|
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: 2015-07-13 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
19
|
version: '3.2'
|
20
|
-
- - <
|
20
|
+
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '4.2'
|
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
29
|
version: '3.2'
|
30
|
-
- - <
|
30
|
+
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '4.2'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: mocha
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- -
|
37
|
+
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '0'
|
40
40
|
type: :development
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- -
|
44
|
+
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: sqlite3
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- -
|
58
|
+
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: '0'
|
61
61
|
description: Allows multiple environments in database.yml, and dynamically switching
|
@@ -70,6 +70,7 @@ files:
|
|
70
70
|
- lib/shackles.rb
|
71
71
|
- lib/shackles/connection_handler.rb
|
72
72
|
- lib/shackles/connection_specification.rb
|
73
|
+
- lib/shackles/helper_methods.rb
|
73
74
|
- lib/shackles/railtie.rb
|
74
75
|
- lib/shackles/version.rb
|
75
76
|
- spec/shackles_spec.rb
|
@@ -83,17 +84,17 @@ require_paths:
|
|
83
84
|
- lib
|
84
85
|
required_ruby_version: !ruby/object:Gem::Requirement
|
85
86
|
requirements:
|
86
|
-
- -
|
87
|
+
- - ">="
|
87
88
|
- !ruby/object:Gem::Version
|
88
89
|
version: '0'
|
89
90
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
91
|
requirements:
|
91
|
-
- -
|
92
|
+
- - ">="
|
92
93
|
- !ruby/object:Gem::Version
|
93
94
|
version: '0'
|
94
95
|
requirements: []
|
95
96
|
rubyforge_project:
|
96
|
-
rubygems_version: 2.
|
97
|
+
rubygems_version: 2.4.5
|
97
98
|
signing_key:
|
98
99
|
specification_version: 4
|
99
100
|
summary: ActiveRecord database environment switching for slaves and least-privilege
|