Rails rails-template 现已支持 Rails 5.1, 一些经验分享

lyfi2003 for 深圳市百分之八十网络技术有限公司 · 发布于 2017年05月03日 · 最后由 FrankFang 回复于 2017年05月08日 · 967 次阅读
121

rails-template 已经成为 80percent.io 团队标准的 rails 项目初始化脚手架, , 它与 rails 原生项目脚手架相比, 更加 "全栈", 除 rails 外, 还包括指导 nginx 配置, mina 布署方案, logrotate 日志切割, monit 服务重启监控, upyun 文件上传等整套服务方案. ` 经过半年期的完善与补充, 现已成为一个强大的 rails 脚手架.

Ruby on Rails 5.1 的发布, rails-template 立刻提供了支持, 希望更多的 Ruby 工程师使用这套脚手架.

因为 rails 5.1 还属于比较新的东西, 论坛也有朋友新鲜尝试与使用, 我在这里主要讲一下 rails 5.0 升级 rails 5.1 的注意事项, 以及我对 rails 5.1 改进的看法.

升级建议步骤

如果你不是从 rails 5.0 升级的话, 需要先升级至 rails 5.0, 请查阅 http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html 了解升级步骤.

第一步, 所有代码签入版本库, 并创建 upgrade-rails51 分支, 万一尝试不成功, 可以方便回滚.

第二步, 修改 Gemfile 的 rails 版本绑定至 rails 5.1

gem 'rails', '~> 5.1.0'

执行

$ bundle update

如果有失败, 需要检查是否有依赖冲突, 然后修改 Gemfile 对应 gem 的版本绑定, 再继续执行上述命令.

第三步, 执行升级脚本

$ rails app:update

这一步会有一些交互问题, 替换你原项目对应的文件, 这时你可以大胆进行替换, 之后利用版本管理工具进行文件对比, 如果是你没有动过的内容, 你不需要做任何处理就可以提交版本库. 如果有改进, 可针对进行调整.

这个过程大概有5~6个文件需要小心处理.

Gem 兼容的问题

在升级过程中, 大部分 Gem 都几乎无须修改即可支持. 如果有 depreciate 提示的话, 请关注对应 gem 的新版本发布情况, 定期再进行升级.

simple_form 这个常用的 Gem 无法兼容支持, 所以会一直报错, 这里推荐使用 github 的另一个分支

gem 'simple_form'

改为

gem 'simple_form', github: 'christiannelson/simple_form', branch: 'rails-5.1'

即可.

环境变量 secret 的问题

Rails 5.1 添加了 secret 的增强, 如果你使用了 figarodotenv, 我建议仍然继续使用它们, 不需要动.

检查升级选项并移除掉它

Rails 5.1 升级时会出现一个新文件 config/initializers/new_framework_defaults.rb, 这个改动是记录不兼容旧版本的配置改动, 注意检查这里的选项, 了解它们的含义, 确保无问题后, 将其删除.

我对 Rails 5.1 的新特性的看法

yarn & webpack 的支持, 我觉得顺应了潮流, 另外, 它仍然默认使用 assets pipeline, 照顾了老用户. 而且目前来看, 这部分融合的很好, 你既可以继续使用着 assets pipline, 又使用到 yarn 来管理部分前端库.( 因为新的脚手架默认集成了 node_modules 的 assets pipeline 配置 ).

也可以用前后端分离, 使用 --webpack 选项来生成项目, 这样既可以使用到 vue, react, angular 这些前沿的前端框架, 又可以将配置管理成本降到最低( 继续使用 rails 一体化打包发布流程 ). 非常流畅. 不过目前来看 webpack 这部分还有改进空间, 需要继续做一些迭代.

目前我倾向于前者.

其他几个特性关系不大, 大多是已经有靠谱的解决方案, 只是集成更好用. 关于系统测试, 我觉得还是 rspec + factory_girl + database_cleaner 更易用和灵活. 篇幅问题, 以后再来讲讲测试.

共收到 1 条回复
96

Great article!

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册