Sha256: d034d1b4a0b3fae7bb4f04ac2ca06bdba460155947ecbaa4cc335ed11ec80c40
Contents?: true
Size: 1023 Bytes
Versions: 1
Compression:
Stored size: 1023 Bytes
Contents
# frozen_string_literal: true module ActiveFunction class SuperBase attr_reader :action_name, :request, :response def initialize(action_name, request, response) @action_name = action_name @request = request @response = response end def dispatch process(action_name) @response.commit! unless performed? @response.to_h end def process(action) ; public_send(action); end private def performed? ; @response.committed?; end end class Base < SuperBase Error = Class.new(StandardError) # @param [String, Symbol] action_name - name of method to call # @param [Hash] request - request params, accessible through `#params` method # @param [Response] response - response object def self.process(action_name, request = {}, response = Response.new) raise ArgumentError, "Action method #{action_name} is not defined" unless method_defined?(action_name) new(action_name, request, response).dispatch end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
activefunction-0.4.0 | lib/.rbnext/3.0/active_function/base.rb |