Sha256: 6e86c7fa5e61bacb1cf4d376ca14a98450f57e25ebeabcd27562b9ccfbada51a
Contents?: true
Size: 1.22 KB
Versions: 3
Compression:
Stored size: 1.22 KB
Contents
module Avo class ExecutionContext attr_accessor :target, :context, :params, :view_context, :current_user, :request, :include def initialize(**args) # Extend the class with custom modules if required. if args[:include].present? args[:include].each do |mod| self.class.send(:include, mod) end end # If target doesn't respond to call, we don't need to initialize the others attr_accessors. return unless (@target = args[:target]).respond_to? :call args.except(:target).each do |key, value| singleton_class.class_eval { attr_accessor key } instance_variable_set("@#{key}", value) end # Set defaults on not initialized accessors @context ||= Avo::Current.context @current_user ||= Avo::Current.current_user @params ||= Avo::Current.params @request ||= Avo::Current.request @view_context ||= Avo::Current.view_context end delegate :result, to: :card delegate :authorize, to: Avo::Services::AuthorizationService # Return target if target is not callable, otherwise, execute target on this instance context def handle target.respond_to?(:call) ? instance_exec(&target) : target end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
avo-3.0.0.pre3 | lib/avo/execution_context.rb |
avo-3.0.0.pre2 | lib/avo/execution_context.rb |
avo-3.0.0.pre1 | lib/avo/execution_context.rb |