我在 2012 年左右开始关注 Ruby,平时有的时候会用 Ruby 写一些脚本。这是一个很活跃的社区,Ruby 火起来也不是最近的事。可贵的这里总是有一些新的东西出来,比如我现在的这个博客是基于 jekyll 和 Github 的。
Ruby 的迅速崛起更多的还是因为 Rails,所以学习 Rails 也是了解 Ruby 的一个好方法。
最近为公司内部所配置的 GitLab 是 Rails 开发的。另外我自己也在公司做一些 Web 程序,其实是很简单的东西,就是把每天晚上跑的程序各种测试结果展示出来 (nightly/weekly/coverage 等等)。我选用 Rails 来开发,果然一个最初的版本很快就做出来了。在初学 Rails 的过程中让我体会到了一些 web 开发的乐趣。
Rails 适合小团队的快速开发,其中的一些理念是:
- Encourage Agility –鼓励敏捷开发
- Convention Over Configuration –约定高于配置
- DRY –不要重复自己
- Less Code –更短小的代码
正是这些开发原则使得 Rails 开发如此简单明了 (当然前提是你按照 Rails 约定的方式来)。
我原来做过一些 web 开发服务器方面的工作,在那种模式下开发需要每个人各司其责。
但是 Rails 不同,在 ActiveRecord 这样的抽象层基础上你需要关注的数据库方面的东西少了,
明确的 MVC 模式把你需要关注的撤离开来,这种复杂程度一个人完全能掌控下来。当然这种高度的抽象是以牺牲一部分效率为前提的,但其实在很多时候开发效率的优先级是高于实现效率的,
这也是 Ruby 所选择的一个理念。
学习 Rails 的过程中这些资料是非常好的,这几本书都面向初学者,写得非常详细:
当我熟悉了一些基本概念的时候,我就可以看 Github 上各种 Rails 的代码了,约定高于配置的另外一个优点就是所有 Rails 开发的东西结构看起来是一样的,便于不同开发者之间的交流。
Rails 的一个比较突出的问题是版本之间的兼容性比较差。
比如 Begining Rails 里面 Plugin 那章的那个例子,在 Rails3.1 系列开始已经不支持那种方式的 plugin 了,其中用到的class_inheritable_accessor也变成了 class_attribute。这种问题非常多,另外据说最新的 Rails4.0 改动也很大。
这是一个老问题,在早起的版本就有人在这上面都发生过争吵。一些人说变化太频繁,不容易学习。
其中这篇“WTH is happening to Rails?” I’ll tell you 解释了一下 Rails 如此的原因,并称这种改变位『成长』。
学习 Rails 的路还比较长,后面继续。