我一直在为这件事烦恼。我和资产管道的关系一直不好,它总是给我带来麻烦。今天又来了。
当我尝试在本地编译我的资产时,一切都很好:
$ 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宝石。
我的项目设置如下;一个常规的rails 4应用程序,其中包含一个gem,其中包含表示模板的资产。我使用以下行来确保所有内容都已编译:
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif *.css *.js *.eot *.woff *.ttf *.svg)
有人知道如何解决这个问题,或者如何调试它吗?
编辑
删除所有的asset-url()
助手似乎工作..但再次,没有线索为什么..
3条答案
按热度按时间iaqfqrcu1#
我遇到了同样的问题,结果是一个包含
asset-url
的css文件,但没有.scss
扩展名。奇怪的是,我可以在本地编译资源,但不能在服务器上编译。8mmmxcuj2#
问题是因为.css扩展名而不是. scss。我已经在.scss上修改了,效果很好。
p5fdfcr13#
Heroku has a post about this.在本地预编译并添加所有这些文件,特别是
/public/assets/manifest.yml
。Heroku应该忽略预编译并继续。