В режиме производства рельсы не могут найти никаких предварительно скомпилированных активов из конвейера активов.
Я использую rails 3.2.0 и ruby 1.9.3, работающие внутри RVM на CentOS. Никакой дополнительный веб-сервер не работает вместе с этим приложением. Приложение было недавно обновлено, чтобы использовать конвейер активов, поскольку он был первоначально приложением rails 3.0.
После запуска
rake assets:clean
rake assets:precompile
Я вижу хешированный контент в public/assets, как и следовало ожидать. Хэши в конце файлов соответствуют тем, которые я вижу в источнике страницы.
Тем не менее, во время выполнения, вот что я вижу для каждого актива Rails пытается служить:
Started GET "/assets/application-892c6227e631daf9a8e041b1d4d002ec.css" for 75.149.58.169 at 2012-03-14 11:42:43 -0700
ActionController::RoutingError (No route matches [GET] "/assets/application-892c6227e631daf9a8e041b1d4d002ec.css"):
Я не имею в виду папку, в которой размещается каждый актив; все ссылки на активы выглядят так:
//css:
.class {
background: url(asset.png) no-repeat;
}
//erb:
<%= image_tag "asset.png" %>
<%= link_to "page", :class => "class" %>
Соответствующие настройки трубопровода активов в файле production.rb:
config.serve_static_assets = false
config.assets.enabled = true
config.assets.compress = true
config.assets.debug = false
config.assets.compile = false
config.assets.digest = true
И, наконец, параметры актива из config/application.rb:
config.assets.enabled = true
config.assets.version = '1.0'
Пользователь, запускающий серверный процесс rails, имеет права на чтение, запись и выполнение для public/assets, поэтому я не думаю, что это проблема с правами. Я пропустил шаг конфигурации?
Edit
Я заметил, что нет ошибок, заявляющих, что активы не предварительно скомпилированы, поэтому я попытался получить доступ к таблице стилей с веб-страницы, добавив "/assets/application-892c6227e631daf9a8e041b1d4d002ec.css" в конец пути хоста:
http://www.myapp.com"/assets/application-892c6227e631daf9a8e041b1d4d002ec.css"
Это сработало, и таблица стилей открылась.