从 Rails 5.2.3 升级到 Rails6 遇到的一些问题。
基本步骤
本地 rails 5.2.3,在项目根目录下,终端执行命令:
bundle outdated
对于列出的 outdated 的gem,除了rails自带的那些,一个个过 changelog,衡量后升级即可。
gems 升级完成后,升级项目至 rails6。
新建一个rails 6 的demo:
cd ~/Workspace
gem install rails -v 6.0.2.1
# Skip Sprockets files, Skip test files, Preconfigure postgresql as default database
rails new -d postgresql -T -S demo
使用文件对比软件【推荐araxis merge ,真的很好用。】,对比两个项目的不同处,斟酌处理。
遇到的问题
gem hashie 版本升级至 4.0.0,导致 omniauth 当前1.9.0 版本不能使用,依赖 hashie 4.0 以下版本。
问题:
如上所述。
解决:
查看commits,问题在2019-11-17已解决,但新版本尚未发布。
取2019-11-17 的最后一个commit,Gemfile 更新:gem "omniauth", github: 'omniauth/omniauth', ref: 'ccee08f'
使用了年久失修的gem capybara-user_agent,升级capybara至3.30.0后, 现有版本0.0.3的capybara-user_agent无法使用。
capybara-user_agent 要求
2.0.2 <= capybara < 3
。解决:
老大教的一个小技巧。
去 insights 中 找 Network,看别人fork后的库,然后引用即可。
这里是aha-app/capybara-user_agent.
更新 Gemfile.
gem "capybara-user_agent", github: "aha-app/capybara-user_agent", branch: 'capybara-3'
多个rails共存时,如何卸载指定版本的rails?
问题:
本地安装了rails6.0.2.1, rails 5.2.3,使用
gem uninstall rails -v 6.0.2.1
后,终端rails -v
显示 rails 6.0.2.1。解决:
gem list | grep railties gem uninstall railties -v 6.0.2.1 rails -v Rails 5.2.3