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

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

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 更易用和灵活。篇幅问题,以后再来讲讲测试。

Great article!

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