原由是想使用 4.1 的 enum 的功能,于是升级。主要参照官网升级说明,还有个别细节:
1,Gemfile,rails 版本改成了 4.1.0.beta1,加了 gem:spring,spring-commands-rspec
2,ransack 默认版本在 4.1 下有问题,需要改成 gem: gem "ransack", github: "activerecord-hackery/ransack", branch: "rails-4.1" gem "polyamorous", github: "activerecord-hackery/polyamorous"
3,model 中 has_many through source 的 source 原来跟 string 可以,现在要改成 symbole 才行
4,config/application.rb 里面由于不是 require "rails/all"(测试库用 rspec 了),所以要加 # Pick the frameworks you want: +require "active_model/railtie" require "active_record/railtie" require "action_controller/railtie" require "action_mailer/railtie" +require "action_view/railtie" require "sprockets/railtie" # require "rails/test_unit/railtie"
5,guard 配置中让 rspec 用上 spring -guard :rspec do +guard :rspec, cmd:"spring rspec" do
6,i18n 遇到问题的考虑 Gemfile 设置(临时解决 i18n 本身 bug) gem 'i18n', github: 'svenfuchs/i18n' gem 'rails', '4.1.0.beta1'
另:上次升级用 ruby2.1 遇到基础库 pg 的莫名报错,这次 rvm reinstall 后还没有遇到问题。
附官方文档: http://edgeguides.rubyonrails.org/4_1_release_notes.html http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html