0

アプリを本番環境にデプロイすると(capistranoを使用)、アセットの事前コンパイル中にエラーが発生します。

  * executing `deploy:assets:precompile'
  * executing "cd /home/ubuntu/projects/Marketplace-web/releases/20130124162353 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile"
    servers: ["server_name"]
    [server_name] executing command
*** [err :: server_name] rake aborted!
*** [err :: server_name] File name too long - /home/ubuntu/projects/Marketplace-web/releases/20130124162353/public/assets/assets/assets/assets/assets/assets/assets/assets/assets/assets/assets/assets/assets/widgets/jquery.jcarousel-d505e569ed1040e0b45bc33e0e49f117.js-26b4b41e4a45cb353ba7e39510893ace-93b194138c96579222ca08f9651946a7-43eca25d0cc511b37176bc58d8575e1a-1b97916c47bfa22545013b3751cb59e4-d9043106773924d12596e08b349f00dc-b7b7aa9bf440ca19896b1103d7651728-c40c1f2b8b11e6de163fefea9db6778c.gz+

http://railscasts.com/episodes/335-deploying-to-a-vps?view=commentsにコメントがあり、config/application.rbからこれを削除することで問題を解決できると言っています。

config.assets.paths << "#{Rails.root}/public"

私はそれを削除し、タスクはパブリック/アセットフォルダー内のプリコンパイルされた静的アセットの再コンパイルを停止しましたが、私の質問は次のとおりです:そもそもなぜそれを行ったのですか?その構成行は、他のコンパイルされていない静的アセットの場所をRailsに指示することを目的としていませんか?config.assets.paths配列のアセットをコンパイルしようとするのはなぜですか?Railsが静的アセットの場所を認識できるように、その行は必要ありませんか?

私はそれをすべて間違っていますか?コンパイルされていない静的アセットはどこに置くべきですか?また、それらを見つける場所をRailsにどのように伝えるべきですか?

4

1 に答える 1

0

RailsAssetsの構成ドキュメントを確認してください。

  • config.assets.pathsアセットの検索に使用されるパスが含まれています。この構成オプションにパスを追加すると、それらのパスがアセットの検索に使用されます。

入力ディレクトリの配列に出力ディレクトリを追加しないでください。それ以外の場合は、前のアセットコンパイル実行の出力が、次のアセットコンパイル実行へのさらに別の入力として含まれます。

コンパイル可能なアセットは、通常、作成したapp/assets場合と作成vendor/assetsしなかった場合に含まれているはずです。入れてみませんjquery.carousel.jsvendor/assets/javascripts/

于 2013-01-24T19:03:33.730 に答える