У активов Rails 3.1 нет отпечатков пальцев в производстве
Только начал адаптироваться к рельсам 3.1, я начал писать coffeescript и sass, и все отлично работает в разработке. Когда я запускаю сервер в работе, я получаю только:
<link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
<script src="/javascripts/application.js" type="text/javascript"></script>
в исходном коде страницы нет сгенерированного хеш-кода, и оба ресурса имеют ошибки маршрутизации:
Routing Error
No route matches [GET] "/stylesheets/application.css"
В чем причина этого? Я забыл что-то сделать?
настройки в средах /production.rb:
# Settings specified here will take precedence over those in config/application.rb
# Code is not reloaded between requests
config.cache_classes = true
# Full error reports are disabled and caching is turned on
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false
# Compress JavaScripts and CSS
config.assets.compress = true
# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false
# Generate digests for assets URLs
config.assets.digest = true
config.active_support.deprecation = :notify
Большое спасибо.
Добавить больше информации:
в layouts/application.html.erb я использую следующее для включения ресурсов:
<%= stylesheet_link_tag "application" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
И я попробовал bundle exec rake assets:precompile
который работает без вывода чего-либо, а затем запустить rails s -e production
Проблема сохраняется.
И я тоже пытался установить config.assets.compile = true
а потом беги rails s -e production
Проблема все еще сохраняется.
Пожалуйста помоги.
Дополнительная информация. Я видел, что скомпилированные js и css генерируются в папке public/assets, но в рабочей среде файлы включены без хеш-кода.
Помогите.
Решение: Просто проверил мой проект еще раз и обнаружил, что основной причиной является то, что я редактировал application.rb для поддержки mongodb. Я случайно прокомментировал
require "sprockets/railtie"
раскомментируйте это тогда все хорошо.
Оставьте это для других, чтобы напомнить мою ошибку новичка.
Большое спасибо, Ричард. Ваш ответ не окончательный ответ, но он очень помогает, действительно заслуживает голосования.
1 ответ
Убедитесь, что у вас включен конвейер в application.rb:
config.assets.enabled = true
Используете ли вы правильные вспомогательные методы для написания тегов? У вспомогательных методов не должно быть /styleheets и /javascript в пути. Вот так (внутри erb):
javascript_include_tag "приложение" stylesheet_link_tag "приложение"
Вам также нужно будет выполнить задачу прекомпиляции как часть процессов развертывания, чтобы создать файлы, поскольку вы установили для compile значение false.
Руководство по конвейеру активов показывает, как настроить это с помощью capistrano.