ruby 资源编译在服务器环境中崩溃,原因如下:“NoMethodError:nil的未定义方法`[]':NilClass”

bd1hkmkf  于 2023-04-11  发布在  Ruby
关注(0)|答案(3)|浏览(119)

我一直在为这件事烦恼。我和资产管道的关系一直不好,它总是给我带来麻烦。今天又来了。
当我尝试在本地编译我的资产时,一切都很好:

$ 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()助手似乎工作..但再次,没有线索为什么..

iaqfqrcu

iaqfqrcu1#

我遇到了同样的问题,结果是一个包含asset-url的css文件,但没有.scss扩展名。奇怪的是,我可以在本地编译资源,但不能在服务器上编译。

8mmmxcuj

8mmmxcuj2#

问题是因为.css扩展名而不是. scss。我已经在.scss上修改了,效果很好。

p5fdfcr1

p5fdfcr13#

Heroku has a post about this.在本地预编译并添加所有这些文件,特别是/public/assets/manifest.yml。Heroku应该忽略预编译并继续。

相关问题