0

我正在将 Rails 3.0 应用程序升级到 Rails 3.1,但资产管道在开发中不起作用。我正在使用带有 nginx 反向代理的瘦。

例如

javascript_include_tag 'application' # => <script src="/javascripts/application.js" type="text/javascript"></script>

和卷曲...

$ curl -sL -w "%{http_code}" "http://myapp.dev/javascripts/application.js" -o /dev/null
404
$ curl -sL -w "%{http_code}" "http://myapp.dev/assets/application.js" -o /dev/null
404

但是当我直接而不是通过 nginx 打瘦时,我得到了我所期望的:

javascript_include_tag 'application' # => <script src="/assets/application.js" type="text/javascript"></script>

它有效吗?

$ curl -sL -w "%{http_code}" "http://localhost:3000/assets/application.js" -o /dev/null
200

是的!为什么会这样?

这是我的 nginx 配置的摘录:https ://gist.github.com/1163638

很高兴提供更多信息,请问!

4

2 回答 2

1

您是否修改了开发环境文件?默认情况下,资产管道工作仅在生产中发生。

于 2011-08-22T21:59:14.623 回答
1

您的问题很可能是您需要预编译资产。尝试运行

rake assets:precompile

这是因为 nginx 只会盲目地尝试提供它应该提供的资产,这与 ruby​​ 服务器不同,它会检查是否存在,如果它们不存在则编译。

我建议观看 Ryan Bates关于该主题的截屏视频

编辑:

据我所知,如果文件不存在,则无法让 nginx 将请求传递到后端,但是我对配置 nginx 不是很熟悉,所以这可能是一个很好的问题服务器故障

于 2011-08-22T22:12:34.610 回答