sinclair 1.4.1 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +5 -3
  3. data/.rubocop.yml +20 -4
  4. data/Dockerfile +8 -4
  5. data/README.md +1 -1
  6. data/config/yardstick.yml +10 -35
  7. data/lib/sinclair.rb +87 -18
  8. data/lib/sinclair/config.rb +3 -0
  9. data/lib/sinclair/config/methods_builder.rb +15 -1
  10. data/lib/sinclair/config_builder.rb +1 -0
  11. data/lib/sinclair/config_class.rb +1 -0
  12. data/lib/sinclair/config_factory.rb +15 -0
  13. data/lib/sinclair/configurable.rb +1 -0
  14. data/lib/sinclair/matchers.rb +20 -6
  15. data/lib/sinclair/matchers/add_class_method.rb +56 -0
  16. data/lib/sinclair/matchers/add_class_method_to.rb +98 -0
  17. data/lib/sinclair/matchers/add_instance_method.rb +85 -0
  18. data/lib/sinclair/matchers/add_instance_method_to.rb +119 -0
  19. data/lib/sinclair/matchers/add_method.rb +11 -73
  20. data/lib/sinclair/matchers/add_method_to.rb +13 -111
  21. data/lib/sinclair/method_definition.rb +18 -58
  22. data/lib/sinclair/method_definition/block_definition.rb +37 -6
  23. data/lib/sinclair/method_definition/class_block_definition.rb +22 -0
  24. data/lib/sinclair/method_definition/class_method_definition.rb +50 -0
  25. data/lib/sinclair/method_definition/class_string_definition.rb +24 -0
  26. data/lib/sinclair/method_definition/instance_block_definition.rb +22 -0
  27. data/lib/sinclair/method_definition/instance_method_definition.rb +48 -0
  28. data/lib/sinclair/method_definition/instance_string_definition.rb +24 -0
  29. data/lib/sinclair/method_definition/string_definition.rb +39 -5
  30. data/lib/sinclair/method_definitions.rb +28 -0
  31. data/lib/sinclair/options_parser.rb +5 -0
  32. data/lib/sinclair/version.rb +1 -1
  33. data/sinclair.gemspec +16 -10
  34. data/spec/integration/yard/sinclair/matchers/add_class_method_spec.rb +23 -0
  35. data/spec/integration/yard/sinclair/matchers/add_class_method_to_spec.rb +19 -0
  36. data/spec/integration/yard/sinclair/matchers/{add_method_spec.rb → add_instance_method_spec.rb} +3 -3
  37. data/spec/integration/yard/sinclair/matchers/{add_method_to_spec.rb → add_instance_method_to_spec.rb} +1 -1
  38. data/spec/integration/yard/sinclair/method_definition/class_block_definition_spec.rb +34 -0
  39. data/spec/integration/yard/sinclair/method_definition/class_method_definition_spec.rb +28 -0
  40. data/spec/integration/yard/sinclair/method_definition/class_string_definition_spec.rb +23 -0
  41. data/spec/integration/yard/sinclair/method_definition/{block_definition_spec.rb → instance_block_definition_spec.rb} +2 -2
  42. data/spec/integration/yard/sinclair/method_definition/instance_method_definition_spec.rb +35 -0
  43. data/spec/integration/yard/sinclair/method_definition/{string_definition_spec.rb → instance_string_definition_spec.rb} +1 -1
  44. data/spec/integration/yard/sinclair_spec.rb +32 -5
  45. data/spec/lib/sinclair/matchers/add_class_method_spec.rb +36 -0
  46. data/spec/lib/sinclair/matchers/add_class_method_to_spec.rb +77 -0
  47. data/spec/lib/sinclair/matchers/{add_method_spec.rb → add_instance_method_spec.rb} +11 -4
  48. data/spec/lib/sinclair/matchers/{add_method_to_spec.rb → add_instance_method_to_spec.rb} +2 -2
  49. data/spec/lib/sinclair/matchers_spec.rb +17 -2
  50. data/spec/lib/sinclair/method_definition/class_block_definition_spec.rb +29 -0
  51. data/spec/lib/sinclair/method_definition/class_string_definition_spec.rb +27 -0
  52. data/spec/lib/sinclair/method_definition/{block_definition_spec.rb → instance_block_definition_spec.rb} +2 -2
  53. data/spec/lib/sinclair/method_definition/{string_definition_spec.rb → instance_string_definition_spec.rb} +2 -2
  54. data/spec/lib/sinclair/method_definition_spec.rb +52 -6
  55. data/spec/lib/sinclair_spec.rb +83 -0
  56. data/spec/support/models/dummy_class_builder.rb +11 -0
  57. data/spec/support/shared_examples/class_method_definition.rb +96 -0
  58. data/spec/support/shared_examples/{method_definition.rb → instance_method_definition.rb} +0 -0
  59. metadata +148 -45
  60. data/scripts/check_readme.sh +0 -6
  61. data/scripts/rubycritic.sh +0 -10
  62. data/spec/integration/sinclair/matchers_spec.rb +0 -99
  63. data/spec/integration/yard/sinclair/method_definition_spec.rb +0 -56
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf2a52c6d33753fa9a52ad79fc4657d9d8573526a471ffb8c4fad386b1063e63
4
- data.tar.gz: e219d16240478c36417001ac957437c4bcd2b29b241d51dde3802a0f9114dd32
3
+ metadata.gz: c859413d4a0550d19e5578915d18a1a9e2c1fd3759af5445de6599eb604e56ab
4
+ data.tar.gz: 495fe0c0dc55e043647887fb1637a3149647deef58293ef18d1df30b4fd05196
5
5
  SHA512:
