我的 rails 3.1 应用程序在本地运行良好,但是当我在 Heroku 上运行它时,日志显示 Rails 没有在vendors/assets/javascripts
目录中找到 javascripts,即使手动浏览它们也是如此。
我正在使用 plupload-rails3 gem,并且 gem 的 javascripts 没有在 Heroku 上加载,但在我的本地开发机器上加载正常。
在我的 assets/javascripts/application.js 我有:
//= require_tree ../../../vendor/assets/javascripts/plupload-rails3
//= require_tree ../../../vendor/assets/stylesheets/plupload-rails3
//= require_tree ../../../vendor/assets/images/plupload-rails3
当我在 Heroku 上运行我的应用程序时,日志显示 Rails 尝试加载每个 plupload javascript,但使用令牌标识符失败:
ActionController::RoutingError (没有路由匹配 [GET] "/assets/plupload-rails3/plupload/js/plupload.full-f4741a878138cea127e6b38b6a08cf12.js"):
所以 plupload 小部件不会显示在 Heroku 的页面上(但当我在本地运行时会显示)。
但是,如果我手动浏览该位置(没有 ID 令牌):
http://MYAPPNAME.herokuapp.com/assets/plupload-rails3/plupload/js/plupload.full.js 我确实看到了该文件。
我也尝试在本地预编译资产,然后推送到 Heroku,结果相同。
因此,我的应用程序中的某些内容被 Heroku 上的 Rails 访问供应商/资产管道破坏了。
(我config.assets.compile = true
的 production.rb 文件中有。原始设置 false 导致应用程序在找不到预编译资产时崩溃,至少现在它没有崩溃,但它忽略了 javascript 小部件。)