module Grape::DSL::Helpers::ClassMethods
Public Instance Methods
helpers(*new_modules, &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 [Array] new_modules optional array of modules 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
@example Include many modules
class ExampleAPI < Grape::API helpers Authentication, Mailer, OtherModule end
# File lib/grape/dsl/helpers.rb, line 35 def helpers(*new_modules, &block) include_new_modules(new_modules) if new_modules.any? include_block(block) if block_given? include_all_in_scope if !block_given? && new_modules.empty? end
Protected Instance Methods
define_boolean_in_mod(mod)
click to toggle source
# File lib/grape/dsl/helpers.rb, line 66 def define_boolean_in_mod(mod) return if defined? mod::Boolean mod.const_set('Boolean', Virtus::Attribute::Boolean) end
include_all_in_scope()
click to toggle source
# File lib/grape/dsl/helpers.rb, line 59 def include_all_in_scope Module.new.tap do |mod| namespace_stackable(:helpers).each { |mod_to_include| mod.send :include, mod_to_include } change! end end
include_block(block)
click to toggle source
# File lib/grape/dsl/helpers.rb, line 47 def include_block(block) Module.new.tap do |mod| make_inclusion(mod) { mod.class_eval(&block) } end end
include_new_modules(modules)
click to toggle source
# File lib/grape/dsl/helpers.rb, line 43 def include_new_modules(modules) modules.each { |mod| make_inclusion(mod) } end
inject_api_helpers_to_mod(mod) { || ... }
click to toggle source
# File lib/grape/dsl/helpers.rb, line 71 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
make_inclusion(mod, &block)
click to toggle source
# File lib/grape/dsl/helpers.rb, line 53 def make_inclusion(mod, &block) define_boolean_in_mod(mod) inject_api_helpers_to_mod(mod, &block) namespace_stackable(:helpers, mod) end