1

我将 Rails 2.2.2 应用程序迁移到 Rails 3.1。

在开发模式下:/var/www/project_dir# thin start --ssl 找到所有资产并提供精美的服务。

当我在生产模式下运行时:/var/www/project_dir# thin start --ssl -e production
所有资产请求(JS、CSS 和图像)都返回 404。

开发和生产模式的路径是相同的。

在此处输入图像描述

我已经到了用尽所有调试想法的地步,不知道为什么在生产模式下找不到任何资产。

我确实尝试过迁移到资产管道,但这导致了更多我认为我现在无法解决的问题,所以我需要在关闭资产管道的情况下解决这个问题。

欢迎任何和所有的想法,谢谢!

详细信息
Web 服务器:Thin 1.5.0
资产管道:关闭
资产目录:
/var/www/project_dir/public/images
/var/www/project_dir/public/javascripts
/var/www/project_dir/public/stylesheets

生成的资产路径(开发模式)

<script src="/javascripts/jquery.js?1366806358" type="text/javascript"></script>
<script src="/javascripts/jquery-ui.js?1366806358" type="text/javascript"></script>
<script src="/javascripts/jquery.alerts.js?1366806358" type="text/javascript"></script>
<script src="/javascripts/application.js?1366806357" type="text/javascript"></script>
<link href="/stylesheets/jquery-ui.css?1361279500" media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/jquery.alerts.css?1361279500" media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/default.css?1361279499" media="screen" rel="stylesheet" type="text/css" />

生成的资产路径(生产模式)

<script src="/javascripts/jquery.js?1366806358" type="text/javascript"></script>
<script src="/javascripts/jquery-ui.js?1366806358" type="text/javascript"></script>
<script src="/javascripts/jquery.alerts.js?1366806358" type="text/javascript"></script>
<script src="/javascripts/application.js?1366806357" type="text/javascript"></script>
<link href="/stylesheets/jquery-ui.css?1361279500" media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/jquery.alerts.css?1361279500" media="screen" rel="stylesheet" type="text/css" />
<link href="/stylesheets/default.css?1361279499" media="screen" rel="stylesheet" type="text/css" />
4

1 回答 1

8

Apache 会自动为您执行此操作,但使用 Thin,您需要执行以下操作:

/config/environments/production.rb

将此指令设置为 true:

config.serve_static_assets = true

这将使生产模式能够从/public文件夹中读取资产

于 2013-04-30T14:27:50.893 回答