Rails中的Grape API文件未重新加载

3
在开发模式下,我们Rails应用中的Grape API文件没有像应该一样重新加载。我们尝试了Grape README中建议的方法,并参考了似乎是关键的SO帖子(Ruby on Rails 3 - Reload lib directory for each request),但出于某些原因它并没有起作用。
在config/application.rb文件中:
config.paths.add File.join("app", "api"), glob: File.join("**", "*.rb")
config.autoload_paths += Dir[Rails.root.join("app", "api", "*")]

在初始化器/reload_api.rb中:

if Rails.env == "development"
  api_reloader = ActiveSupport::FileUpdateChecker.new(Dir[Rails.root.join('app', 'api', '**', '*.rb')]) do
    puts ">>>> RELOADING!"
    Rails.application.reload_routes!
  end

  ActionDispatch::Callbacks.to_prepare do
    api_reloader.execute_if_updated
  end
end

当我在app/api目录下更改文件时,可以在日志中看到“RELOADING!”消息,因此我知道api_reloader回调正在被调用。但是更改没有生效。这让我怀疑config.autoload_paths,但它看起来都是正确的。

这是使用Rails 3.2。如果有建议,那就太棒了,因为很明显在这些事情上没有重新加载非常令人恼火。


你是如何挂载API的? - dB.
API 在 routes.rb 中使用 mount Api => '/api' 进行挂载,然后在主要的 /app/api/api.rb 文件中使用 class Api < Grape::API; cascade false; mount Acme::MyApi; end 进行加载。 - Masonoise
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接