Rails3.1アセット-開発における奇妙なサービス
-
27-10-2019 - |
質問
Rails3.1アセットパイプラインに問題があります。 アセットは開発に2回含まれています: ジェネラコディセタグプレ
Railsはどういうわけかコンパイルされ、 application.js が含まれるため、すべてのスクリプトが個別のファイルとして、および application.js に2回含まれます。
本番環境でプリコンパイルされたアセットを使用すれば、すべて問題ありません。
development.rb ジェネラコディセタグプレ
production.rb ジェネラコディセタグプレ
application.rb ジェネラコディセタグプレ
解決
development.rbに以下を追加してみてください。 ジェネラコディセタグプレ
...次にブラウザのキャッシュをクリアします(コメントに基づいて更新)
静的アセットとは、パブリック/アセット内のプリコンパイル済みアセットを指します。これは、rake assets:precompile
がそれらを配置する場所です。
何が起こっているのかというと、パブリック/アセットに存在するものはすべて、アプリ/アセットにサービスを提供している場合はそれを上書きします。したがって、jsタグがapp / assets / application.jsを識別しようとしているときに、public / assets /application.jsが読み込まれます。
他のヒント
/ public / assetsを削除したら、ブラウザのキャッシュもクリアする必要があります。
これは私に問題を引き起こしました。次のように設定すると、アプリは機能しますが、単一のapplication.jsファイルが含まれます。これは開発には必要ありません。 ジェネラコディセタグプレ
以前にアセットをプリコンパイルしていました(原因のようです)。
これを修正するために、次のことを行いました:
- 以前のプリコンパイルで追加されたpublic / assetsディレクトリを削除します。
-
RAILS_ENV=development rake assets:clean
を実行して、tmp /アセットをクリアします - 編集されたapp / assets / application.js
application.jsを編集した後で初めてエラーが発生し、ページに含まれているapplciation.jsが完全なプリコンパイル済みのapplication.jsではなかったことが修正されました。
これらすべてを実行する必要があるかどうかはわかりません。また、途中でサーバーを再起動していました。
これにつまずきました(もう一度)、-//= require
の最後にあるすべてのapplication.js
ディレクティブの後に、空白行を追加することを忘れないでください!
同じ問題をより少ないファイルで追加します。
こちらの
開発モードでは、アセットは順番に個別のファイルとして提供されます マニフェストファイルで指定されています。
私の解決策は、
*= require_tree .
からapplication.css.less
の行を削除し、以下から@import "my-styles";
のみを使用することでした。JavaScriptで同様の解決策を見つけることができるかもしれません...