资产编译崩溃在服务器环境中:"NoMethodError:未定义的方法`[]'为nil:NilClass"

Tim*_*aas 19 ruby sprockets asset-pipeline ruby-on-rails-4

我一直在拔头发.我一直与资产管道关系不好,总是给我带来麻烦......今天又来了......

当我尝试在本地编译我的资产时,一切都很好:

$ RAILS_ENV=production rake assets:precompile --trace
Run Code Online (Sandbox Code Playgroud)

但是当我与Capistrano一起部署时:

cd /var/www/xxx/releases/20140717164232 && ( RAILS_ENV=production bundle exec rake assets:precompile )
Run Code Online (Sandbox Code Playgroud)

它崩溃时出现以下错误:

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'
Run Code Online (Sandbox Code Playgroud)

我真的不知道如何调试这个..本地我无法重现它,在我的服务器上错误只是没有指向我任何地方..

我已经搜索了这个错误并尝试了几件事,但没有任何帮助.有人说通过更新来消除错误..或者通过在sass-rails gem之前添加sprockets gem.

我的项目设置如下:带有宝石的常规rails 4 app,其中包含代表模板的资产.我使用以下行来确保编译所有内容:

config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif *.css *.js *.eot *.woff *.ttf *.svg)
Run Code Online (Sandbox Code Playgroud)

谁知道如何解决这个问题,或者如何调试它?

编辑

删除所有asset-url()助手似乎工作..但再次,没有线索为什么..

Sha*_*goz 44

我有samme问题,结果证明是一个包含asset-url没有.scss扩展名的css文件.奇怪的是,我可以在本地编译资产,但不能在服务器上编译.