Rails только прекомпилирует * некоторые * файлы на производстве

У меня странная проблема, когда только некоторые наши активы предварительно компилируются на производстве. наш application.css файл компилируется и обновляется, но наш mobile.css файл не был скомпилирован с июля, и сайт по-прежнему указывает на эту старую версию.

И все же, как ни странно, у нас нет этой проблемы в нашей постановке или в местных условиях. Все ресурсы предварительно скомпилированы, и последние версии представлены на сайте.

В июле мы обновили сайт до rails 4 и изменили нашу конфигурацию так:

# Rails 4 changed the precompile to only for app/assets. This will include vendor/assets
config.assets.precompile << Proc.new{|filename, path| %w(.png .gif .css .js .htc .svg .eot .woff .ttf).include?(File.extname(filename)) && path =~ /(\/lib\/assets)|(\/vendor\/assets)/ }


config.assets.precompile += [
  'form.css',
  'homepage.css',

  …

  #mobile
  'common_mobile.css'
]

Любые идеи о том, что может вызвать это?

1 ответ

Так что обычно вам нужны файлы application.js & application.css для ссылки на все файлы css & js для их компиляции. Все, чего у вас там нет, должно быть в другом файле манифеста, который вы добавляете в путь прекомпиляции. Или что вы добавляете вручную к пути прекомпиляции.

Так что если у вас есть:

assets/
  stylesheets/
    application.css
    styles/
    mobile.css

Application.css включает все в папке стилей. Как должен выглядеть путь прекомпиляции:

config.assets.precompile += %w(mobile.css)

Теперь вы показали сканирование на различные расширения. Вы действительно можете добавить их в массив, вам не нужно брать полные пути к файлам или что-нибудь необычное.

config.assets.precompile += %w(mobile.css .css .eot .htc)

И так далее.

Теперь имейте в виду, что если вы используете папки, отличные от: assets/ images, assets/ stylesheets или assets/javascripts, добавьте папки, как вам нужно, в production.rb:

 config.assets.paths << Rails.root.join("app", "assets", "fonts")
 config.assets.paths << Rails.root.join("vendor", "assets", "audio")

Тогда подстановочные знаки в пути прекомпиляции вступят в игру.

Чтобы проверить это, просто настройте производство на своем компьютере и выполните команду rake:

RAILS_ENV=production bundle exec rake assets:precompile

И посмотрите на результат на публике. Я почти уверен, что для этой команды по умолчанию используется рабочая среда, но она может быть и явной.

Другие вопросы по тегам