У активов Rails 3.1 нет отпечатков пальцев в производстве - PullRequest
9 голосов
/ 04 октября 2011

Только начал адаптироваться к рельсам 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 Ответ

3 голосов
/ 04 октября 2011

Убедитесь, что у вас включен конвейер в application.rb:

config.assets.enabled = true

Используете ли вы правильные вспомогательные методы для написания тегов? У вспомогательных методов не должно быть / styleheets и / javascript в пути. Вот так (внутри erb):

javascript_include_tag "application"
stylesheet_link_tag "application"

Вам также потребуется запустить задачу прекомпиляции как часть процессов развертывания для создания файлов, поскольку вы установили для compile значение false.

В руководстве по конвейеру активов показано, как настроить это с помощью capistrano.

...