Rails 3.1资产管道javascripts编译,但不在生产中工作(Heroku)

时间:2012-03-22 01:07:35

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

我最近将我的应用程序切换到Rails 3.1并开始使用资产管道。我的所有脚本都在生产中编译成application.js,但并非所有脚本都正常工作。例如,如果您查看http://photoramblr.com/assets/application.js并搜索“twipsy”,您会看到它在那里,但它无效。在home page上,鼠标悬停在图片上会显示工具提示。这在开发中很好用,但不能用于生产。

我的应用程序在Heroku上的Cedar堆栈上提供。

布局/ application.html.erb

<%= stylesheet_link_tag "application" %>
<%= javascript_include_tag "application" %>

的application.js

//= require jquery
//= require jquery_ujs
//= require_self
//= require_tree .

环境/ production.rb

config.serve_static_assets = true
config.static_cache_control = "public, max-age=86400"
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true

application.rb中

require 'rails/all'

if defined?(Bundler)
  Bundler.require *Rails.groups(:assets => %w(development test))
  # Bundler.require(:default, :assets, Rails.env)
end

我还在为名为“TN3”的图像查看器使用另一个脚本,该脚本也已编译,但在生产中无效。样式表正在编译并且工作得很好。有没有人经历过这样的事情?

更新

我也只是运行Heroku建议的rake assets:precompile并仍然得到相同的结果......

2 个答案:

答案 0 :(得分:2)

好吧,我终于能够通过在application.js文件中指定需要加载的文件来“解决”这个问题:

//= require bootstrap-twipsy
//= require jquery.tn3lite.min

我真的不明白为什么当我//= require_tree .在那里时这是必要的,但显然那不起作用......?

答案 1 :(得分:0)

检查,在应用程序中的config / environment / production.rb中的设置下面应该是真的

config.assets.compile = true

如果它不适合你,请告诉我