Почему Rails не может найти мои активы?
В рабочем режиме рельсы не могут найти какие-либо предварительно скомпилированные активы из конвейера активов.
Я использую 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, поэтому я не думаю, что это проблема с разрешениями. Я пропустил шаг настройки?
редактировать
Я заметил, что нет никаких ошибок, утверждающих, что ресурсы не предварительно скомпилированы, поэтому я попытался получить доступ к таблице стилей с веб-страницы, добавив "/assets/application-892c6227e631daf9a8e041b1d4d002ec.css" в конец пути к хосту:
http://www.myapp.com"/assets/application-892c6227e631daf9a8e041b1d4d002ec.css"
Это сработало, и таблица стилей открылась.