web-dev-qa-db-ja.com

rails 3.1開発中のアセットパイプラインのCSSキャッシング

Application.cssが2回インクルードされているように見えるので、少し混乱しています。1回目はマニフェストのリソースをリストし、次にそのキャッシュをリストします。そのため、個々のファイルを削除しても、application.cssファイル内ではまだ生きているようです。

application.css(ソース)

/*
*= require Twitter/bootstrap
*= require_self
*= require_tree ./common
*= require_tree ./helpers
*/

期待どおりに機能し、関連するすべての個々のファイルを開発モードで出力します

development.rb

  # Do not compress assets
  config.assets.compress = false

  # Expands the lines which load the assets
  config.assets.debug = true

出力

<link href="/assets/Twitter/bootstrap.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/application.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/common/announcement.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<link href="/assets/common/button.css?body=1" media="screen" rel="stylesheet" type="text/css" />
<Blah blah>

application.css(出力)

これは空白にする必要がありますか?私のapplication.cssファイルにあるのはマニフェストであり、実際のCSSではないので、代わりに106 KBの長いコードをすべて取得します。

IEでcommonディレクトリのファイルを削除しても、消えません。出力には表示されなくなりましたが、cssはまだapplication.cssから表示されます

36
holden

以前、このような問題がありました。これは、パブリックフォルダー内とアプリディレクトリ内のapplcation.cssの後のアセットをプリコンパイルした後に発生しました。開発モードで発生し続けないように修正する方法はわかりませんが、/public/assetsディレクトリを修正する必要があります。

Public/assetsフォルダーがあるかどうかを確認してください。もしそれがいっぱいの場合は、おそらく二重になっています。

41
ere

現在(2012-09-24)Rails/sprocketsにはバグがあり、インポートされたファイルを正しく検出できません。

これはRails 3.2.9以降で修正されるはずですが、当面は、次のように回避できます。

  1. Railsインスタンスを殺す
  2. rm -rf tmp/cache
  3. Railsインスタンスを開始します

正しいcssが表示されているはずです。

37
Peter Hoeg

あなたは見てみたいかもしれません

https://stackoverflow.com/a/7854902/68646

「config.serve_static_assets = falseをdevelopment.rbに追加すると、/ public/assetsからのファイルのロードができなくなります」

それは私のためにそれをしました。

10
Agustin

@Agustinのソリューションは私のためにそれを行いますが、ここにあなたがする必要があるいくつかの事柄があります:

  1. / tmp/cache/assetsのすべてを削除します

  2. config.serve_static_assets = falseをdevelopment.rbまたはtest.rbに追加します(@Agustinへのクレジット)

  3. サーバーを再起動します。

  4. Application.js/.cssがブラウザーにキャッシュされていないことを確認してください。 http://localhost:3000/assets/application.js?body=1に移動し、ctrl + f5を押して強制的に更新します(最後にランダマイザーのパラメーターを追加して追加することもできます:http://localhost:3000/assets/application.js?body=1&rnd=12343他に何かあり、それでもctrl + f5が役に立たない場合は、ブラウザのキャッシュをクリアする必要があります。

これらの手順のいずれかをスキップすると、キャッシュされたapplication.js/.cssが返され、単一ファイルの更新と競合しました。

7
Abdo

私にとってうまくいった最善の方法は、tmp/cache / *ディレクトリのコンテンツを削除することです...

4
Ivan Stana

私たちにとってうまくいったことは、「config.assets.debug = false」を設定することでした

これにより、HTMLに含まれるCSSがhref = "/ assets/bootstrap-new.css?body = 1"として設定されなくなり、代わりに、href = "/ assets/bootstrap-new.css"として設定されました。これが問題だったと思います。

3
Maail

私も同じ問題を抱えていました。 tmp/cacheとpublic/assetsをクリアしたにもかかわらず、縮小されたapplication.cssはまだキャッシュされてどこかから提供され、個々のcssファイルへの変更が提供されていませんでした。

これは私のために働きました:application.cssで行*= require_selfを削除します

サーバーを再起動する

キャッシュが削除されているようで、ブラウザのソースでapplication.cssをクリックすると、縮小版が表示されなくなります

*= require_selfをファイルに戻し、開発を続けます。

1
Homan

これは古い質問であることはわかっていますが、うまくいった修正の1つは、nginxが私の開発環境にプロキシしていて、構成にlocation ~ ^/(assets)/ブロックがあったことです。コメントアウトするか、nginxを再起動してキャッシュを無効にしてみてください。開発中の場合は、完全にコメントアウトしたいと思うでしょう。

これを思い出すまで、トラブルシューティングに時間をかけすぎました。

0
d_ethier

最後に必要な手順が1つありましたが、修正しました。これが私がしたことです:

  1. Railsサーバーをシャットダウンする
  2. レーキアセット:クリーン
  3. レイクtmp:クリア
  4. Railsサーバーを再起動します

次に、Google Chromeで画面を更新しましたが、それでもDIDは機能しません。それで、私はFirefoxと出来上がりを起動しました、それは実際に働いていました。これは、Chromeがブラウザ内で古いファイルをキャッシュしていたことを意味します。そこで、Chromeのブラウザキャッシュをクリアしました。

0
nfriend21