class SimpleOperation
Constants
- VERSION
Public Class Methods
failure(*args)
click to toggle source
# File lib/simple_operation.rb, line 37 def self.failure(*args) @failure_class = Failure.generate(*args) end
new(*args, &block)
click to toggle source
# File lib/simple_operation.rb, line 7 def self.new(*args, &block) args_list_with_nils = args.empty? ? '' : "#{args.join('=nil,')}=nil" Class.new do class_eval(&block) if block_given? class_eval <<-code def self.call #{args_list_with_nils} new(#{args.join(',')}).call end def initialize #{args_list_with_nils} #{args.map { |arg| "@#{arg}= #{arg}" }.join(';') } end code def perform call end private attr_reader(*args) def self.result(*args) @result_class = Struct.new(*args) end def self.success(*args) @success_class = Success.generate(*args) end def self.failure(*args) @failure_class = Failure.generate(*args) end def result(*args) self.class.instance_variable_get(:@result_class).new(*args) end def success(*args) self.class.instance_variable_get(:@success_class).new(*args) end def failure(*args) self.class.instance_variable_get(:@failure_class).new(*args) end alias_method :Result, :result alias_method :Success, :success alias_method :Failure, :failure end end
result(*args)
click to toggle source
# File lib/simple_operation.rb, line 29 def self.result(*args) @result_class = Struct.new(*args) end
success(*args)
click to toggle source
# File lib/simple_operation.rb, line 33 def self.success(*args) @success_class = Success.generate(*args) end
Public Instance Methods
failure(*args)
click to toggle source
# File lib/simple_operation.rb, line 49 def failure(*args) self.class.instance_variable_get(:@failure_class).new(*args) end
perform()
click to toggle source
# File lib/simple_operation.rb, line 22 def perform call end
result(*args)
click to toggle source
# File lib/simple_operation.rb, line 41 def result(*args) self.class.instance_variable_get(:@result_class).new(*args) end
success(*args)
click to toggle source
# File lib/simple_operation.rb, line 45 def success(*args) self.class.instance_variable_get(:@success_class).new(*args) end