Rails 3生产中的资产路由问题

时间:2011-12-20 23:47:54

标签: ruby-on-rails-3.1 asset-pipeline rails-routing

我目前在app / assets目录中的jquery.rest.js和jquery-ui-1.8.11.custom.min.js文件中有我的资产,但我的生产日志中仍然出现以下错误。

Started GET "/assets/jquery.rest-f1490ffc30dcefe21715ae360de2bead.js" for 24.141.74.123 at 2011-12-20 18:40:50 -0500
Served asset /jquery.rest-f1490ffc30dcefe21715ae360de2bead.js - 404 Not Found (3ms)

ActionController::RoutingError (No route matches [GET] "/assets/jquery.rest-f1490ffc30dcefe21715ae360de2bead.js"):


Started GET "/assets/jquery-ui-1.8.11.custom.min-707e06de7fe351e6e77e419988c20fd6.js" for 24.141.74.123 at 2011-12-20 18:40:50 -0500
Served asset /jquery-ui-1.8.11.custom.min-707e06de7fe351e6e77e419988c20fd6.js - 404 Not Found (3ms)

ActionController::RoutingError (No route matches [GET] "/assets/jquery-ui-1.8.11.custom.min-707e06de7fe351e6e77e419988c20fd6.js"):

我的应用程序在开发中工作,我不知道为什么长字符串附加在javascript文件名称的末尾,即生成中-707e06de7fe351e6e77e419988c20fd6的{​​{1}}

2 个答案:

答案 0 :(得分:1)

该字符串称为指纹。 Rails在生产模式中添加这些以允许在客户端缓存资产以提高性能。这包含在Rails asset pipeline guide

采用此策略的副产品之一是您必须预编译文件以进行生产。这是通过内置于Rails的特殊任务完成的,通常由Capistrano在部署期间运行(您需要设置它 - 详细信息在指南中)。

此外,当你有一个不在清单中的js和css文件(默认的application.css和application.js)时,除非你把它们添加到一个配置变量中,否则它们不会被预编译。

您是否可以编辑问题以包含链接到文件的方式,如果您正在使用清单以及是否正在进行预编译,还可以告诉我们吗?

答案 1 :(得分:0)

我有同样的问题。

所选答案下的评论不适合我,但以下内容适用于我:

- vim config/application.rb

# Comment this to avoid `ActionController::RoutingError (No route matches [GET] "/assets/jquery-ui-1.8.16.custom.min-1116bf6f7eb1469bb3c60f6af13199ac.js");`
#    config.assets.debug   = true

感谢。