资产管道 – 为什么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之后,这是一个不正确的设置

相关文章

什么是设计模式一套被反复使用、多数人知晓的、经过分类编目...
单一职责原则定义(Single Responsibility Principle,SRP)...
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强...
适配器模式将一个类的接口转换成客户期望的另一个接口,使得...
策略模式定义了一系列算法族,并封装在类中,它们之间可以互...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,...