For RubyChina's Rubyist, 是时候为 Rails 圈子打打气, Ruby 圈子创新能力依然在, Rails 活力依旧.
最近朋友中加入了不少对技术不十分了解的朋友, 我希望能够简单有效回复他们 Rails 是干什么的.
是时候抬头看看整个 web 技术圈子发展的情况, 总结一下, 也顺带打消一些客户对于采用 Rails 的顾虑.
Rails 全称为 Ruby on Rails, 是基于 Ruby 编程语言 ( 一种通用的动态编程语言 ) 的 Web 全栈开发框架. 可以类比于 j2ee( 基于 java ), 类比 Symfony( 基于 php ), 类比 Django ( 基于 Python ).
Rails 起源只是一次无心的尝试, DHH( Rails 创始人 ) 在开发一个任务管理系统 ( basecamp ) 的时候, 感觉 php 写网站太磋了 ( 写过 Rails 的话, 你懂的 ), 就在 2003 年时候随带开发了 Rails.
之后, 05 年 12 月 Rails 1.0 发布后, 成为年度最佳 web 框架.
06 年, 由于 Rails 的大获成功, Ruby 从一个默默无闻的语言, 成长为在 TIOBE 统计用户使用量排名第十的语言.
之后, 中国国内开始后知后觉, 第一批创业者像 ITeye 的 robbin 开始使用 Ruby on Rails 作为自己的核心技术竞争优势.
这几年, Ruby 越来越成熟, 社区也越来越强大, Rails 在经历了 07-08 年的小低峰后, 在 09 年之后到 2015 年的今日, 又开始大发光彩.
在国外, 一大批的创业公司采用 Rails 作为核心技术栈.
广为人知的:
Twitter ( 推特: https://twitter.com )
Twitter 从 06 年起便开始将其核心构建在 Rails 之上, 之后发展超过 5 年, 在 11 年才逐步将其搜索业务与消息队列从 Ruby 分别切换到 Java 与 Scala 上.
随后 12 年之后, 技术栈开始慢慢地多元化, 并开源了前端框架 Bootstrap( 没错, 就是大名鼎鼎的它 )
Github ( 找程序员哪里去, Github 等着你: https://github.com )
Github 是程序员事实的社交圈子, 它从 09 年开始起家, 一直构建于 Rails 技术栈之上. 经历过防火长城的恶意攻击, 却仍然坚挺. 详见: 乌云分析
只要有良好的横向扩展能力, Rails 的伸缩性也十分给力.
Kickstarter( https://kickstarter.com )
Kickstarter 是全球最著名的众筹平台, 09 年创建, 目前每天的访问量十分巨大, 其核心构建于 Rails.
只是找一些知名的案例, 大家肯定不满意, 别的平台与框架下也有不少案例, 对吧. 但接下来就有意思了, 越来越多的创业团队开始在使用 Rails.
比如最近的
producthunt ( 一个发现新产品的平台, 国内有很多赝品了: http://www.producthunt.com/ )
基于 Rails 构建, 据说, 只花了几天就把原型做好了.
hired ( 程序员拍卖网, 国内已有类似产品: https://hired.com/ )
基于 Rails 构建.
dribbble ( 设计师社交平台: https://dribbble.com )
已经是全球设计师社交圈子事实的标准, 基于 Rails 构建.
国内的一些作品:
Tower ( 一个项目协作工具: https://tower.im )
完全基于 Rails 构建.
36kr ( 创业媒体: http://36kr.com )
基于 Rails 构建.
Knewone ( 非常有势头的科技与设计产品社区: https://knewone.com )
完全基于 Rails 构建.
100offer ( 另一个程序员拍卖网, 用户体验很出色: http://100offer.com )
完全基于 Rails 构建.
作为创业公司的创始人, 你不必:
而创业更容易成功的奥妙与核心在于, 以最快的速度打造产品并试水市场
这时, 选择 Rails 往往是最佳的:
快速迭代的特性
如果说 Rails 的开发效率在所有框架中排名是第二, 那么我相信没有框架敢轻易说自己是第一.
无论是 Rails 的 15 分钟开发博客系统中提到的脚手架, 还是 CRUD 与 RESTful 整合的天衣无缝, 再加上惯例配置, 能都让 Rails 的开发效率得到极大的提高.
其杀手级特性:
快速市场试水与响应能力
Rails 生态的特点就是如何更少更快地写出高可用的代码. 一般来说, 代码越少, 对业务响应能力越强.
simple_form
slim
scss
coffeescript
类似这样简化业务代码的 gem 非常多, 难怪在前几年, 就有大神呼吁: 超过 3000 行代码的 Rails 就应该拆分了.
除了代码的优化外, 还需要极强的自动化测试才能保证我们能够自由地重构业务, 调整市场方向, 而不致于出现产品 bug 层出不穷的问题.
guard
rspec
jasmine
capybara
selenium-webdriver
这种全自动触发的测试系统在我印象中首创于 Rails, 目前很多框架已经学走了它. 但没关系, Rails 仍然是目前生态最为强大的一个.
如果你将自动测试做好, 快速迭代能力将是十分可怕的.
最拥抱 web 最新标准的框架
永远不担心技术栈过时, 这是 Rails 的理想, 也是 web 开发者的最终理想.
Rails 的 RESTful 实现, 是最接近标准的一个. Rails 早在几年就拥抱 coffeescript, 而 Javascript 最新标准 ECMA6 基本与 coffeescript 类似.
Rails 4 开始直接对 mobile 提供支持.
Rails 5 对 API server 提供直接支持.
快速迭代, 市场响应, 以及对于移动互联网的支持, 都是创业公司核心优势. 难怪了很多拥有 Rails 技能的人才一定会选择 Rails 作为公司的核心技术栈, 就是快.
如果你有 Rails 方面的人才, 不选择 Rails 技术栈岂不浪费?
国内的 IT 市场往往落后于国际 2 年之久, Rails 方面的人才十分紧缺. 选择 Rails 意味着:
Rails 招人唯一靠谱的圈子就是 RubyChina, 圈子对于招聘贴有着严格的要求, 如果你想招到优秀的人才, 不仅要有好的待遇与福利, 还需要你的真诚与耐心.
但选择 Rails 的人才会有个极大的优点, 是为了快乐而选择的 Rails, 他们一般也不仅仅只会一种技能, 他们会更积极去学习, 成长与生活.
如果一个高级 Rails 工程师可以顶住两个人的工作量, 你是愿意给两倍工资给他, 还是招两个新手呢?
我会选择前者.
Rails 会有性能风险, 这是真的, 因为 Rails 与 Ruby 一样, 设计理念是面向程序员的, 而不是机器. 所以它们性能方面都不比其他语言好, 比如 C, C++, Golang, Java.
但从创业公司的经历看, 这个问题现在可以忽略了. 其原因有二:
1) 初期, 用户才是王道, 无关并发性能. 2) 性能往往从 IO 瓶颈开始, 而不是语言性能.
我不算是对各种语言与框架都十分熟悉的人, 但都是有接触的人, 对于 Rails 的优点与缺点, 我私以为是十分的中肯, 我看好 Rails 在创业公司中的应用, 也希望更多的创业公司能够意识到:
选择一个合适的技术栈, 产品将是事半功倍的.
这才是公司除了商业模式外成功的核心秘密.
在 web 界, Rails 是创业公司更优的选择.