应该Rails uglifier uglify(mangle)函数名吗?

我的.js文件被压缩并且变量被破坏,但函数名称没有在Heroku上被破坏(运行最新的Rails 3.2.8和最新的uglify 1.3.0 gem)。

根据https://github.com/lautis/uglifier#usage,“mangle ”选项默认为true。 以下是我的配置。

来自production.rb:

config.assets.compress = true config.assets.js_compressor = :uglifier 

我也试过了

 config.assets.compress = true config.assets.js_compressor = Uglifier.new(:mangle => true, :toplevel => true, :copyright => true) 

但没有明显的区别。

正如一位评论者建议的那样,我确实尝试更改我的.js文件的内容,但没有任何区别。

Heroku上压缩的预编译.js文件的输出示例:

 show_slideout_notification=function(){jQuery(".slideout_notification").slideDown();var e=$(".slideout_notification .countdown 

似乎变量名称被修改,但函数名称不是。

任何想法为什么函数名称没有被破坏? 或者这是不想要的行为,因为从我的Rails / js代码(即javascript onclick事件)调用函数是很困难的。 或者,如果function名称被破坏,那些onclick调用是否也会被重命名为受损名称?

谢谢 :-)

你试过修改文件了吗? 据此,资产文件的生成基于文件修改时间。 也许您的设置甚至没有被使用。

不应该这样吗?

 config.assets.js_compressor = Uglifier.new(:mangle => { :toplevel => true }, :output => { :comments => :copyright })