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 都几乎无须修改即可支持。如果有 depreciate
提示的话,请关注对应 gem 的新版本发布情况,定期再进行升级。
但 simple_form
这个常用的 Gem 无法兼容支持,所以会一直报错,这里推荐使用 github 的另一个分支
将
gem 'simple_form'
改为
gem 'simple_form', github: 'christiannelson/simple_form', branch: 'rails-5.1'
即可。
Rails 5.1 添加了 secret 的增强,如果你使用了 figaro
或 dotenv
, 我建议仍然继续使用它们,不需要动。
Rails 5.1 升级时会出现一个新文件 config/initializers/new_framework_defaults.rb
, 这个改动是记录不兼容旧版本的配置改动,注意检查这里的选项,了解它们的含义,确保无问题后,将其删除。
yarn & webpack 的支持,我觉得顺应了潮流,另外,它仍然默认使用 assets pipeline, 照顾了老用户。而且目前来看,这部分融合的很好,你既可以继续使用着 assets pipline, 又使用到 yarn 来管理部分前端库.( 因为新的脚手架默认集成了 node_modules 的 assets pipeline 配置 ).
也可以用前后端分离,使用 --webpack 选项来生成项目,这样既可以使用到 vue, react, angular 这些前沿的前端框架,又可以将配置管理成本降到最低 ( 继续使用 rails 一体化打包发布流程 ). 非常流畅。不过目前来看 webpack 这部分还有改进空间,需要继续做一些迭代。
目前我倾向于前者。
其他几个特性关系不大,大多是已经有靠谱的解决方案,只是集成更好用。关于系统测试,我觉得还是 rspec + factory_girl + database_cleaner 更易用和灵活。篇幅问题,以后再来讲讲测试。