Rails 4 - NO manifest.json после того, как активы прекомпилируются на производственном сервере

Вот приложение/активы/для приложения Rails 4.2.

enter image description here

Есть 3 загрузочных файла js и css. После развертывания на производстве (ubuntu 12.1) предварительная компиляция ресурсов была выполнена на сервере (развернута под субури):

RAILS_ENV=production bundle exec rake assets:precompile RAILS_RELATIVE_URL_ROOT=/mysuburi

Вот production.rb:

  config.cache_classes = true
  config.eager_load = true
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true
  config.serve_static_files = false #ENV['RAILS_SERVE_STATIC_FILES'].present?
  config.assets.compress = true
  config.assets.js_compressor = :uglifier
  config.assets.compile = false
  config.assets.digest = true
  config.log_level = :debug
  config.i18n.fallbacks = true
  config.active_support.deprecation = :notify
  config.log_formatter = ::Logger::Formatter.new
  config.active_record.dump_schema_after_migration = false

Вот глава application.css.scss:

@import "bootstrap.min.css";
@import "bootstrap-theme.min.css";

@import "simple_form.css.scss";
@import "user_menus.css.scss";

В application.js он имеет:

//= require bootstrap.min

Вот результат ls для public/assets/on production server:

application-05cf37813d76c2bd659271403789374cc118f1a4e616ec220969577b79ff6514.css
application-375b4b5d8fc285716f4fdca966aa960912efe8292242df8f1a60b99d5caa4b02.js
authentify
banquet_coursex
banquetx
biz_workflowx
commonx
glyphicons-halflings-regular-5d234508037dc13a419ef6ce48f3fc73dbb477f1a162c052b872182b494e626e.svg
glyphicons-halflings-regular-bd18efd3efd70fec8ad09611a20cdbf99440b2c1d40085c29be036f891d65358.ttf
glyphicons-halflings-regular-f495f34e4f177cf0115af995bbbfeb3fcabc88502876e76fc51a4ab439bc8431.eot
glyphicons-halflings-regular-fc969dc1c6ff531abcf368089dcbaf5775133b0626ff56b52301a059fc0f9e1e.woff
jquery-ui
searchx
state_machine_logx
user_manualx
user_menus-7c46e17f4172c2a954eeaf85e80b4e030d1ed0fb3927288bbe07eeb4fb8cbfc5.css

По сравнению с другим Rails-приложением отсутствует manifest.json в разделе /​​assets. Мы пробовали различные варианты конфигурации в config/environment/production.rb безрезультатно. Единственный вариант, который работает на рабочем сервере, - это живая компиляция config.assets.compile = true (не рекомендуется). Что не так с нашим кодом, чтобы вызвать прекомпиляцию активов?

UPDATE: мы восстановили приложение Rails с нуля, а проблема с активами осталась прежней. Эта проблема с прекомпиляцией активов может не иметь никакого отношения к настройке в config/production.rb' and 'config/initializers/aseets.rb, как мы подозреваем. Откатная версия bundler и rake не помогла. Те же файлы bootstrap css и js были использованы в другом приложении Rails 4.2, работающем на одном и том же производственном сервере без проблем.

Ответ 2

Я предполагаю, что вы включили эти JS и CSS файлы в свой HTML-шаблон приложения явно?

Они не будут волшебным образом скомпилированы в основное приложение CSS и JS файл, и вам нужно убедиться, что вы используете теги-помощники, а не прямые пути, ссылаясь на них из файлов erb файлов.

Если вы сомневаетесь, используйте путь asset_path.

Ответ 3

Файл manifestxxx.json создается после откат версии sprockets до 2.12.3 из 3.2.0. Проблема была вызвана слишком новой версией gem sprockets, которая используется для предварительной компиляции активов.