Sha256: 3b89b146c620b9a4b1b84e418e1176d0581257a23218bf61c5f068035ad77021
Contents?: true
Size: 925 Bytes
Versions: 1
Compression:
Stored size: 925 Bytes
Contents
require "interactor/context" require "interactor/organizer" module Interactor def self.included(base) base.class_eval do extend ClassMethods include InstanceMethods attr_reader :context end end module ClassMethods def perform(context = {}) new(context).tap(&:perform) end def rollback(context = {}) new(context).tap(&:rollback) end end module InstanceMethods def initialize(context = {}) @context = Context.build(context) setup end def setup end def perform end def rollback end def success? context.success? end def failure? context.failure? end def fail!(*args) context.fail!(*args) end def method_missing(method, *) context.fetch(method) { super } end def respond_to_missing?(method, *) context.key?(method) || super end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
interactor-1.0.0 | lib/interactor.rb |