class Heartwood::ServiceObject::Base
Public Class Methods
attr_with_default(name, default_value)
click to toggle source
# File lib/heartwood/service_object/base.rb, line 42 def self.attr_with_default(name, default_value) attr_accessor name attrs_with_defaults << [name, default_value] end
attrs_with_defaults()
click to toggle source
—————————————- Attributes With Default Values
# File lib/heartwood/service_object/base.rb, line 38 def self.attrs_with_defaults @attrs_with_defaults ||= [] end
call(options = {})
click to toggle source
—————————————- Base
Calling Methods
# File lib/heartwood/service_object/base.rb, line 49 def self.call(options = {}) new(options).call end
new(options = {})
click to toggle source
# File lib/heartwood/service_object/base.rb, line 5 def initialize(options = {}) verify_options(options) process_options(options) process_required_attrs(options) process_attrs_with_defaults(options) end
optional_attr(*names)
click to toggle source
# File lib/heartwood/service_object/base.rb, line 30 def self.optional_attr(*names) attr_accessor(*names) optional_attrs << names optional_attrs.flatten!.uniq! end
optional_attrs()
click to toggle source
—————————————- Optional Attributes
# File lib/heartwood/service_object/base.rb, line 26 def self.optional_attrs @optional_attrs ||= [] end
required_attr(*names)
click to toggle source
# File lib/heartwood/service_object/base.rb, line 18 def self.required_attr(*names) attr_accessor(*names) required_attrs << names required_attrs.flatten!.uniq! end
required_attrs()
click to toggle source
—————————————- Required Attributes
# File lib/heartwood/service_object/base.rb, line 14 def self.required_attrs @required_attrs ||= [] end
Public Instance Methods
call()
click to toggle source
# File lib/heartwood/service_object/base.rb, line 53 def call raise 'The call method is missing in the service object.' end
Private Instance Methods
process_attrs_with_defaults(_options)
click to toggle source
# File lib/heartwood/service_object/base.rb, line 69 def process_attrs_with_defaults(_options) self.class.attrs_with_defaults.each do |name, default_value| send("#{name}=", default_value) if send(name).blank? end end
process_options(options)
click to toggle source
# File lib/heartwood/service_object/base.rb, line 75 def process_options(options) options.each do |name, value| begin send("#{name}=", value) if send(name).blank? rescue NoMethodError raise "Option not permitted: #{name}" end end end
process_required_attrs(_options)
click to toggle source
—————————————- Private Methods
# File lib/heartwood/service_object/base.rb, line 61 def process_required_attrs(_options) self.class.required_attrs.each do |name| if send(name).nil? raise ArgumentError, "Missing required option: #{name}" end end end
verify_options(options)
click to toggle source
# File lib/heartwood/service_object/base.rb, line 85 def verify_options(options) return true if options.is_a?(Hash) raise ArgumentError, 'Must pass options as a hash.' end