20

您好,我在公共目录中有资产(因为简单)

在我加载的布局中

<link href="/bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="/assets/css/jumbotron.css" rel="stylesheet">
<link href="/assets/css/application.css" rel="stylesheet">

在开发中它运行良好,但在生产资产中没有加载。

我的发展.rb

Web::Application.configure do
  config.cache_classes = false
  config.whiny_nils = true
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false
  config.action_mailer.raise_delivery_errors = false
  config.active_support.deprecation = :log
  config.action_dispatch.best_standards_support = :builtin
  config.active_record.mass_assignment_sanitizer = :strict
  config.active_record.auto_explain_threshold_in_seconds = 0.5
  config.assets.compress = false
  config.assets.debug = true
end

我的生产.rb

Web::Application.configure do
  config.cache_classes = false
  config.consider_all_requests_local       = true # default false, zobrazuje errory
  config.action_controller.perform_caching = false # default true
  config.serve_static_assets = false
  config.assets.compress = true
  config.assets.compile = true # default false
  config.assets.digest = true
  config.i18n.fallbacks = true
  config.active_support.deprecation = :notify
end
4

2 回答 2

32

Rails 4 和 5 的配置已更改。

对于 Rails 4:

config.serve_static_files = true

对于 Rails 5:

config.public_file_server.enabled = true
于 2016-09-17T01:22:07.150 回答
29

这是因为你有

  config.serve_static_assets = false

在你的production.rb文件中。

Rails 配置指南

  • config.serve_static_assets将 Rails 本身配置为提供静态资源。默认为 true,但在生产环境中被关闭,因为用于运行应用程序的服务器软件(例如 Nginx 或 Apache)应该提供静态资产。与默认设置不同,在运行(绝对不推荐!)或使用 WEBrick 在生产模式下测试您的应用程序时将其设置为 true。否则,您将无法使用页面缓存,并且对公共目录下定期存在的文件的请求无论如何都会影响您的 Rails 应用程序。

就像该指南建议的那样,您真的不应该依赖public/通过 Rails 应用程序提供资产,最好让 Web 服务器(例如 Apache 或 Nginx)处理服务资产以提高性能。

于 2013-09-14T21:31:42.217 回答