Module: Configurations::Configurable::ClassMethods
- Defined in:
- lib/configurations/configurable.rb
Overview
Class methods that will get installed in the host module
Instance Method Summary collapse
-
#configurable(*properties, &block) ⇒ Object
configurable can be used to set the properties which should be configurable, as well as a type which the given property should be asserted to.
-
#configurable?(property) ⇒ Boolean
returns whether a property is set to be configurable.
-
#configuration_defaults(&block) ⇒ Object
Configuration defaults can be used to set the defaults of any Configuration.
-
#configuration_method(method, &block) ⇒ Object
configuration method can be used to retrieve properties from the configuration which use your gem’s context.
-
#not_configured(*properties, &block) {|Symbol| ... } ⇒ Object
not_configured defines the behaviour when a property has not been configured.
Instance Method Details
#configurable(*properties, &block) ⇒ Object
configurable can be used to set the properties which should be configurable, as well as a type which the given property should be asserted to
119 120 121 122 123 124 |
# File 'lib/configurations/configurable.rb', line 119 def configurable(*properties, &block) type = properties.shift if properties.first.is_a?(Module) @configurable ||= {} @configurable.merge! to_configurable_hash(properties, type, &block) end |
#configurable?(property) ⇒ Boolean
returns whether a property is set to be configurable
130 131 132 |
# File 'lib/configurations/configurable.rb', line 130 def configurable?(property) @configurable.is_a?(Hash) && @configurable.key?(property) end |
#configuration_defaults(&block) ⇒ Object
Configuration defaults can be used to set the defaults of any Configuration
97 98 99 |
# File 'lib/configurations/configurable.rb', line 97 def configuration_defaults(&block) @configuration_defaults = block end |
#configuration_method(method, &block) ⇒ Object
configuration method can be used to retrieve properties from the configuration which use your gem’s context
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/configurations/configurable.rb', line 148 def configuration_method(method, &block) fail( ArgumentError, "can't be configuration property and a method" ) if configurable?(method) @configuration_methods ||= {} method_hash = if method.is_a?(Hash) ingest_configuration_block!(method, &block) else { method => block } end @configuration_methods.merge! method_hash end |
#not_configured(*properties, &block) {|Symbol| ... } ⇒ Object
not_configured defines the behaviour when a property has not been configured. This can be useful for presence validations of certain properties or behaviour for undefined properties deviating from the original behaviour.
183 184 185 186 187 188 189 190 191 |
# File 'lib/configurations/configurable.rb', line 183 def not_configured(*properties, &block) @not_configured ||= {} if properties.empty? @not_configured.default_proc = ->(h, k) { h[k] = block } else nested_merge_not_configured_hash(*properties, &block) end end |