Нет ошибки метода,[ ] неопределено для нулевого класса при предварительной компиляции ресурсов для производства
В моем режиме разработки, когда я предварительно компилирую ресурсы приложения, используя команду
rake bundle exec rake assets:precompile RAILS_ENV=production --trace
Я получаю следующую ошибку
NoMethodError: undefined method '[]' for nil:NilClass
/home/sable/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.3/lib/sprockets/sass_processor.rb:278:in `sprockets_context'
/home/sable/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.3/lib/sprockets/sass_processor.rb:124:in `asset_path'
/home/sable/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.3/lib/sprockets/sass_processor.rb:137:in `asset_url'
/home/sable/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.3/lib/sprockets/sass_processor.rb:155:in `image_url'
/home/sable/.rvm/gems/ruby-2.3.0/gems/sass-3.4.22/lib/sass/script/tree/funcall.rb:143:in `_perform'
Когда я запускаю свой сервер в режиме разработки с помощью команды rails s, возникает ошибка, которая, я думаю, может быть причиной ошибки перед компиляцией, а именно:
ActionController::RoutingError (No route matches [GET] "/javascripts/defaults.js"):
Я прочитал все данные о рельсах и рельсах, но не могу все обернуть вокруг себя и решить проблему, так как я новичок в структуре рельсов, и я буду благодарен за любое направление или помощь.
Решение Я отредактировал файл
/home/sable/.rvm/gems/ruby-2.3.0/gems/sprockets-3.6.3/lib/sprockets/sass_processor.rb
например, из строки 120 я добавил строку "помещает" путь "" в строку 122, чтобы я мог видеть путь, по которому исходит ошибка предварительной компиляции
def asset_path(path, options = {})
path = path.value
puts path........
я сохранил файл и снова побежал
rake bundle exec rake assets:precompile RAILS_ENV=production --trace
я увидел, что я использовал вспомогательный метод sasss 'image-url' в файле css, поэтому прекомпилятор не мог каким-то образом добраться до этого файла, я создал новый файл с расширением css.scss, это решило мою проблему, я могу не могу объяснить это лучше, потому что я не совсем понимаю это полностью, но сумел понять из опыта людей, оформить заказ, http://guides.rubyonrails.org/asset_pipeline.html и Как ссылаться на изображения в CSS в Rails 4.
1 ответ
Попробуйте команду ниже.
RAILS_ENV = производственный пакет exec rake assets: прекомпиляция --trace