module SingularResource::Resource::ClassMethods
Public Instance Methods
singular_configuration(name=:default,&block)
click to toggle source
# File lib/singular_resource/resource.rb, line 16 def singular_configuration(name=:default,&block) self._singular_configurations = _singular_configurations.merge(name => Configuration.new(&block)) end
singular_resource(name, options={})
click to toggle source
# File lib/singular_resource/resource.rb, line 20 def singular_resource(name, options={}) enforce_method_name_not_used!(name) config = options[:config] || :default options = _singular_configurations[config].merge(options) _resource_finders[name] = finder = FinderStrategizer.strategy_for(name, options) define_resource_method(name, finder) end
Private Instance Methods
_resource_finders()
click to toggle source
# File lib/singular_resource/resource.rb, line 33 def _resource_finders @_resource_finders ||= {} end
define_resource_method(name, finder)
click to toggle source
# File lib/singular_resource/resource.rb, line 37 def define_resource_method(name, finder) define_method(name) do finder.call(self) end memoize name hide_action name end
enforce_method_name_not_used!(name)
click to toggle source
# File lib/singular_resource/resource.rb, line 45 def enforce_method_name_not_used!(name) if ActionController::Base.instance_methods.include?(name.to_sym) Kernel.abort "[ERROR] You are adding a singular resource by the `#{name}` method, " \ "which overrides an existing ActionController method of the same name. " \ "Consider a different resource name\n" \ "#{caller.first}" end end