Rails 4 - 在生产服务器上资源预编译之后没有manifest.json

时间:2015-06-18 20:38:17

标签: ruby-on-rails ruby-on-rails-4 asset-pipeline precompile

以下是Rails 4.2应用程序的app / assets /。

enter image description here

有3个bootstraps js和css文件。部署到生产(ubuntu 12.1)后,资产预编译在服务器上完成(部署在suburi下):

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

以下是生产服务器上public / assets /的ls输出:

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应用进行比较,它在/ assets下缺少manifest.json。我们在config/environment/production.rb中尝试了各种配置选项但没有用。生产服务器上唯一可行的选项是config.assets.compile = true的实时编译(不推荐)。我们的代码导致资产预编译失败的问题是什么?

更新:我们从头开始重新构建了Rails应用程序,资产问题仍然存在。我们怀疑,此资产预编译问题可能与config/production.rb' and 'config/initializers/aseets.rb中的设置无关。回滚版bundlerrake没有帮助。相同的bootstrap css和js文件已经在同一个生产服务器上运行的另一个Rails 4.2应用程序中使用而没有问题。

3 个答案:

答案 0 :(得分:16)

如果您正在使用链接3.x,则清单文件现在名为.sprockets-manifest-md5hash.json,在Upgrading Guide

中说明

答案 1 :(得分:0)

我假设你明确地在应用程序HTML模板中包含这些JS和CSS文件?

他们不会神奇地最终编译成主应用程序CSS和JS文件,并且您需要确保在从HTML erb文件引用它们时使用标记帮助程序,而不是直接路径。

如有疑问,请使用asset_path。

答案 2 :(得分:0)

在从3.2.0回滚sprockets版本到2.12.3之后生成manifestxxx.json文件。问题是由用于预编译资产的新版本的gem sprockets引起的。