sinclair 1.4.0 → 1.4.1
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/README.md +4 -4
- data/lib/sinclair/config_factory.rb +35 -54
- data/lib/sinclair/configurable.rb +46 -12
- data/lib/sinclair/version.rb +1 -1
- data/spec/integration/readme/sinclair/configurable_spec.rb +1 -2
- data/spec/integration/yard/sinclair/config_factory_spec.rb +15 -5
- data/spec/lib/sinclair/configurable_spec.rb +38 -13
- data/spec/support/models/my_config.rb +1 -1
- data/spec/support/shared_examples/config_factory.rb +56 -17
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf2a52c6d33753fa9a52ad79fc4657d9d8573526a471ffb8c4fad386b1063e63
|
4
|
+
data.tar.gz: e219d16240478c36417001ac957437c4bcd2b29b241d51dde3802a0f9114dd32
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d8348d94ceebf9dc9a303f7f9e394ee3e8d42351a5c9b78a503c0882fb65a6afa6054a124cae96d7cc77380c7c239e10774a6dc0b7bb4091ff2de5fb4cc9df6
|
7
|
+
data.tar.gz: 8c6177428b8184b3b949bfa493a17b23b4a401b5767ebd131ffbdf125c03f061e20be249f079194557dcaf429c91f58517ab76b1cea9f7e2635bea55df76276b
|
data/README.md
CHANGED
@@ -14,7 +14,7 @@ methods
|
|
14
14
|
|
15
15
|
Yard Documentation
|
16
16
|
-------------------
|
17
|
-
https://www.rubydoc.info/gems/sinclair/1.4.
|
17
|
+
https://www.rubydoc.info/gems/sinclair/1.4.1
|
18
18
|
|
19
19
|
Installation
|
20
20
|
---------------
|
@@ -308,7 +308,8 @@ Configurable is a module that, when used, can add configurations
|
|
308
308
|
to your classes/modules.
|
309
309
|
|
310
310
|
Configurations are read-only objects that can only be set using
|
311
|
-
the `configurable#configure` method
|
311
|
+
the `configurable#configure` method which accepts a block or
|
312
|
+
hash
|
312
313
|
|
313
314
|
```ruby
|
314
315
|
module MyConfigurable
|
@@ -318,9 +319,8 @@ the `configurable#configure` method
|
|
318
319
|
configurable_with :host, port: 80
|
319
320
|
end
|
320
321
|
|
321
|
-
MyConfigurable.configure do |config|
|
322
|
+
MyConfigurable.configure(port: 5555) do |config|
|
322
323
|
config.host 'interstella.art'
|
323
|
-
config.port 5555
|
324
324
|
end
|
325
325
|
|
326
326
|
MyConfigurable.config.host # returns 'interstella.art'
|
@@ -32,45 +32,6 @@ class Sinclair
|
|
32
32
|
warn CONFIG_CLASS_WARNING
|
33
33
|
end
|
34
34
|
|
35
|
-
# @api public
|
36
|
-
#
|
37
|
-
# Returns current instance of config
|
38
|
-
#
|
39
|
-
# the method returns the same instance until +reset_config+
|
40
|
-
# is called
|
41
|
-
#
|
42
|
-
# @return [Config,Object] the instance of given
|
43
|
-
# config_class. by default, this returns
|
44
|
-
# +Class.new(Config).new+
|
45
|
-
#
|
46
|
-
# @see #reset_config
|
47
|
-
#
|
48
|
-
# @example (see ConfigFactory)
|
49
|
-
def config
|
50
|
-
@config ||= config_class.new
|
51
|
-
end
|
52
|
-
|
53
|
-
# @api public
|
54
|
-
#
|
55
|
-
# Cleans the current config instance
|
56
|
-
#
|
57
|
-
# After cleaning it, {#config} will generate a new
|
58
|
-
# instance
|
59
|
-
#
|
60
|
-
# @return [NilClass]
|
61
|
-
#
|
62
|
-
# @example
|
63
|
-
# factory = Sinclair::ConfigFactory.new
|
64
|
-
#
|
65
|
-
# config = factory.config
|
66
|
-
#
|
67
|
-
# factory.reset_config
|
68
|
-
#
|
69
|
-
# factory.config == config # returns false
|
70
|
-
def reset_config
|
71
|
-
@config = nil
|
72
|
-
end
|
73
|
-
|
74
35
|
# Adds possible configurations
|
75
36
|
#
|
76
37
|
# It change the configuration class adding methods
|
@@ -102,39 +63,59 @@ class Sinclair
|
|
102
63
|
config_attributes.concat(builder.config_names.map(&:to_sym))
|
103
64
|
end
|
104
65
|
|
105
|
-
#
|
66
|
+
# (see Configurable#config)
|
106
67
|
#
|
107
|
-
#
|
68
|
+
# @see #reset_config
|
108
69
|
#
|
109
|
-
#
|
110
|
-
|
111
|
-
|
70
|
+
# @example (see ConfigFactory)
|
71
|
+
def config
|
72
|
+
@config ||= config_class.new
|
73
|
+
end
|
74
|
+
|
75
|
+
# (see Configurable#reset_config)
|
112
76
|
#
|
113
|
-
# @
|
114
|
-
#
|
115
|
-
# then set as instance variables of the config
|
77
|
+
# @example
|
78
|
+
# factory = Sinclair::ConfigFactory.new
|
116
79
|
#
|
117
|
-
#
|
80
|
+
# config = factory.config
|
81
|
+
#
|
82
|
+
# factory.reset_config
|
83
|
+
#
|
84
|
+
# factory.config == config # returns false
|
85
|
+
def reset_config
|
86
|
+
@config = nil
|
87
|
+
end
|
88
|
+
|
89
|
+
# (see Configurable#configure)
|
118
90
|
#
|
119
91
|
# @example Setting name on config
|
120
92
|
# class MyConfig
|
121
93
|
# extend Sinclair::ConfigClass
|
122
94
|
#
|
123
|
-
# attr_reader :name
|
95
|
+
# attr_reader :name, :email
|
124
96
|
# end
|
125
97
|
#
|
126
98
|
# factory = Sinclair::ConfigFactory.new(
|
127
99
|
# config_class: MyConfig,
|
128
|
-
# config_attributes: [
|
100
|
+
# config_attributes: %i[name email]
|
129
101
|
# )
|
130
102
|
#
|
131
103
|
# config = factory.config
|
132
104
|
#
|
133
|
-
# factory.configure
|
105
|
+
# factory.configure(email: 'john@server.com') do
|
106
|
+
# name 'John'
|
107
|
+
# end
|
134
108
|
#
|
135
|
-
# config.name
|
136
|
-
|
137
|
-
|
109
|
+
# config.name # returns 'John'
|
110
|
+
# config.email # returns 'john@server.com'
|
111
|
+
def configure(config_hash = {}, &block)
|
112
|
+
config_builder.instance_eval(&block) if block
|
113
|
+
|
114
|
+
config_builder.instance_eval do
|
115
|
+
config_hash.each do |key, value|
|
116
|
+
public_send(key, value)
|
117
|
+
end
|
118
|
+
end
|
138
119
|
end
|
139
120
|
|
140
121
|
# Returns a new instance of ConfigFactory
|
@@ -25,23 +25,57 @@ class Sinclair
|
|
25
25
|
"configurable_with.\n" \
|
26
26
|
"In future releases this will be enforced.\n" \
|
27
27
|
'see more on https://github.com/darthjee/sinclair/blob/master/WARNINGS.md#usage-of-custom-config-classes'
|
28
|
-
|
28
|
+
|
29
|
+
# @method config
|
30
|
+
#
|
31
|
+
# @api public
|
32
|
+
#
|
33
|
+
# Returns current instance of config
|
34
|
+
#
|
35
|
+
# the method returns the same instance until +reset_config+
|
36
|
+
# is called
|
37
|
+
#
|
38
|
+
# @return [Config,Object] the instance of given
|
39
|
+
# config_class. by default, this returns
|
40
|
+
# +Class.new(Config).new+
|
41
|
+
#
|
42
|
+
# @see #reset_config
|
29
43
|
# @see ConfigFactory#config
|
30
|
-
def config
|
31
|
-
config_factory.config
|
32
|
-
end
|
33
44
|
|
34
|
-
#
|
45
|
+
# @method reset_config
|
46
|
+
#
|
47
|
+
# @api public
|
48
|
+
#
|
49
|
+
# Cleans the current config instance
|
50
|
+
#
|
51
|
+
# After cleaning it, {#config} will generate a new
|
52
|
+
# instance
|
53
|
+
#
|
54
|
+
# @return [NilClass]
|
55
|
+
#
|
35
56
|
# @see ConfigFactory#reset_config
|
36
|
-
def reset_config
|
37
|
-
config_factory.reset_config
|
38
|
-
end
|
39
57
|
|
40
|
-
# (
|
58
|
+
# @method configure(config_hash = {}, &block)
|
59
|
+
#
|
60
|
+
# @api public
|
61
|
+
#
|
62
|
+
# Set the values in the config
|
63
|
+
#
|
64
|
+
# The block given is evaluated by the {ConfigBuilder}
|
65
|
+
# where each method missed will be used to set a variable
|
66
|
+
# in the config
|
67
|
+
#
|
68
|
+
# @param config_hash [Hash] hash with keys and values for
|
69
|
+
# the configuration
|
70
|
+
#
|
71
|
+
# @yield [ConfigBuilder] methods called in the block
|
72
|
+
# that are not present in {ConfigBuilder} are
|
73
|
+
# then set as instance variables of the config
|
74
|
+
#
|
75
|
+
# @return [Object] the result of the block
|
76
|
+
#
|
41
77
|
# @see ConfigFactory#configure
|
42
|
-
|
43
|
-
config_factory.configure(&block)
|
44
|
-
end
|
78
|
+
delegate :config, :reset_config, :configure, to: :config_factory
|
45
79
|
|
46
80
|
protected
|
47
81
|
|
data/lib/sinclair/version.rb
CHANGED
@@ -6,9 +6,8 @@ describe Sinclair::Configurable do
|
|
6
6
|
describe 'README' do
|
7
7
|
describe 'Configured with' do
|
8
8
|
before do
|
9
|
-
MyConfigurable.configure do |config|
|
9
|
+
MyConfigurable.configure(port: 5555) do |config|
|
10
10
|
config.host 'interstella.art'
|
11
|
-
config.port 5555
|
12
11
|
end
|
13
12
|
end
|
14
13
|
|
@@ -68,12 +68,22 @@ describe Sinclair::ConfigFactory do
|
|
68
68
|
end
|
69
69
|
|
70
70
|
describe '#configure' do
|
71
|
-
let(:config_class)
|
71
|
+
let(:config_class) { MyConfig }
|
72
|
+
let(:email) { 'john@server.com' }
|
73
|
+
let(:config_attributes) { %i[name email] }
|
72
74
|
|
73
|
-
|
74
|
-
|
75
|
-
.
|
76
|
-
|
75
|
+
describe 'Setting name with hash and block' do
|
76
|
+
it 'sets name on config' do
|
77
|
+
expect { factory.configure(email: email) { name 'John' } }
|
78
|
+
.to change(config, :name)
|
79
|
+
.from(nil).to('John')
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'sets email on config' do
|
83
|
+
expect { factory.configure(email: email) { name 'John' } }
|
84
|
+
.to change(config, :email)
|
85
|
+
.from(nil).to(email)
|
86
|
+
end
|
77
87
|
end
|
78
88
|
end
|
79
89
|
end
|
@@ -165,24 +165,49 @@ describe Sinclair::Configurable do
|
|
165
165
|
describe '.configure' do
|
166
166
|
let(:config) { configurable.config }
|
167
167
|
|
168
|
-
|
169
|
-
expect { configurable.configure { |c| c.user 'Bob' } }
|
170
|
-
.to change(config, :user)
|
171
|
-
.from(nil).to('Bob')
|
172
|
-
end
|
173
|
-
|
174
|
-
context 'when it was defined using string' do
|
168
|
+
context 'when configuring using a block' do
|
175
169
|
it do
|
176
|
-
expect { configurable.configure { |c| c.
|
177
|
-
.to change(config, :
|
178
|
-
.from(nil).to('
|
170
|
+
expect { configurable.configure { |c| c.user 'Bob' } }
|
171
|
+
.to change(config, :user)
|
172
|
+
.from(nil).to('Bob')
|
173
|
+
end
|
174
|
+
|
175
|
+
context 'when it was defined using string' do
|
176
|
+
it do
|
177
|
+
expect { configurable.configure { |c| c.password '123456' } }
|
178
|
+
.to change(config, :password)
|
179
|
+
.from(nil).to('123456')
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
context 'when calling a method that was not defined' do
|
184
|
+
it do
|
185
|
+
expect { configurable.configure { |c| c.nope '123456' } }
|
186
|
+
.to raise_error(NoMethodError)
|
187
|
+
end
|
179
188
|
end
|
180
189
|
end
|
181
190
|
|
182
|
-
context 'when
|
191
|
+
context 'when configuring using a hash' do
|
183
192
|
it do
|
184
|
-
expect { configurable.configure
|
185
|
-
.to
|
193
|
+
expect { configurable.configure(user: 'Bob') }
|
194
|
+
.to change(config, :user)
|
195
|
+
.from(nil).to('Bob')
|
196
|
+
end
|
197
|
+
|
198
|
+
context 'when it was defined using string' do
|
199
|
+
it do
|
200
|
+
expect { configurable.configure(password: '123456') }
|
201
|
+
.to change(config, :password)
|
202
|
+
.from(nil).to('123456')
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
context 'when calling a method that was not defined' do
|
207
|
+
it do
|
208
|
+
expect { configurable.configure(nope: '123456') }
|
209
|
+
.to raise_error(NoMethodError)
|
210
|
+
end
|
186
211
|
end
|
187
212
|
end
|
188
213
|
|
@@ -66,32 +66,71 @@ shared_examples 'a config factory adding config' do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
shared_examples 'configure a config' do
|
69
|
-
|
70
|
-
|
71
|
-
.
|
72
|
-
|
69
|
+
context 'when a block is given' do
|
70
|
+
it 'sets value on config' do
|
71
|
+
expect { factory.configure { |c| c.user 'Bob' } }
|
72
|
+
.to change(config, :user).to('Bob')
|
73
|
+
end
|
73
74
|
|
74
|
-
|
75
|
-
|
75
|
+
context 'when re-seting the value to nil' do
|
76
|
+
before { factory.configure { |c| c.user 'Bob' } }
|
77
|
+
|
78
|
+
it 'sets nil value on config' do
|
79
|
+
expect { factory.configure { |c| c.user nil } }
|
80
|
+
.to change(config, :user).to(nil)
|
81
|
+
end
|
82
|
+
end
|
76
83
|
|
77
|
-
|
78
|
-
|
79
|
-
.
|
84
|
+
context 'when calling a method that was not defined' do
|
85
|
+
it do
|
86
|
+
expect { factory.configure { |c| c.nope '123456' } }
|
87
|
+
.to raise_error(NoMethodError)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
context 'when it was defined using string' do
|
92
|
+
it do
|
93
|
+
expect { factory.configure { |c| c.password '123456' } }
|
94
|
+
.to change(config, :password)
|
95
|
+
.to('123456')
|
96
|
+
end
|
80
97
|
end
|
81
98
|
end
|
82
99
|
|
83
|
-
context 'when
|
100
|
+
context 'when no block nor hash is given' do
|
84
101
|
it do
|
85
|
-
expect { factory.configure
|
86
|
-
.to raise_error(NoMethodError)
|
102
|
+
expect { factory.configure }.not_to raise_error
|
87
103
|
end
|
88
104
|
end
|
89
105
|
|
90
|
-
context 'when
|
91
|
-
it do
|
92
|
-
expect { factory.configure
|
93
|
-
.to change(config, :
|
94
|
-
|
106
|
+
context 'when a hash is given' do
|
107
|
+
it 'sets value on config' do
|
108
|
+
expect { factory.configure(user: 'Bob') }
|
109
|
+
.to change(config, :user).to('Bob')
|
110
|
+
end
|
111
|
+
|
112
|
+
context 'when re-seting the value to nil' do
|
113
|
+
before { factory.configure(user: 'Bob') }
|
114
|
+
|
115
|
+
it 'sets nil value on config' do
|
116
|
+
expect { factory.configure(user: nil) }
|
117
|
+
.to change(config, :user).to(nil)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context 'when setting a variable that was not defined' do
|
122
|
+
it do
|
123
|
+
expect { factory.configure(nope: '123456') }
|
124
|
+
.to raise_error(NoMethodError)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
context 'when it was defined using string' do
|
129
|
+
it do
|
130
|
+
expect { factory.configure(password: '123456') }
|
131
|
+
.to change(config, :password)
|
132
|
+
.to('123456')
|
133
|
+
end
|
95
134
|
end
|
96
135
|
end
|
97
136
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinclair
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DarthJee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|