1

Rails 3.2.13 は、Mac OS X Mountain Lion 10.8.4 で Ruby 1.8.7 から Ruby 2.0 にアップグレードした後、開発モードでヘルパー モジュール、コントローラー、およびその他の Ruby コードをキャッシュしています

Railsコンソールでも毎回サーバーを再起動した後にのみ、コードの変更が反映されます。リロード!コンソールのコマンドも機能せず、Rails コンソールを再起動するまでコードの変更をリロードしません。

Javascript と Sass ファイルはキャッシュされませんが、ビュー、コントローラー、およびその他の Ruby コードはキャッシュされます。development.rb ファイルを確認したところ、次のキャッシュ設定が false に設定されています。

config.cache_classes = false

また、サーバーを起動すると、コンソールログに表示されるように開発モードで起動します

Rails 3.2.13 application starting in development on http://0.0.0.0:3000

何が起こったのかわかりませんが、テスト目的でシステムのタイムゾーンと時刻を変更し、時刻を実際の時刻に戻しました。

正しい時間とタイムゾーンでマシンを再起動した後、レポをシステムに再度 git clone しましたが、まだ問題があります。これを修正する方法、または開発モードでリクエストが行われるたびにすべてのルビーコードを強制的にリロードする方法を知っている人はいますか?

4

1 に答える 1

1

また、古い Rails バージョンから最近アップグレードした場合。その場合、Rails 3 では が自動ロードされないlibことに注意してください。あなたはまだオートロードされるべきヘルパーモジュールとコントローラーについて話しているが、そうならないだろう。この回答に記載されているように自動ロードされるように変更したり、別の自動ロードされたディレクトリを追加したり、既存の自動ロードされたディレクトリまでそれらのクラスを移動したりできます (たとえば、適切な場合)。libapp/models

構成されているものがある場合は、それらをリロードする際に問題になる可能性があります。そうでない場合は、ガイドconfig.autoload_once_pathsに従って要求ごとにリロードする必要があります (何が起こっているのか知りたい場合は、こちらのコードを参照してください)。

また、実際に開発モードで実行していることを確認し、この回答config.eager_load_pathsに従って lib を development.rbに追加できないことに注意してください。

コードに時間の問題があった場合、またレポを再クローンしたときにも、ファイルの日付が間違っている可能性があります。やってみてください:find /path/to/rails/app -exec touch {} \;ファイル mod datetimes を更新します。(余談ですが、created_at/updated_at 内の DB の日時が問題ないことを確認することもできます。混乱する可能性があるため、問題ではないことを願っています。)

最後に、自動ロードされたディレクトリの下にあるクラスが、それらが含まれているモジュールに対応していることを確認しFoo::BarsControllerapp\controllers\foo\bars_controller.rbくださいapp\controllers\bars_controller.rb

于 2013-06-25T15:13:57.517 に答える