jQuery在Rails Production环境下失效的问题

Rails 3.2.6

$ rake assets:precompile

提示如下错误

rake aborted!
You have already activated rake 10.0.4, but your Gemfile requires rake 0.9.2.2. Using bundle exec may solve this.
/home/。。。。。。/config/boot.rb:6:in `<top (required)>'
/home/。。。。。。/config/application.rb:1:in `<top (required)>'
/home/。。。。。。/Rakefile:5:in `<top (required)>'

然后就删除了Gemfile.lock,执行bundle install,此时Gemfile.lock已经有很大变化

之后就发现整个网站的jQuery都失效了,试了网上提到的几个方法都无法解决

在Production环境下是这样,在Development环境是正常的

编译出来的application.js是jQuery JavaScript Library v1.9.1,jquery不好使

 

后来,尝试恢复原来的Gemfile.lock文件,执行

$ bundle exec rake assets:precompile

编译出来的application.js是jQuery JavaScript Library v1.8.2,问题就没有了

 

对比public/assets下的application.js

-rw-rw-r-- 1 。。。。。。 103155 Apr 11 14:36 application-0467707f22e0f4e2445becb595f8c3dd.js    jQuery JavaScript Library v1.9.1
-rw-rw-r-- 1 。。。。。。 103118 Apr 10 23:50 application-0df8546d2272f613978d29baff65abd5.js    jQuery JavaScript Library v1.9.1
-rw-rw-r-- 1 。。。。。。 103012 Apr 11 14:45 application-4e976587af2b41519ababf14f5db0932.js    jQuery JavaScript Library v1.8.2
-rw-rw-r-- 1 。。。。。。 103012 Apr 11 14:45 application.js                                                            jQuery JavaScript Library v1.8.2

 

进一步分析,不修改Gemfile文件,只更新依赖Gem

$ bundle update

$ bundle exec rake assets:precompile

jQuery在Production环境仍然无效

 

修改Gemfile,升级Rails到3.2.13

$ bundle update

$ bundle exec rake rails:update

这几个冲突的文件都不需要修改,选no

$ bundle exec rake assets:precompile

编译出来的application.js也是jQuery JavaScript Library v1.9.1,jquery仍然不好使

 

原来问题出在jquery-rails的版本上

jquery-rails 2.2.0以后开始使用jquery 1.9.0,jquery 1.9.0和1.8.0的语法上有较大的不同

解决方法是把jquery-rails锁定到之前生效的版本

gem 'jquery-rails', '~> 2.1.4'

posted @ 2013-04-11 15:24  scige  阅读(525)  评论(0编辑  收藏  举报