開発モードでは、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", "*")]
また、initializers/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 を使用しています。明らかに、このようなものにリロードが機能しないのは非常に面倒なので、提案は素晴らしいでしょう.