资产管道 – 为什么Rails不会找到我的资产?

在生产模式下,rails似乎没有从资产管道中找到任何预编译的资产。

我正在使用rails 3.2.0和ruby 1.9.3在CentOS上的RVM内部运行。没有其他Web服务器与此应用程序一起运行。该应用程序最近才被更新为使用资产管道,因为它最初是一个rails 3.0应用程序。

运行后

rake assets:clean
rake assets:precompile

正如我所料,我看到公共/资产中的哈希内容文件末尾的散列与我在页面源中看到的一致。

然而在运行时,这是Rails试图提供的每个资产所看到的:

Started GET "/assets/application-892c6227e631daf9a8e041b1d4d002ec.css" for 75.149.58.169 at 2012-03-14 11:42:43 -0700

ActionController::RoutingError (No route matches [GET] "/assets/application-892c6227e631daf9a8e041b1d4d002ec.css"):

我不是指每个资产所在的文件夹;所有对资产的引用如下所示:

//css:
.class {
  background: url(asset.png) no-repeat;
}

//erb:
<%= image_tag "asset.png" %>
<%= link_to "page",:class => "class" %>

production.rb中的资产管道相关设置:

config.serve_static_assets = false
config.assets.enabled = true
config.assets.compress = true
config.assets.debug = false
config.assets.compile = false
config.assets.digest = true

最后,来自config / application.rb的资产设置:

config.assets.enabled = true
config.assets.version = '1.0'

启动rails服务器进程的用户对public / assets有读,写和执行权限,所以我不认为这是一个权限问题。我错过了配置步骤吗?

编辑

我注意到没有错误说明资产没有被预先编译,所以我试图通过将“/assets/application-892c6227e631daf9a8e041b1d4d002ec.css”附加到主机路径的末尾,从网页访问样式表:

http://www.myapp.com"/assets/application-892c6227e631daf9a8e041b1d4d002ec.css"

这工作,样式表打开。

进一步研究这个问题产生了这篇文章

application.css not being served as an asset

它似乎

config.serve_static_assets = false

只要我的Rails应用程序没有运行在Apache或Nginx之后,这是一个不正确的设置

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...