module Grape::DSL::Helpers::ClassMethods
Public Instance Methods
helpers(new_mod = nil, &block)
click to toggle source
Add helper methods that will be accessible from any endpoint within this namespace (and child namespaces).
When called without a block, all known helpers within this scope are included.
@param [Module] new_mod optional module of methods to include @param [Block] block optional block of methods to include
@example Define some helpers.
class ExampleAPI < Grape::API helpers do def current_user User.find_by_id(params[:token]) end end end
# File lib/grape/dsl/helpers.rb, line 29 def helpers(new_mod = nil, &block) if block_given? || new_mod mod = new_mod || Module.new define_boolean_in_mod(mod) inject_api_helpers_to_mod(mod) if new_mod inject_api_helpers_to_mod(mod) do mod.class_eval(&block) end if block_given? namespace_stackable(:helpers, mod) else mod = Module.new namespace_stackable(:helpers).each do |mod_to_include| mod.send :include, mod_to_include end change! mod end end
Protected Instance Methods
define_boolean_in_mod(mod)
click to toggle source
# File lib/grape/dsl/helpers.rb, line 51 def define_boolean_in_mod(mod) return if defined? mod::Boolean mod.const_set('Boolean', Virtus::Attribute::Boolean) end
inject_api_helpers_to_mod(mod) { || ... }
click to toggle source
# File lib/grape/dsl/helpers.rb, line 56 def inject_api_helpers_to_mod(mod, &_block) mod.extend(BaseHelper) unless mod.is_a?(BaseHelper) yield if block_given? mod.api_changed(self) end