6
- metadata.gz: 1d8348d94ceebf9dc9a303f7f9e394ee3e8d42351a5c9b78a503c0882fb65a6afa6054a124cae96d7cc77380c7c239e10774a6dc0b7bb4091ff2de5fb4cc9df6
7
- data.tar.gz: 8c6177428b8184b3b949bfa493a17b23b4a401b5767ebd131ffbdf125c03f061e20be249f079194557dcaf429c91f58517ab76b1cea9f7e2635bea55df76276b
6
+ metadata.gz: 61712ff93d7157675c92971f88b07ac8e6a19004ee2fa077d7f60ebaf9dd98118f1af2ff7730d983c0c705a7cd5e120f996b9baabf44bbcff0ccba93a9321f6a
7
+ data.tar.gz: 0d3ec3b940c71b9a02599184e9d2b9f8afc23cea563794bc903940fbf6f0bb84bbf203b87f57c02d6bab7907cc845c6aefd93649be92d99e157e4249427629e6
@@ -2,7 +2,9 @@ version: 2
2
2
  jobs:
3
3
  build:
4
4
  docker:
5
- - image: darthjee/circleci_ruby_gems:0.1.0
5
+ - image: darthjee/circleci_ruby_gems:0.2.1
6
+ environment:
7
+ PROJECT: sinclair
6
8
  steps:
7
9
  - checkout
8
10
  - run:
@@ -25,7 +27,7 @@ jobs:
25
27
  command: bundle exec rake verify_measurements
26
28
  - run:
27
29
  name: Check version documentation
28
- command: scripts/check_readme.sh
30
+ command: check_readme.sh
29
31
  - run:
30
32
  name: Rubycritcs check
31
- command: scripts/rubycritic.sh
33
+ command: rubycritic.sh
@@ -8,6 +8,7 @@ Metrics/BlockLength:
8
8
  Exclude:
9
9
  - 'spec/**/*_spec.rb'
10
10
  - 'spec/support/**/*.rb'
11
+ - '*.gemspec'
11
12
 
12
13
  Metrics/LineLength:
13
14
  Max: 100
@@ -22,17 +23,32 @@ RSpec/AlignLeftLetBrace:
22
23
  RSpec/InstanceVariable:
23
24
  Exclude:
24
25
  - spec/integration/yard/sinclair/method_definition_spec.rb
