Class: Hammy::AbstractServiceObject
- Inherits:
-
Object
- Object
- Hammy::AbstractServiceObject
- Defined in:
- lib/hammy/abstract_service_object.rb
Direct Known Subclasses
Class Method Summary collapse
Instance Method Summary collapse
- #initial_instance_variables(_args, _kargs) ⇒ Object
-
#initialize(*args, **kargs) ⇒ AbstractServiceObject
constructor
A new instance of AbstractServiceObject.
- #klass ⇒ Object
- #private_getters ⇒ Object
- #protected_getters ⇒ Object
- #public_getters ⇒ Object
- #valid_action?(klass, method) ⇒ Boolean
- #validate_args!(args, kargs) ⇒ Object
Constructor Details
#initialize(*args, **kargs) ⇒ AbstractServiceObject
Returns a new instance of AbstractServiceObject.
10 11 12 13 |
# File 'lib/hammy/abstract_service_object.rb', line 10 def initialize(*args, **kargs) @args = args @kargs = kargs end |
Class Method Details
.build(*args, **kargs) ⇒ Object
6 7 8 |
# File 'lib/hammy/abstract_service_object.rb', line 6 def self.build(*args, **kargs) new(*args, **kargs).klass end |
Instance Method Details
#initial_instance_variables(_args, _kargs) ⇒ Object
64 65 66 |
# File 'lib/hammy/abstract_service_object.rb', line 64 def initial_instance_variables(_args, _kargs) {} end |
#klass ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/hammy/abstract_service_object.rb', line 15 def klass this = self Class.new do eigenclass = class << self; self; end eigenclass.class_eval do define_method(:method_missing) do |method, *args, **kargs, &block| return super(method, *args, **kargs, &block) unless this.valid_action?(self, method) new(args, kargs).send(method) end define_method(:respond_to_missing?) do |method, include_private = false| this.valid_action?(self, method) || super(method, include_private) end end define_method(:initialize) do |args, kargs| this.validate_args!(args, kargs) this.initial_instance_variables(args, kargs).each do |var, value| instance_variable_set(var, value) end end this.public_getters.each do |getter| attr_reader(getter) end protected this.protected_getters.each do |getter| attr_reader(getter) end private this.private_getters.each do |getter| attr_reader(getter) end end end |
#private_getters ⇒ Object
76 77 78 |
# File 'lib/hammy/abstract_service_object.rb', line 76 def private_getters [] end |
#protected_getters ⇒ Object
72 73 74 |
# File 'lib/hammy/abstract_service_object.rb', line 72 def protected_getters [] end |
#public_getters ⇒ Object
68 69 70 |
# File 'lib/hammy/abstract_service_object.rb', line 68 def public_getters [] end |
#valid_action?(klass, method) ⇒ Boolean
58 59 60 |
# File 'lib/hammy/abstract_service_object.rb', line 58 def valid_action?(klass, method) klass.instance_methods(false).include?(method) end |
#validate_args!(args, kargs) ⇒ Object
62 |
# File 'lib/hammy/abstract_service_object.rb', line 62 def validate_args!(args, kargs); end |