Rails コードベースの外部で、アセットのプリコンパイルに影響を与える可能性のあるものは何ですか?
私の同僚はアセットのプリコンパイルの問題を経験していますが、私にとっては問題なく機能しています。同じコードを実行しています。バージョン管理には Gemfile と Gemfile.lock があるので、これらは同一であり、application.rb は両方で同じです (たとえば、config.assets.enabled = true
両方に設定されています)。
関連する 2 つのファイルを次に示します。発生している問題は以下のとおりです。
アプリ/ビュー/レイアウト/application.html.erb:
...
<%= stylesheet_link_tag "application", :media => "all" %>
...
app/assets/stylesheets/application.css:
/*
* This is a manifest file that'll automatically include all the stylesheets available in this directory
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
* the top of the compiled file, but it's generally better to create a new file per style scope.
*= require_self
*= require booking_availability_table
*= require bootstrap_and_overrides
*= require browse_coaches
*= require landing_pages
*= require layout
*= require lightbox
*/
注: これらのファイルの一部は .css、一部は .css.less、一部は .css.scss です。
問題:
ホームページを読み込むと、エラーが発生します
TypeError in Static_pages#home
can't convert nil into String
(in /path/to/app/assets/stylesheets/layout.css.scss)
Extracted source (around line #20)
20: <%= stylesheet_link_tag "application", :media => "all" %>
実験的な削除から、問題を引き起こしているのは.css.scssファイルのみであることがわかりました。application.css
SASS ファイルに対応する行を削除すると、エラーの発生が停止し、ページが読み込まれます。ただし、そうする場合:
ホームページには へのリンクがたくさんあり、私の場合のよう/stylesheets/___.css
に正しいのではなく、404 になり/assets/____.css
ます。
私たちが試したこと:
デバッガーを使用して、両方のマシンにホームページを読み込んでみました。私たちのコード実行はここで分岐しました:
.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.2.1/lib/sprockets/helpers/rails_helper.rb:
def stylesheet_link_tag(*sources)
...
sources.collect do |source|
if debug && asset = asset_paths.asset_for(source, 'css')
asset.to_a.map { |dep|
super(dep.pathname.to_s, { :href => path_to_asset(dep, :ext => 'css', :body => true, :protocol => :request, :digest => digest) }.merge!(options))
}
else
super(source.to_s, { :href => path_to_asset(source, :ext => 'css', :body => body, :protocol => :request, :digest => digest) }.merge!(options))
end
end.join("\n").html_safe
具体的には、ステートメントasset_paths.asset_for(source, 'css')
は同僚にはエラーを引き起こしますが、私にはそうではありません。
また、rails と rvm のアンインストールと再インストールも試みました。