Module: LinkedRails::CallableVariable::ClassMethods
- Defined in:
- lib/linked_rails/callable_variable.rb
Instance Method Summary collapse
-
#callable_variable(method, opts = {}) ⇒ Object
rubocop:disable Metrics/AbcSize, Metrics/MethodLength.
Instance Method Details
#callable_variable(method, opts = {}) ⇒ Object
rubocop:disable Metrics/AbcSize, Metrics/MethodLength
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/linked_rails/callable_variable.rb', line 8 def callable_variable(method, opts = {}) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength variable ||= opts[:variable] || method default ||= opts[:default] define_method method do value = instance_variable_get("@#{variable}") if value.respond_to?(:call) instance = opts[:instance] ? send(opts[:instance]) : self value = instance_variable_set("@#{variable}", instance.instance_exec(&value)) end return value if !value.nil? || default.blank? instance_exec(&default) end end |