дистанционный пульт: ! Прекомпиляция активов не удалась. (Heroku)

77
6

Таким образом, у меня обычно нет проблем с развертыванием приложений в heroku, однако в этом конкретном случае у меня возникает прекомпиляция сбойной ошибки...

Эта линия здесь выделяется мне:

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

Но вот полные журналы ошибок:

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 git@heroku.com:fakename-dev.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:fakename-dev.git'

Что я делаю неправильно, и как я могу это исправить?

Ура!

спросил(а) 2021-01-25T19:07:38+03:00 5 месяцев назад
1
Решение
99

Вот дело, у нас был application.css который каким-то образом проигнорировал ошибки в других файлах .scss на .scss, поэтому у нас были активы, предварительно скомпилированные на локальном компьютере, но не могли прекомпилировать их на heroku.

Я решил переименовать application.css в application.css.scss и теперь, когда я запускал assets:precompile задача, я получил ошибки так же, как и на героку, и это позволило мне исследовать, где была проблема.

Это был миниатюрный файл bootstrap.css (пришел от дизайнера), который разработчик в нашей команде решил .scss его и изменив путь к шрифтам, не меняя расширение на .scss чтобы получить image-url и asset-url доступны помощники asset-url. Во всяком случае, я сбросил все это и использовал бутстрап-камень, который исправил проблемы с помощью значков.

Чтобы подвести итог, добавьте .scss в свои таблицы стилей, чтобы быстрее найти, где проблема при предварительной компиляции.

ответил(а) 2021-01-25T19:07:38+03:00 5 месяцев назад
45

Выполните команду: RAILS_ENV=production bundle exec rake assets:precompile, и вы можете легко разобраться с ошибкой.

ответил(а) 2021-01-25T19:07:38+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема