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", "*")]

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

4

1 に答える 1

0

ルートのためだけにそれを行っている場合は、その回避策を見つけました。GRAPE のルートだけを表示するために rake タスクを使用しています。

レーキ タスクのリンク: https://gist.github.com/pragmaticivan/9a9d925e7bbcc8df72f6

于 2014-10-12T04:43:23.650 に答える