module ContextExposer::BaseController::ClassMethods
Public Instance Methods
_exposure_storage()
click to toggle source
# File lib/context_exposer/base_controller.rb, line 77 def _exposure_storage _exposure_hash[self.to_s] ||= {} end
base_item_actions()
click to toggle source
# File lib/context_exposer/base_controller.rb, line 44 def base_item_actions [:show, :new, :edit] end
base_list_actions()
click to toggle source
# File lib/context_exposer/base_controller.rb, line 40 def base_list_actions [:index] end
context_expose(name, options = {})
click to toggle source
# File lib/context_exposer/base_controller.rb, line 71 def context_expose name, options = {} meth_name = "context_expose_#{name}" raise ArgumentError, "No such method #{meth_name}" unless respond_to? meth_name send meth_name, options end
expose_cached(name, options = {})
click to toggle source
# File lib/context_exposer/base_controller.rb, line 30 def expose_cached name, options = {}, &block exposed name, options.merge(cached: true), &block end
exposed(name, options = {})
click to toggle source
# File lib/context_exposer/base_controller.rb, line 26 def exposed name, options = {}, &block _exposure_storage[name.to_sym] = {options: options, proc: block} end
integrate_with(*names)
click to toggle source
# File lib/context_exposer/base_controller.rb, line 64 def integrate_with *names names.flatten.compact.each do |name| self.send :include, "ContextExposer::Integrations::With#{name.to_s.camelize}".constantize end end
Also aliased as: integrates_with
item_actions(*names)
click to toggle source
# File lib/context_exposer/base_controller.rb, line 56 def item_actions *names return if names.blank? names = names.flatten.map(&:to_sym) (class << self; end).define_method :item_actions do names | base_item_actions end end
list_actions(*names)
click to toggle source
# File lib/context_exposer/base_controller.rb, line 48 def list_actions *names return if names.blank? names = names.flatten.map(&:to_sym) (class << self; end).define_method :list_actions do names | base_list_actions end end
normalized_resource_name()
click to toggle source
# File lib/context_exposer/base_controller.rb, line 22 def normalized_resource_name self.to_s.demodulize.sub(/Controller$/, '').underscore.singularize end
view_ctx_class(name)
click to toggle source
# File lib/context_exposer/base_controller.rb, line 34 def view_ctx_class name define_method :view_ctx_class do @view_ctx_class ||= name.kind_of?(Class) ? name : name.to_s.camelize.constantize end end
Protected Instance Methods
_exposure_hash()
click to toggle source
# File lib/context_exposer/base_controller.rb, line 101 def _exposure_hash @_exposure_hash ||= {} end
expose_context(name)
click to toggle source
# File lib/context_exposer/base_controller.rb, line 83 def expose_context name return if exposed_view_context? if ActionController::Base.instance_methods.include?(name.to_sym) Kernel.warn "[WARNING] You are exposing the `#{name}` method, " \ "which overrides an existing ActionController method of the same name. " \ "Consider a different exposure name\n" \ "#{caller.first}" end helper_method name hide_action name @_exposed_view_context = true end
exposed_view_context?()
click to toggle source
# File lib/context_exposer/base_controller.rb, line 97 def exposed_view_context? @_exposed_view_context == true end