1

我的 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 小部件。)

4

1 回答 1

0

Application.js 是 javascript 的清单文件,您不想在其中包含图像或 css。vendor/assets/javascripts 应该已经在它正在搜索的路径中,所以只需包括:

//= require_tree ./plupload-rails3

编辑:您可以执行类似的操作以将 css 包含在 application.css 中,图像不需要包含在清单中。

查看 Rails 指南:http://guides.rubyonrails.org/asset_pipeline.html和 Ryan Bates Railscast http://railscasts.com/episodes/279-understanding-the-asset-pipeline了解更多信息。

Edit2:刚刚浏览了 gem,你跑了吗

bundle exec rake plupload_rails3:install_assets

安装资产?如果没有,请运行它,然后尝试上面的代码。

于 2012-04-10T20:07:21.510 回答