今日の午後に私のテスト環境にアップグレードしたRails 2.3.x - > 3.1(rc4)アプリケーションを配備した後、私たちのスタイルシートとJavaScriptファイルはすべて404エラーを返していました。レークアセットを追加しました。デプロイ後のスクリプトにタスクをプリコンパイルするのですが、アセットフォルダにプリコンパイル済みのファイルがない理由を判断するのに時間がかかりました。Rails 3.1のアセットパイプライン - パブリック/アセットのファイルがありません - なぜこれがデフォルトではありませんか?
結局、application.cssとapplication.js(+非JS/CSSファイル)だけがデフォルトで処理されるため、ファイルはコンパイルされませんでした。
我々は次のように次の設定値を変更するために必要な:
config.assets.precompile += %w(*.js *.css)
質問:なぜ、これはデフォルトではありませんか?
マニフェストファイルとして処理する必要がないものは、単にパブリック/アセットにコピーされることが予想されます。私がアセットパイプラインで読んだことの大部分は、基本的には「アセット/アセットにアセットを貼り付けること、マニフェストファイルを設定すること、それだけでうまくいく」ことです。アセット:プリコンパイル・タスクは、それが何をしているのかについての情報を吐き出していないので、思っていたファイルを見ていないと判断するのに時間がかかりました。
これはプリコンパイル構成には適していない理由はありますか?
ありがとうございます!
ありがとう、クリス、返信してください。効率化のためにHTTPリクエストを減らすことは理にかなっていますが、ほとんどのアプリケーションでCSSを少なくとも内部/外部スタイルシートとモジュール化されたJavaScriptファイルに分割していると思います。それは、Railsフレームワークの残りのものが物事を扱う方法からの実際の変化のように思えますが、デフォルトに基づいて、思考であったに違いないと確信しています。 – shedd
まあ、モジュール化されたものにファイルをカットしたいのは間違いないでしょう。アイデアは、application.jsとapplication.cssには、それらのディレクトリ内のすべての特定のjavascriptとcssを取り込む「インクルード」が含まれているということです(これらのファイルを見ると 'require_tree。'ディレクティブが見つかるでしょうそのディレクトリ内のすべてとそのすべての子)。 –
ほとんどのRailsアプリケーションは、実際にはCSSを異なるスタイルシートに分割することはありません。個別のソースCSS(およびJS)は、アセットパイプラインによって1つの集約application.css(または.js)にコンパイルされます。それでも、Railsのデフォルトがどうあるべきかについて私はあなたに同意する傾向があります。もし(* .js * .css)がデフォルトであれば、これはうまく動作するでしょう。あなたがしようとしていたこと。以前のバージョンのRailsは実際にあなたが提案したように機能したと思いますが、私たちが考えていない良い理由のために、もっと最近に変更しました。 – jrochkind