25
- - spec/integration/yard/sinclair/method_definition/block_definition_spec.rb
26
- - spec/lib/sinclair/method_definition/block_definition_spec.rb
26
+ - spec/integration/yard/sinclair/method_definition/instance_block_definition_spec.rb
27
+ - spec/integration/yard/sinclair/method_definition/instance_method_definition_spec.rb
28
+ - spec/integration/yard/sinclair/method_definition/class_block_definition_spec.rb
29
+ - spec/integration/yard/sinclair/method_definition/class_method_definition_spec.rb
30
+ - spec/lib/sinclair/method_definition/instance_block_definition_spec.rb
31
+ - spec/lib/sinclair/method_definition/instance_method_definition_spec.rb
32
+ - spec/lib/sinclair/method_definition/class_block_definition_spec.rb
33
+ - spec/lib/sinclair/method_definition/class_method_definition_spec.rb
27
34
  - spec/lib/sinclair/method_definition_spec.rb
35
+ - spec/lib/sinclair/method_definition/block_definition_spec.rb
36
+ - spec/integration/yard/sinclair/method_definition/block_definition_spec.rb
37
+
28
38
 
29
39
  RSpec/MultipleExpectations:
30
40
  Exclude:
31
41
  - spec/integration/yard/sinclair/method_definition_spec.rb
32
- - spec/integration/yard/sinclair/method_definition/block_definition_spec.rb
33
- - spec/integration/yard/sinclair/method_definition/string_definition_spec.rb
42
+ - spec/integration/yard/sinclair/method_definition/instance_block_definition_spec.rb
43
+ - spec/integration/yard/sinclair/method_definition/instance_string_definition_spec.rb
44
+ - spec/integration/yard/sinclair/method_definition/instance_method_definition_spec.rb
45
+ - spec/integration/yard/sinclair/method_definition/class_block_definition_spec.rb
46
+ - spec/integration/yard/sinclair/method_definition/class_string_definition_spec.rb
47
+ - spec/integration/yard/sinclair/method_definition/class_method_definition_spec.rb
34
48
  - spec/lib/sinclair_spec.rb
35
49
  - spec/integration/readme/my_model_spec.rb
50
+ - spec/integration/yard/sinclair/method_definition/block_definition_spec.rb
51
+ - spec/integration/yard/sinclair/method_definition/string_definition_spec.rb
36
52
 
37
53
  RSpec/NestedGroups:
38
54
  Max: 4
data/Dockerfile CHANGED
@@ -1,19 +1,20 @@
1
- FROM darthjee/ruby_gems:0.1.0 as base
2
- FROM darthjee/scripts:0.0.2 as scripts
1
+ FROM darthjee/ruby_gems:0.2.1 as base
2
+ FROM darthjee/scripts:0.1.0 as scripts
3
3
 
4
4
  ######################################
5
5
 
6
6
  FROM base as builder
7
7
 
8
8
  COPY --chown=app ./ /home/app/app/
9
- COPY --chown=app:app --from=scripts /home/scripts/ ./
9
+ COPY --chown=app:app --from=scripts /home/scripts/builder/bundle_builder.sh /usr/local/sbin/
10
10
 
11
11
  ENV HOME_DIR /home/app
12
- RUN /bin/bash bundle_builder.sh
12
+ RUN bundle_builder.sh
13
13
 
14
14
  #######################
15
15
  #FINAL IMAGE
16
16
  FROM base
17
+ RUN mkdir lib/sinclair -p
17
18
 
18
19
  USER root
19
20
 
@@ -23,4 +24,7 @@ COPY --chown=app:app --from=builder /home/app/bundle/specifications /usr/local/b
23
24
  COPY --chown=app:app --from=builder /home/app/bundle/bin /usr/local/bundle/bin
24
25
  COPY --chown=app:app --from=builder /home/app/bundle/extensions /usr/local/bundle/extensions
25
26
 
