質問

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で同様の解決策を見つけることができるかもしれません...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top