class PaymentRecipes::Utils::Action
Public Class Methods
debug()
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 48 def debug study rules end
new(parameters = {})
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 53 def initialize(parameters = {}) raise TypeError, "Action params should be a Hash" unless parameters.is_a?(Hash) @params = parameters @params.each do |param, value| instance_variable_set("@#{ param }".to_sym, value) end end
prepare(parameters = {})
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 33 def prepare(parameters = {}) rules.each do |key, klass| # unless parameters[key].is_a?(klass.constantize)# || parameters[key].is_a?(NilClass) allowed_class_strings = parameters[key].class.ancestors.map(&:to_s) unless allowed_class_strings.include?(klass) || allowed_class_strings.include?("NilClass") raise TypeError, "#{ key } should be a #{ klass }" end end output = new(parameters) output.instance_variable_set(:@_action_state, :prepared) output end
rules()
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 29 def rules @rules || [] end
variable(key, klass)
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 20 def variable(key, klass) @rules ||= {} @rules[key] = klass define_method key do instance_variable_get("@#{ key }".to_sym) end end
Public Instance Methods
debug()
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 171 def debug study @params end
ensure_presence(variable, default: nil) { || ... }
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 119 def ensure_presence(variable, default: nil) if variable.present? yield if block_given? else default end end
execute()
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 70 def execute @success = nil @error = nil unless @_action_state raise Exception, "Use #{ self.class.name }.prepare to initialize this action" end unless @_action_state == :executed @_action_output = perform if @error @success = false else @success = true end make_instance_variables_available @_action_state = :executed end @_action_output end
failure?()
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 66 def failure? not success? end
get(label)
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 165 def get(label) label_sym = "@#{label}".to_sym instance_variable_get(label_sym) end
make_instance_variables_available()
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 111 def make_instance_variables_available instance_variables.each do |instance_variable| define_singleton_method(instance_variable.to_s.gsub("@", "")) do instance_variable_get(instance_variable) end end end
set(label, value)
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 153 def set(label, value) label_sym = "@#{label}".to_sym instance_variable_set(label_sym, value) define_singleton_method(label_sym.to_s.gsub("@", "")) do instance_variable_get(label_sym) end value end
store(label) { || ... }
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 133 def store(label) label_sym = "@#{label}".to_sym if stored_value = instance_variable_get(label_sym) stored_value else if block_given? computed_value = yield instance_variable_set(label_sym, computed_value) define_singleton_method(label_sym.to_s.gsub("@", "")) do instance_variable_get(label_sym) end end end instance_variable_get(label_sym) end
stored_variables()
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 95 def stored_variables output = {} instance_variables.each do |instance_variable| instance_variable_sym = instance_variable.to_s.gsub("@", "").to_sym begin output[instance_variable_sym] = send(instance_variable_sym) rescue Exception => e # NOTE: do nothing end end output end
success?()
click to toggle source
# File lib/payment_recipes/utils/action.rb, line 62 def success? @success end