Github などのシステムには、これらのチェックをレビュー プロセスに統合する独自の方法があり、それを使用するとよいでしょう。
概要
このために髪を抜いてきました。私は資産パイプラインといつも悪い関係にあり、いつも問題を引き起こしています。そして今日もまた…。
アセットをローカルでコンパイルしてみると、すべて問題ありません。
$ RAILS_ENV=production rake assets:precompile --trace
しかし、Capistrano を使用してデプロイすると、次のようになります。
cd /var/www/xxx/releases/20140717164232 && ( RAILS_ENV=production bundle exec rake assets:precompile )
次のエラーが表示されてクラッシュします。
rake aborted!
NoMethodError: undefined method `[]' for nil:NilClass
(in /var/www/xxx/releases/20140717164232/app/assets/stylesheets/application-sign-in.css)
/var/www/xxx/shared/bundle/ruby/2.1.0/gems/sprockets-2.11.0/lib/sprockets/sass_functions.rb:63:in `sprockets_context'
これをデバッグする方法が真剣にわかりません。ローカルでは再現できず、サーバーではエラーがどこにも表示されません。
エラーを検索し、いくつかのことを試しましたが、何も役に立ちませんでした。更新することでエラーがなくなるという人もいます。または、sass-rails gem の前に sprockets gem を追加することで解決するとのことです。
私のプロジェクトは次のように設定されています。テンプレートを表すアセットを含む gem を備えた通常の Rails 4 アプリ。次の行を使用して、すべてがコンパイルされていることを確認します。
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif *.css *.js *.eot *.woff *.ttf *.svg)
これを解決する方法、またはデバッグする方法を知っている人はいますか?
編集
すべてのasset-url()ヘルパーを削除すると機能するようですが、繰り返しになりますが、その理由はわかりません。
解決策
同じ問題が発生しましたが、それは .scss 拡張子を持たないasset-urlを含むCSSファイルであることが判明しました。奇妙なことに、アセットをローカルではコンパイルできましたが、サーバー上ではコンパイルできませんでした。