module SnFoil::Contexts::SetupContext
Attributes
entity[R]
Public Class Methods
new(entity = nil)
click to toggle source
# File lib/sn_foil/contexts/setup_context.rb, line 47 def initialize(entity = nil) @entity = entity end
Public Instance Methods
adapter()
click to toggle source
# File lib/sn_foil/contexts/setup_context.rb, line 84 def adapter @adapter ||= SnFoil.adapter end
adapter?(object)
click to toggle source
# File lib/sn_foil/contexts/setup_context.rb, line 78 def adapter?(object) return false unless adapter object.instance_of? adapter end
hook_valid?(hook, **options)
click to toggle source
# File lib/sn_foil/contexts/setup_context.rb, line 96 def hook_valid?(hook, **options) return false if !hook[:if].nil? && hook[:if].call(options) == false return false if !hook[:unless].nil? && hook[:unless].call(options) == true true end
model(klass = nil)
click to toggle source
# File lib/sn_foil/contexts/setup_context.rb, line 14 def model(klass = nil) @i_model = klass end
policy(klass = nil)
click to toggle source
# File lib/sn_foil/contexts/setup_context.rb, line 18 def policy(klass = nil) @i_policy = klass end
run_hook(hook, **options)
click to toggle source
# File lib/sn_foil/contexts/setup_context.rb, line 88 def run_hook(hook, **options) return options unless hook_valid?(hook, **options) return send(hook[:method], **options) if hook[:method] instance_exec options, &hook[:block] end
scope(object_class = nil, **options)
click to toggle source
# File lib/sn_foil/contexts/setup_context.rb, line 60 def scope(object_class = nil, **options) object_class ||= model policy_name = lookup_policy(object_class, options).class.name "#{policy_name}::Scope".safe_constantize.new(wrap_object(object_class), entity) end
setup(method = nil, **options, &block)
click to toggle source
# File lib/sn_foil/contexts/setup_context.rb, line 22 def setup(method = nil, **options, &block) raise ArgumentError, '#setup requires either a method name or a block' if method.nil? && block.nil? (@i_setup_hooks ||= []) << { method: method, block: block, if: options[:if], unless: options[:unless] } end
setup_hooks()
click to toggle source
# File lib/sn_foil/contexts/setup_context.rb, line 41 def setup_hooks self.class.i_setup_hooks || [] end
unwrap_object(object)
click to toggle source
# File lib/sn_foil/contexts/setup_context.rb, line 72 def unwrap_object(object) return object unless adapter adapter?(object) ? object.__getobj__ : object end
wrap_object(object)
click to toggle source
# File lib/sn_foil/contexts/setup_context.rb, line 66 def wrap_object(object) return object unless adapter adapter.new(object) end
Private Instance Methods
lookup_policy(object, options)
click to toggle source
# File lib/sn_foil/contexts/setup_context.rb, line 105 def lookup_policy(object, options) lookup = if options[:policy] options[:policy].new(entity, object) elsif policy policy.new(entity, object) else Pundit.policy!(entity, object) end lookup.options = options if lookup.respond_to? :options= lookup end