Подтвердить что ты не робот

Сбой компиляции активов в серверной среде: "NoMethodError: undefined method` [] 'для nil: NilClass"

Я вытаскиваю волосы за это. У меня всегда были плохие отношения с конвейером активов, это всегда давало мне проблемы.. И сегодня снова..

Когда я пытаюсь скомпилировать свои ресурсы локально, все в порядке:

$ 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'

Я серьезно не знаю, как отлаживать это. Локально я не могу воспроизвести его, и на моем сервере ошибка просто не указывает на меня нигде.

Я искал ошибку и пробовал пару вещей, но ничего не помогло. Некоторые говорят, что ошибка уходит путем обновления. Или добавив драгоценный камень звездочек перед камнем сасс-рельсов.

Мой проект настроен следующим образом; Обычное rails 4 приложение с драгоценным камнем, содержащим активы, представляющие шаблон. Я использую следующую строку, чтобы убедиться, что все скомпилировано:

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

Кто знает, как это решить или как его отладить?

ИЗМЕНИТЬ

Удаление всего помощника asset-url() кажется сработавшим. Но опять же, не знаю, почему..

4b9b3361

Ответ 1

У меня была проблема с samme, и это оказался файл css, содержащий asset-url, у которого не было расширения .scss. Сверху я мог компилировать активы локально, но не на сервере.

Ответ 2

проблема связана с расширением .css вместо .scss. Я изменил его на .scss, и он сработал.

Ответ 3

У Heroku есть сообщение об этом. Предварительно скопируйте его локально и добавьте все эти файлы, особенно /public/assets/manifest.yml. Heroku должен игнорировать предварительную компиляцию и продолжать.