Я не могу заставить прекомпиляцию конвейера ресурсов Rails 3.1 работать в производственном режиме. Всегда происходит сбой на изображениях, на которые ссылается SCSS, с ошибкой типа:
$ bundle exec rake assets:precompile RAILS_ENV=production
rake aborted!
rails.png isn't precompiled
(in /home/florian/AssetTest/app/assets/stylesheets/application.css.scss)
Но когда я смотрю в каталог public / assets, изображение там, поэтому оно прекомпилируется:
$ ls public/assets | grep rails
rails-dd352fc2630e5f9aa5685ef1d7fe5997.png
Файл SCSS в этом случае просто содержит тестовый код:
/*
* This is a manifest file that'll automatically include all the stylesheets available in this directory
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
* the top of the compiled file, but it's generally better to create a new file per style scope.
*= require_self
*= require_tree .
*/
body {
background: #ffffff image-url('rails.png') no-repeat 0 center;
}
Если я не использую помощник image-url в SCSS, а просто url ('/ assets / rails.png'), прекомпиляция работает нормально, а файл manifest.yml создается в public / assets.
Интересно то, что если я переключу SCSS обратно на image-url ('rails.png') и запустлю другую прекомпиляцию, он все равно будет работать (я полагаю, потому что изображение теперь уже указано в файле манифеста).
Что я здесь не так делаю? Я на самом деле не хочу игнорировать вспомогательные методы (так как их использование - это то, как вы должны это делать, верно?), И я определенно не хочу создавать файл манифеста вручную ...