2016-01-31 33 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