27
+ COPY --chown=app ./*.gemspec ./Gemfile* /home/app/app/
28
+ COPY --chown=app ./lib/sinclair/version.rb /home/app/app/lib/sinclair/
26
29
  USER app
30
+ RUN bundle install
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.1
17
+ https://www.rubydoc.info/gems/sinclair/1.4.2
18
18
 
19
19
  Installation
20
20
  ---------------
@@ -16,53 +16,28 @@ rules:
16
16
  ExampleTag:
17
17
  enabled: true
18
18
  exclude:
19
- - Sinclair::OptionsParser#options
20
- - Sinclair::OptionsParser#options_object
21
19
  - Sinclair::Configurable#config
22
20
  - Sinclair::Configurable#reset_config
23
21
  - Sinclair::Configurable#configure
22
+ - Sinclair::OptionsParser#options
23
+ - Sinclair::OptionsParser#options_object
24
24
  ReturnTag:
25
25
  enabled: true
26
26
  exclude:
27
- - Sinclair#klass
28
- - Sinclair::Matchers::AddMethod#method
29
- - Sinclair::Matchers::AddMethodTo#method
30
- - Sinclair::Matchers::AddMethodTo#instance
31
- - Sinclair::MethodDefinition#name
32
- - Sinclair::MethodDefinition#code
33
- - Sinclair::MethodDefinition#block
34
- - Sinclair::OptionsParser#options
35
- - Sinclair::OptionsParser#options_object
36
- - Sinclair::Matchers::AddMethodTo#raise_block_syntax_error
37
- - Sinclair::ConfigFactory#initialize
38
- - Sinclair::ConfigFactory#config_class
39
- - Sinclair::ConfigFactory#config_attributes
40
- - Sinclair::Config::MethodsBuilder#names
41
- - Sinclair::Config::MethodsBuilder#defaults
42
- - Sinclair::Configurable#config
43
- - Sinclair::Configurable#reset_config
44
- - Sinclair::Configurable#configure
27
+ - Sinclair::Matchers::AddClassMethodTo#raise_block_syntax_error
28
+ - Sinclair::Matchers::AddInstanceMethodTo#raise_block_syntax_error
45
29
  Summary::Presence:
46
30
  enabled: true
47
31
  exclude:
48
- - Sinclair#klass
49
- - Sinclair::Matchers::AddMethod#method
50
- - Sinclair::Matchers::AddMethodTo#method
51
- - Sinclair::Matchers::AddMethodTo#instance
32
+ - Sinclair::Config::MethodsBuilder#initialize
33
+ - Sinclair::ConfigFactory#initialize
34
+ - Sinclair::Matchers::AddClassMethodTo#initialize
35
+ - Sinclair::Matchers::AddInstanceMethodTo#instance
36
+ - Sinclair::Matchers::AddMethod#initialize
37
+ - Sinclair::Matchers::AddMethodTo#initialize
52
38
  - Sinclair::MethodDefinition#initialize
53
- - Sinclair::MethodDefinition#name
54
- - Sinclair::MethodDefinition#code
55
- - Sinclair::MethodDefinition#block
56
39
  - Sinclair::MethodDefinition::BlockDefinition#initialize
57
40
  - Sinclair::MethodDefinition::StringDefinition#initialize
58
- - Sinclair::OptionsParser#options
59
- - Sinclair::OptionsParser#options_object
60
- - Sinclair::ConfigFactory#initialize
61
- - Sinclair::ConfigFactory#config_class
62
- - Sinclair::ConfigFactory#config_attributes
63
- - Sinclair::Config::MethodsBuilder#initialize
64
- - Sinclair::Config::MethodsBuilder#names
65
- - Sinclair::Config::MethodsBuilder#defaults
66
41
  Summary::Length:
67
42
  enabled: true
68
43
  exclude: []
@@ -82,19 +82,20 @@ require 'active_support/all'
82
82
  class Sinclair
83
83
  require 'sinclair/options_parser'
84
84
 
85
- autoload :VERSION, 'sinclair/version'
86
- autoload :MethodDefinition, 'sinclair/method_definition'
87
- autoload :Config, 'sinclair/config'
88
- autoload :ConfigBuilder, 'sinclair/config_builder'
89
- autoload :ConfigClass, 'sinclair/config_class'
90
- autoload :ConfigFactory, 'sinclair/config_factory'
91
- autoload :Configurable, 'sinclair/configurable'
85
+ autoload :VERSION, 'sinclair/version'
86
+ autoload :Config, 'sinclair/config'
87
+ autoload :ConfigBuilder, 'sinclair/config_builder'
88
+ autoload :ConfigClass, 'sinclair/config_class'
89
+ autoload :ConfigFactory, 'sinclair/config_factory'
90
+ autoload :Configurable, 'sinclair/configurable'
91
+ autoload :MethodDefinition, 'sinclair/method_definition'
92
+ autoload :MethodDefinitions, 'sinclair/method_definitions'
92
93
 
93
94
  include OptionsParser
94
95
 
95
96
  # Returns a new instance of Sinclair
96
97
  #
97
- # @param klass [Class] to receive the methods
98
+ # @param klass [Class] Class that will receive the methods
98
99
  # @param options [Hash] open hash options to be used by builders inheriting from Sinclair
99
100
  # through the Sinclair::OptionsParser concern
100
101
  #
@@ -171,12 +172,19 @@ class Sinclair
171
172
  end
172
173
  end
173
174
 
174
- # add a method to the method list to be created on klass
175
+ # Add a method to the method list to be created on klass instances
175
176
  #
176
- # @overload add_method(name, code)
177
- # @param name [String,Symbol] name of the method to be added
177
+ # @param name [String,Symbol] name of the method to be added
178
+ # @param options [Hash] Options of construction
179
+ # @option options cached [Boolean] Flag telling to create
180
+ # a method with cache
181
+ #
182
+ # @overload add_method(name, code, **options)
178
183
  # @param code [String] code to be evaluated when the method is ran
179
184
  #
185
+ # @overload add_method(name, **options, &block)
186
+ # @param block [Proc] block to be ran as method
187
+ #
180
188
  # @example Using string code
181
189
  # class Person
182
190
  # attr_reader :first_name, :last_name
@@ -193,19 +201,75 @@ class Sinclair
193
201
  #
194
202
  # Person.new('john', 'wick').full_name # returns 'john wick'
195
203
  #
196
- # @overload add_method(name, &block)
197
- # @param name [String,Symbol] name of the method to be added
198
- # @param block [Proc] block to be ran as method
199
- #
200
204
  # @example Using block
205
+ # class Person
206
+ # attr_reader :first_name, :last_name
207
+ #
208
+ # def initialize(first_name, last_name)
209
+ # @first_name = first_name
210
+ # @last_name = last_name
211
+ # end
212
+ # end
213
+ #
201
214
  # builder = Sinclair.new(Person)
215
+ # builder.add_method(:full_name, '[first_name, last_name].join(" ")')
202
216
  # builder.add_method(:bond_name) { "#{last_name}, #{full_name}" }
203
217
  # builder.build
204
218
  #
205
219
  # Person.new('john', 'wick').bond_name # returns 'wick, john wick'
206
220
  # @return [Array<MethodDefinition>]
207
221
  def add_method(name, code = nil, **options, &block)
208
- definitions << MethodDefinition.from(name, code, **options, &block)
222
+ definitions.add(
223
+ MethodDefinition::InstanceMethodDefinition,
224
+ name, code, **options, &block
225
+ )
226
+ end
227
+
228
+ # Add a method to the method list to be created on klass
229
+ #
230
+ # @param name [String,Symbol] name of the method to be added
231
+ # @param options [Hash] Options of construction
232
+ # @option options cached [Boolean] Flag telling to create
233
+ # a method with cache
234
+ #
235
+ # @overload add_class_method(name, code, **options)
236
+ # @param code [String] code to be evaluated when the method is ran
237
+ #
238
+ # @overload add_class_method(name, **options, &block)
239
+ # @param block [Proc] block to be ran as method
240
+ #
241
+ # @example
242
+ # class EnvFetcher
243
+ # end
244
+ #
245
+ # builder = Sinclair.new(EnvFetcher)
246
+ #
247
+ # builder.add_class_method(:hostname, 'ENV["HOSTNAME"]')
248
+ # builder.build
249
+ #
250
+ # ENV['HOSTNAME'] = 'myhost'
251
+ #
252
+ # env_fetcher.hostname # returns 'myhost'
253
+ #
254
+ # @example
255
+ # class EnvFetcher
256
+ # end
257
+ #
258
+ # builder = Sinclair.new(EnvFetcher)
259
+ #
260
+ # builder.add_class_method(:timeout) { ENV['TIMEOUT'] }
261
+ # builder.build
262
+ #
263
+ # ENV['TIMEOUT'] = '300'
264
+ #
265
+ # env_fetcher.timeout # returns '300'
266
+ #
267
+ # @return [Array<MethodDefinition>]
268
+ def add_class_method(name, code = nil, **options, &block)
269
+ definitions.add(
270
+ MethodDefinition::ClassMethodDefinition,
271
+ name, code, **options, &block
272
+ )
209
273
  end
210
274
 
211
275
  # Evaluetes a block which will result in a String, the method code
@@ -284,8 +348,13 @@ class Sinclair
284
348
 
285
349
  private
286
350
 
351
+ # @method klass
287
352
  # @api private
288
353
  # @private
354
+ #
355
+ # Class that will receive the methods
356
+ #
357
+ # @return [Class]
289
358
  attr_reader :klass
290
359
 
291
360
  # @private
@@ -294,8 +363,8 @@ class Sinclair
294
363
  #
295
364
  # List of mthod definitions
296
365
  #
297
- # @return [Array<MethodDefinition>]
366
+ # @return [MethodDefinitions]
298
367
  def definitions
299
- @definitions ||= []
368
+ @definitions ||= MethodDefinitions.new
300
369
  end
301
370
  end
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Sinclair
4
+ # @api public
5
+ # @author darthjee
6
+ #
4
7
  # Base class for configuration when using {Configurable}
5
8
  #
6
9
  # The methods will be added later by {ConfigFactory}
@@ -3,6 +3,7 @@
3
3
  class Sinclair
4
4
  class Config
5
5
  # @api private
6
+ # @author darthjee
6
7
  #
7
8
  # Class responsible for adding method to configuration
8
9
  # classes
@@ -27,7 +28,7 @@ class Sinclair
27
28
  # @overload initialize(klass, *names, default)
28
29
  # @param names [Array<Symbol,String>] List of configuration names
29
30
  # to be added
30
- # @param default [Hash] Configurations that will receive a default
31
+ # @param default [Hash] Configurations that will receive a default value
31
32
  # value when not configured
32
33
  def initialize(klass, *names)
33
34
  super(klass)
@@ -69,6 +70,19 @@ class Sinclair
69
70
 
70
71
  private
71
72
 
73
+ # @method names
74
+ # @private
75
+ #
76
+ # List of configuration names
77
+ #
78
+ # @return [Array<Symbol,String>]
79
+
80
+ # @method defaults
81
+ # @private
82
+ #
83
+ # Configurations that will receive a default value
84
+ #
85
+ # @return [Hash]
72
86
  attr_reader :names, :defaults
73
87
 
74
88
  # @private
@@ -2,6 +2,7 @@
2
2
 
3
3
  class Sinclair
4
4
  # @api private
5
+ # @author darthjee
5
6
  #
6
7
  # Class responsible for setting the values on configuration
7
8
  #
@@ -2,6 +2,7 @@
2
2
 
3
3
  class Sinclair
4
4
  # @api public
5
+ # @author darthjee
5
6
  #
6
7
  # Module with all class methods for {Config}
7
8
  #
@@ -2,6 +2,7 @@
2
2
 
3
3
  class Sinclair
4
4
  # @api private
5
+ # @author darthjee
5
6
  #
6
7
  # Class responsible for configuring the configuration class
7
8
  #
@@ -22,6 +23,7 @@ class Sinclair
22
23
  CONFIG_CLASS_WARNING = 'Config class is expected to be ConfigClass. ' \
23
24
  "In future releases this will be enforced.\n" \
24
25
  'see more on https://github.com/darthjee/sinclair/blob/master/WARNINGS.md#usage-of-custom-config-classes'
26
+
25
27
  # @param config_class [Class] configuration class to be used
26
28
  # @param config_attributes [Array<Symbol,String>] list of possible configurations
27
29
  def initialize(config_class: Class.new(Config), config_attributes: [])
@@ -29,6 +31,7 @@ class Sinclair
29
31
  @config_attributes = config_attributes.dup
30
32
 
31
33
  return if config_class.is_a?(ConfigClass)
34
+
32
35
  warn CONFIG_CLASS_WARNING
33
36
  end
34
37
 
@@ -141,7 +144,19 @@ class Sinclair
141
144
 
142
145
  private
143
146
 
147
+ # method config_class
148
+ # @private
149
+ #
150
+ # Configuration class to be used
151
+ #
152
+ # @return [Class]
153
+
154
+ # @method config_attributes
144
155
  # @private
156
+ #
157
+ # List of possible configurations
158
+ #
159
+ # @return [Array<Symbol,String>]
145
160
  attr_reader :config_class, :config_attributes
146
161
 
147
162
  # @private