2016-01-31 17 views
0

这是我的葡萄API的结构。需要葡萄API中的助手模块文件

app 
| /api 
    | /v1 
    | application.rb 
    /helpers 
    | warden_helpers.rb 
    /models 
    | user.rb 

这是我的warden_helpers.rb文件;

require 'grape' 
require 'warden' 

module WardenHelpers 
    extend Grape::API::Helpers 
    # Helpers go here 
end 

这就是我想要如何要求他们在application.rb;

require 'grape' 

# Load files from folders 
Dir["#{File.dirname(__FILE__)}/app/models/**/*.rb"].each { |f| require f } 
Dir["#{File.dirname(__FILE__)}/app/api/**/*.rb"].each { |f| require f } 
Dir["#{File.dirname(__FILE__)}/app/helpers/**/*.rb"].each { |f| require f } 

module API 
    class Root < Grape::API 
    helpers WardenHelpers 
    end 
end 

如果我包括助手在application.rb块或将模块在同一个文件 - 一切工作正常。但是,这种方法会引发错误:in '<class:Root>': uninitialized constant API::Root::WardenHelpers (NameError)

回答

1

命名空间WardenHelpers在助手模块

module Helpers 
    module WardenHelpers 
    extend Grape::API::Helpers 
    # Helpers go here 
    end 
end 

application.rb

使用 helpers Helpers::WardenHelpers