2015-04-01 81 views
0

所以我有一个小问题让我疯狂。jQuery事件监听器在Heroku Production上不起作用

我有一个利用一些jQuery事件监听器的Rails 4应用程序。这些在开发和分期方面非常有效。但是当我推动生产时,他们并没有定下来。

值得一提的是,'staging'是Heroku上的Cedar-14应用,就像'production'一样。

唯一的区别是RAILS_ENV ='暂存'而不是'生产'。

如果我使用控制台初始化侦听器,它们工作得很好。通过将生产RAILS_ENV更改为“暂存”,听众也可以工作。

我的production.rb和staging.rb是相同的。目前,资产并没有受到任何影响,就我所知,它们正以相同的方式服务于客户。

所以我的问题是RAILS_ENV在生产中设置了什么,以防止我的任何“$ .on”听众被设置?

的版本

jQuery 1.11.1 
Rails 4.1.4 
Ruby 2.2.0 
Turbolinks 2.3.o 

回答

1

仔细检查你的宝石的顺序的application.js

//= require jquery 
//= require jquery.turbolinks 
//= require jquery_ujs 
//= require turbolinks 

下一步,确保缩小时不会造成问题。将gem'uglifier'添加到您的gem文件中,并将以下内容添加到您的production.rb中config.assets.js_compressor = Uglifier.new(:mangle => false)

是否执行任何jQuery代码?如果不是和uglifer没有解决这个问题,请参考jQuery与jQuery(document)而不是$(document)

仍然爆发?通过在production.rb中添加config.assets.compile = true来启用资产编译后备功能。

如果添加编译后备工作,资产管道中可能存在问题。我不多使用Heroku,但要确保所有资产都在环境中被擦除rake assets:clobber并且您的资产编译正在部署中执行rake asset:precompile

如果仍然损坏,请将该文件发布给您的听众。