2011-10-01 10 views
14

私は最近、アプリケーションをレール3.1にアップグレードしました。一般にすべてが機能しているようですが、Javascriptはアセットパイプラインを使用して開発モードでキャッシュされます

2つのメインjsファイルがあります。application.jsとmain.jsという2つのファイルがあります。

application.jsにはマニフェストがあり、main.jsにロードされていますそれはうまくいきます。私の問題は、私が開発モードに入っていて、main.jsに変更を加えた後、サイトが変更を受け付けないページを更新するときです。私は変更を引き込むために、私はレールサーバーを再起動しました。

開発中にデバッグモードがオンになっていますが、別の設定がありますか?

これまで誰でも実行できますか?

+1

私は同じ問題を抱えており、ここで解決策を見つけることを望んでいます。私は、キャッシュされたJSファイル(またはその点についてはCSS)が提供されないようにする方法を見つけることができないようです。あなたがすることができるすべてが一度に小さなものを変えることは、あなたが何度もWEBrickを何度もやり直すことです...。 –

答えて

14

私は同じ問題がありましたが、config.action_controller.perform_cachingは既にfalseに設定されています。

私と一緒に作業していた別の人にとっては、Railsの設定にもかかわらずChromeがページをキャッシュしていたという問題がありました。

修正するには、タブを閉じて新しいタブを開いてサイトをもう一度訪れたところです。

+0

これは結局それだった - 実際にはクロームのこと。私はまだ何の手がかりも持っていませんが、私は実際にブラウザのキャッシュを手動でクリアしなければなりませんでした。 – JoshReedSchramm

+1

これはちょうど私に起こりました、ブラウザを再起動するとこの問題を修正するように見えました... perform_cachingがfalseに設定されているにもかかわらずキャッシュされたままにすることを突然決定したようでした。奇妙な。 – StuR

+1

この問題を解決しようとするのに、最後の3時間を費やしました。私もコンピュータを再起動しましたが、OSXは開いているブラウザウィンドウを保存しているので、やっていないようです。タブを閉じて開き、問題を解決しました。私は今自分で撃つつもりだと思う。 –

1

開発ログを見て、application.jsが提供されたときの内容を確認してください。

これは、通常のリクエスト(ページへの閲覧)のために次のようになります。あなたが正しくパイプラインのオプションを設定していないかもしれない場合は

 
Started GET "/assets/application.js" for 127.0.0.1 at Fri Sep 30 12:13:27 +1300 2011 
Served asset /application.css - 304 Not Modified (2ms) 

。プロダクション設定の1つが間違った場所にある可能性があります。アセットパイプラインガイドのSection 9には、移行されたアプリの正しい設定のチェックリストがあります。

+1

yah私は "/assets/main.js?body=1"を手に入れようとしています。 127.0.0.1 at 2011-10-01 16:22:16 -0400 配信されたアセット/main.js - 304は変更されていません(0ms) – JoshReedSchramm

+0

bahはコメントに改行を入れません。キャッシュから役立っているようですが、もう一度ガイドを覗いてください – JoshReedSchramm

+0

ブラウザにはどのようなヘッダがありますか? –

2

私は同じ問題を抱えていました。私は最終的に私のdevelopment.rbで何かを見つけました。私はconfig.action_controller.perform_cachingをtrueに設定し、それをfalseに変更して問題を解決しました。

2

シークレットモードでChromeを開くと、私にとって最適です。タブを開閉する必要はありません。シークレットモードでは、ChromeはJavaScriptをキャッシュしません。

1

同じ問題が発生しましたが、config.action_controller.perform_cachingが正しく設定されています。また、Herokuを使用して、Push to Herokuのアセットをプリコンパイルします。 RAILS_ENV =プロダクションバンドルexec rakeアセット:プリコンパイル プッシュした後、新しい作業を開始したときに、プリコンパイルされたアセットを削除するのを忘れていました: sudo rm -r public/assets/*

私は自分の.jsファイルに何をしたとしても、変更は表示されませんでした。

2

また、config.threadsafeを有効にすると、cache_classesがオンになります。あなたのconfig /環境/ development.rbファイルが含まれているのであれば、以下:

config.cache_classes = false 
config.threadsafe! 

は、その後、あなたは右の背中にそれを回し、その後cache_classesをオフにしています。 configをコメントアウトする必要があります。このようなスレッドセーフ(あなたがそれを必要としない場合):

config.cache_classes = false 
# config.threadsafe! 

それとも、あなたがスレッドセーフを必要とする場合config_classesは本当にオフになっているように、これら2つの構成の順序を逆:

config.threadsafe! 
config.cache_classes = false 

のために詳細はhttp://tenderlovemaking.com/2012/06/18/removing-config-threadsafe.html

4

私は同じ問題があり、開発時に資産ダイジェストを削除すると問題が解決されたことがわかりました。上記の答えはあなたのコンテキストで失敗言及した場合はキャッシュがレールによって行われていることを確認してください

..

config.assets.digest = false 
0

..いくつかの回は、それが変更を検出しません:あなたはdevelopmen.rbでfalseに設定していることを確認します古いキャッシュされたバージョンの資産でとサーブ...

使用 rails c >> Rails.cache.clear
または単にDIR tmp

でキャッシュを削除します

[project_dir/tmp/cache/assets"]

関連する問題