Module: Julewire::Core::Integration::Settings::ClassMethods
- Defined in:
- lib/julewire/core/integration/settings.rb
Instance Method Summary collapse
- #byte_limit ⇒ Object
- #integer_limit(positive: false) ⇒ Object
- #setting(name, default: nil, predicate: false, validate: nil, &block) ⇒ Object
- #settings_defaults ⇒ Object
- #settings_validators ⇒ Object
Instance Method Details
#byte_limit ⇒ Object
28 29 30 |
# File 'lib/julewire/core/integration/settings.rb', line 28 def byte_limit proc { |value, name| Core::Validation.validate_byte_limit!(value, name: name) } end |
#integer_limit(positive: false) ⇒ Object
32 33 34 |
# File 'lib/julewire/core/integration/settings.rb', line 32 def integer_limit(positive: false) proc { |value, name| Core::Validation.validate_integer_limit!(value, name: name, positive: positive) } end |
#setting(name, default: nil, predicate: false, validate: nil, &block) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/julewire/core/integration/settings.rb', line 15 def setting(name, default: nil, predicate: false, validate: nil, &block) settings_defaults[name] = block || proc { default } settings_validators[name] = validate if validate ivar = :"@#{name}" define_method(name) { instance_variable_get(ivar) } define_method(:"#{name}=") do |value| instance_variable_set(ivar, validate_setting(name, value)) end define_method(:"#{name}?") { !!public_send(name) } if predicate end |
#settings_defaults ⇒ Object
36 37 38 |
# File 'lib/julewire/core/integration/settings.rb', line 36 def settings_defaults @settings_defaults ||= {} end |
#settings_validators ⇒ Object
40 41 42 |
# File 'lib/julewire/core/integration/settings.rb', line 40 def settings_validators @settings_validators ||= {} end |