【发布时间】:2012-03-14 19:14:08
【问题描述】:
在生产模式下,rails 似乎无法从资产管道中找到任何预编译资产。
我正在使用在 CentOS 上的 RVM 中运行的 rails 3.2.0 和 ruby 1.9.3。没有与此应用程序一起运行的其他 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 服务器进程的用户对公共/资产具有读取、写入和执行权限,因此我认为这不是权限问题。我错过了配置步骤吗?
编辑
我注意到没有错误表明资产未预编译,因此我尝试通过将“/assets/application-892c6227e631daf9a8e041b1d4d002ec.css”附加到主机路径的末尾来从网页访问样式表:
http://www.myapp.com"/assets/application-892c6227e631daf9a8e041b1d4d002ec.css"
这有效并且样式表打开了。
【问题讨论】:
标签: asset-pipeline ruby-on-rails-3.2