为什么在Rails中安装路由会因“未初始化的常量API”而失败?
我正在开发一个包含使用grape
gem的API
的应用程序。
这是我的Root
类:
module API class Root "text/error" } ).finish end prefix "api" version 'v1', using: :path format :json error_format :json mount ::API::ServiceRequests end end
这是我如何在路线中安装它:
mount API::Root => '/'
我收到的错误是: routes.rb:45:in
块中的’:uninitialized constant API(NameError)`
这些文件的结构类似于app/api/root.rb
,我在application.rb
有一些代码可以加载到文件中:
config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb') config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
尝试将API代码的文件从app/api
到app/api/api
。
来自Grape的文档 :
将API文件放入
app/api
。 Rails需要一个与Ruby模块名称匹配的子目录和一个与该类名称匹配的文件名。 在我们的示例中,Twitter::API
的文件名位置和目录应为app/api/twitter/api.rb
因此, API::Root
类的正确位置实际上是app/api/api/root.rb