spicerack 0.19.3 → 0.20.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f2b9e1c6a0d68af5bcb74f6a95ca12fe3392ab112d20bcc9f4a0f3fb046b9c4
|
4
|
+
data.tar.gz: 4da6e9aed7a4c9c364acf35e274dc5a1ca5236497e128e539814ae59e752b8e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d46f73f3fbd5c748d9ccc55177c5b0f6d9003106fc6d046b0cdd1209b781dcd91a64b609fc862b1e4f80498011b91df55101b3cbc9f07b59417b979c3c3b479
|
7
|
+
data.tar.gz: 4d2632089b4d709214911527b4119428f98a0bf3d9ad45445b4ae664c6faa8930b8c1c76a3241b860285c11bd435ddf8f75cb5d0603772d8662ad9eacfa1d624
|
@@ -54,10 +54,27 @@ module Spicerack
|
|
54
54
|
module Configurable
|
55
55
|
delegate :configure, :config_eval, to: :_config_builder
|
56
56
|
|
57
|
+
# @return [Spicerack::Configurable::ConfigReader] A read-only object containing configuration options set inside {#configure}
|
57
58
|
def config
|
58
59
|
_config_builder.reader
|
59
60
|
end
|
60
61
|
|
62
|
+
# Run a callback before the configure block is evaluated.
|
63
|
+
#
|
64
|
+
# Note: if configure is called multiple times for your gem, this block will get run each time!
|
65
|
+
#
|
66
|
+
def before_configure(&block)
|
67
|
+
_config_builder_class.set_callback(:configure, :before, &block)
|
68
|
+
end
|
69
|
+
|
70
|
+
# Run a callback after the configure block is evaluated.
|
71
|
+
#
|
72
|
+
# Note: if configure is called multiple times for your gem, this block will get run each time!
|
73
|
+
#
|
74
|
+
def after_configure(&block)
|
75
|
+
_config_builder_class.set_callback(:configure, :after, &block)
|
76
|
+
end
|
77
|
+
|
61
78
|
private
|
62
79
|
|
63
80
|
def configuration_options(&block)
|
@@ -65,7 +82,13 @@ module Spicerack
|
|
65
82
|
end
|
66
83
|
|
67
84
|
def _config_builder
|
68
|
-
@_config_builder ||=
|
85
|
+
@_config_builder ||= _config_builder_class.new
|
86
|
+
end
|
87
|
+
|
88
|
+
def _config_builder_class
|
89
|
+
@_config_builder_class ||= Class.new(ConfigBuilder).tap do |klass|
|
90
|
+
const_set(:ConfigBuilder, klass)
|
91
|
+
end
|
69
92
|
end
|
70
93
|
end
|
71
94
|
end
|
@@ -1,8 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "technologic"
|
4
|
+
|
5
|
+
require_relative "config_builder/double_configure"
|
6
|
+
|
3
7
|
module Spicerack
|
4
8
|
module Configurable
|
5
9
|
class ConfigBuilder
|
10
|
+
include ActiveSupport::Callbacks
|
11
|
+
define_callbacks :configure
|
12
|
+
|
13
|
+
# This concern uses the configure callback, so it needs to be included after the callback is defined
|
14
|
+
include DoubleConfigure
|
15
|
+
|
6
16
|
delegate :config_eval, to: :reader
|
7
17
|
|
8
18
|
def reader
|
@@ -10,8 +20,10 @@ module Spicerack
|
|
10
20
|
end
|
11
21
|
|
12
22
|
def configure
|
13
|
-
|
14
|
-
|
23
|
+
run_callbacks :configure do
|
24
|
+
mutex.synchronize do
|
25
|
+
yield configuration
|
26
|
+
end
|
15
27
|
end
|
16
28
|
end
|
17
29
|
|
@@ -26,6 +38,8 @@ module Spicerack
|
|
26
38
|
|
27
39
|
private
|
28
40
|
|
41
|
+
attr_writer :configure_called
|
42
|
+
|
29
43
|
def configuration
|
30
44
|
config_class.instance
|
31
45
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "technologic"
|
4
|
+
|
5
|
+
module Spicerack
|
6
|
+
module Configurable
|
7
|
+
module DoubleConfigure
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
|
10
|
+
include Technologic
|
11
|
+
|
12
|
+
included do
|
13
|
+
set_callback :configure, :after, :warn_on_multiple_configure_calls
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def configure_called?
|
19
|
+
@configure_called
|
20
|
+
end
|
21
|
+
|
22
|
+
def warn_on_multiple_configure_calls
|
23
|
+
unless configure_called?
|
24
|
+
@configure_called = true
|
25
|
+
return
|
26
|
+
end
|
27
|
+
|
28
|
+
puts <<~WARNING
|
29
|
+
#{self.class._configurable_module_name}.configure has been called more than once, which can lead to unexpected consequences.
|
30
|
+
For the most predictable behavior, configure should only be called once per library.
|
31
|
+
WARNING
|
32
|
+
end
|
33
|
+
|
34
|
+
module ClassMethods
|
35
|
+
def _configurable_module_name
|
36
|
+
name.gsub("::#{name.demodulize}", "")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/spicerack/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spicerack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.20.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Garside
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2020-01-03 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: around_the_world
|
@@ -19,82 +19,82 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.
|
22
|
+
version: 0.20.0
|
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: 0.
|
29
|
+
version: 0.20.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: redis_hash
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
34
|
- - '='
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: 0.
|
36
|
+
version: 0.20.0
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
41
|
- - '='
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.
|
43
|
+
version: 0.20.0
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
45
|
name: short_circu_it
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
47
47
|
requirements:
|
48
48
|
- - '='
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version: 0.
|
50
|
+
version: 0.20.0
|
51
51
|
type: :runtime
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
55
|
- - '='
|
56
56
|
- !ruby/object:Gem::Version
|
57
|
-
version: 0.
|
57
|
+
version: 0.20.0
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: technologic
|
60
60
|
requirement: !ruby/object:Gem::Requirement
|
61
61
|
requirements:
|
62
62
|
- - '='
|
63
63
|
- !ruby/object:Gem::Version
|
64
|
-
version: 0.
|
64
|
+
version: 0.20.0
|
65
65
|
type: :runtime
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
69
|
- - '='
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version: 0.
|
71
|
+
version: 0.20.0
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: tablesalt
|
74
74
|
requirement: !ruby/object:Gem::Requirement
|
75
75
|
requirements:
|
76
76
|
- - '='
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: 0.
|
78
|
+
version: 0.20.0
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
82
82
|
requirements:
|
83
83
|
- - '='
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: 0.
|
85
|
+
version: 0.20.0
|
86
86
|
- !ruby/object:Gem::Dependency
|
87
87
|
name: bundler
|
88
88
|
requirement: !ruby/object:Gem::Requirement
|
89
89
|
requirements:
|
90
|
-
- - "
|
90
|
+
- - ">="
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: 2.0.1
|
93
93
|
type: :development
|
94
94
|
prerelease: false
|
95
95
|
version_requirements: !ruby/object:Gem::Requirement
|
96
96
|
requirements:
|
97
|
-
- - "
|
97
|
+
- - ">="
|
98
98
|
- !ruby/object:Gem::Version
|
99
99
|
version: 2.0.1
|
100
100
|
- !ruby/object:Gem::Dependency
|
@@ -207,28 +207,28 @@ dependencies:
|
|
207
207
|
requirements:
|
208
208
|
- - '='
|
209
209
|
- !ruby/object:Gem::Version
|
210
|
-
version: 0.
|
210
|
+
version: 0.20.0
|
211
211
|
type: :development
|
212
212
|
prerelease: false
|
213
213
|
version_requirements: !ruby/object:Gem::Requirement
|
214
214
|
requirements:
|
215
215
|
- - '='
|
216
216
|
- !ruby/object:Gem::Version
|
217
|
-
version: 0.
|
217
|
+
version: 0.20.0
|
218
218
|
- !ruby/object:Gem::Dependency
|
219
219
|
name: spicerack-styleguide
|
220
220
|
requirement: !ruby/object:Gem::Requirement
|
221
221
|
requirements:
|
222
222
|
- - '='
|
223
223
|
- !ruby/object:Gem::Version
|
224
|
-
version: 0.
|
224
|
+
version: 0.20.0
|
225
225
|
type: :development
|
226
226
|
prerelease: false
|
227
227
|
version_requirements: !ruby/object:Gem::Requirement
|
228
228
|
requirements:
|
229
229
|
- - '='
|
230
230
|
- !ruby/object:Gem::Version
|
231
|
-
version: 0.
|
231
|
+
version: 0.20.0
|
232
232
|
- !ruby/object:Gem::Dependency
|
233
233
|
name: will_paginate
|
234
234
|
requirement: !ruby/object:Gem::Requirement
|
@@ -295,6 +295,7 @@ files:
|
|
295
295
|
- lib/spicerack/attribute_object.rb
|
296
296
|
- lib/spicerack/configurable.rb
|
297
297
|
- lib/spicerack/configurable/config_builder.rb
|
298
|
+
- lib/spicerack/configurable/config_builder/double_configure.rb
|
298
299
|
- lib/spicerack/configurable/config_delegation.rb
|
299
300
|
- lib/spicerack/configurable/config_object.rb
|
300
301
|
- lib/spicerack/configurable/evaluator.rb
|
@@ -330,6 +331,7 @@ metadata:
|
|
330
331
|
homepage_uri: https://github.com/Freshly/spicerack
|
331
332
|
source_code_uri: https://github.com/Freshly/spicerack
|
332
333
|
changelog_uri: https://github.com/Freshly/spicerack/blob/master/CHANGELOG.md
|
334
|
+
documentation_uri: https://www.rubydoc.info/gems/spicerack
|
333
335
|
post_install_message:
|
334
336
|
rdoc_options: []
|
335
337
|
require_paths:
|
@@ -345,7 +347,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
345
347
|
- !ruby/object:Gem::Version
|
346
348
|
version: '0'
|
347
349
|
requirements: []
|
348
|
-
rubygems_version: 3.0.
|
350
|
+
rubygems_version: 3.0.3
|
349
351
|
signing_key:
|
350
352
|
specification_version: 4
|
351
353
|
summary: A suite of utility gems for Ruby on Rails.
|