Apane101
Apane101

Reputation: 1123

remote: ! Precompiling assets failed. (Heroku)

So, I typically don't have any issues deploying apps to heroku, however, in this specific case I'm getting a precompile failed error...

This line here stands out to me:

remote:        NoMethodError: undefined method `[]' for nil:NilClass

But here are the full error logs:

remote:        Bundle completed (9.35s)
remote:        Cleaning up the bundler cache.
remote:        Removing carrierwave (0.10.0)
remote:        Removing foreigner (1.7.4)
remote:        Removing mailboxer (0.12.5)
remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
remote:        rake aborted!
remote:        NoMethodError: undefined method `[]' for nil:NilClass
remote:        (in /tmp/build_3dacd5df86a31726215c3dc3c1c22600/app/assets/stylesheets/application.css)
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/sass_functions.rb:63:in `sprockets_context'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-rails-4.0.5/lib/sass/rails/helpers.rb:23:in `asset_url'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/script/funcall.rb:113:in `_perform'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/script/node.rb:40:in `perform'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/perform.rb:298:in `visit_prop'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/base.rb:37:in `visit'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/perform.rb:100:in `visit'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/base.rb:53:in `block in visit_children'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/base.rb:53:in `map'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/base.rb:53:in `visit_children'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/perform.rb:109:in `block in visit_children'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/perform.rb:121:in `with_environment'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/perform.rb:108:in `visit_children'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/base.rb:37:in `block in visit'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/perform.rb:356:in `visit_directive'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/base.rb:37:in `visit'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/perform.rb:100:in `visit'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/base.rb:53:in `block in visit_children'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/base.rb:53:in `map'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/base.rb:53:in `visit_children'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/perform.rb:109:in `block in visit_children'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/perform.rb:121:in `with_environment'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/perform.rb:108:in `visit_children'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/base.rb:37:in `block in visit'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/perform.rb:128:in `visit_root'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/base.rb:37:in `visit'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/perform.rb:100:in `visit'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/visitors/perform.rb:7:in `visit'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/tree/root_node.rb:20:in `render'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/engine.rb:315:in `_render'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sass-3.2.19/lib/sass/engine.rb:262:in `render'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/sass_compressor.rb:24:in `evaluate'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/tilt-1.4.1/lib/tilt/template.rb:103:in `render'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/context.rb:197:in `block in evaluate'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/context.rb:194:in `each'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/context.rb:194:in `evaluate'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/bundled_asset.rb:25:in `initialize'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/base.rb:377:in `new'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/base.rb:377:in `build_asset'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/index.rb:94:in `block in build_asset'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/caching.rb:58:in `cache_asset'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/index.rb:93:in `build_asset'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/base.rb:287:in `find_asset'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/index.rb:61:in `find_asset'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/manifest.rb:211:in `block in find_asset'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/manifest.rb:257:in `benchmark'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/manifest.rb:210:in `find_asset'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/manifest.rb:119:in `block in compile'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/manifest.rb:118:in `each'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/sprockets/manifest.rb:118:in `compile'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-2.3.1/lib/sprockets/rails/task.rb:70:in `block (3 levels) in define'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-2.12.3/lib/rake/sprocketstask.rb:146:in `with_logger'
remote:        /tmp/build_3dacd5df86a31726215c3dc3c1c22600/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-2.3.1/lib/sprockets/rails/task.rb:69:in `block (2 levels) in define'
remote:        Tasks: TOP => assets:precompile
remote:        (See full trace by running task with --trace)
remote:  !
remote:  !     Precompiling assets failed.
remote:  !
remote: 
remote:  !     Push rejected, failed to compile Ruby app
remote: 
remote: Verifying deploy...
remote: 
remote: !   Push rejected to fakename-dev.
remote: 
To [email protected]:fakename-dev.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to '[email protected]:fakename-dev.git'

What am I doing wrong, and how can I fix this?

Cheers!

Upvotes: 6

Views: 5100

Answers (3)

Ahmed Elkoussy
Ahmed Elkoussy

Reputation: 8568

Apparently this can happen due to many reasons, but in my case, adding this line public_root_path: public to webpacker.yml has solved the issue

default: &default
  public_root_path: public
  ...

Upvotes: 0

Sanju B Myh
Sanju B Myh

Reputation: 281

Run the command: RAILS_ENV=production bundle exec rake assets:precompile, and you can sort out the error easily.

Upvotes: 2

rmagnum2002
rmagnum2002

Reputation: 11421

Here is the deal, we had application.css that somehow ignored the errors in other .scss files on precompile, so we had assets precompiled on local but couldn't precompile them on heroku.

I decided to rename application.css to application.css.scss and now when I was running assets:precompile task I got errors the same as on heroku and this allowed me to investigate where the problem was.

It was a minified bootstrap.css file(came from the designer), that a dev in our team decided to re-factor by indenting it and change path to fonts without changing the extension to .scss to get the image-url and asset-url helpers available.. Anyway, I dropped all of that and used bootstrap gem that fixed the problems with icons.

To sum it up, add .scss to your stylesheets to find faster where the problem is while precompiling.

Upvotes: 6

Related Questions