从“无乜启发”到动手改造:我在 2014 年初探 Ruby on Rails 的心路


前阵子翻看 Ruby on Rails 的官方文档时,我曾有过一句相当真实的心里话:“睇下有乜启发,发现其实无乜启发。”

那时候刚从别的技术栈转过来,习惯了传统显式的架构与细致的手动配置。初看 Rails 时,面对通篇宣扬的“约定优于配置(Convention over Configuration)”以及充斥着元编程与宏魔法的抽象设计,只觉得它悬在空中。光靠肉眼阅读那些干瘪的 API 规范和脚手架示例,不仅没有体会到传说中的开发快感,反而觉得隔着一层厚厚的玻璃,摸不着门道。

直到今天,为了日常项目协作,我接到了一个实际的任务:需要将内部使用的一款旧插件进行重构改造,让它能平稳兼容并升级到 Rails 3。

一旦真正把双手放上键盘、一头扎进真实代码的泥淖里,我才发现:纸上谈兵读十遍文档,真不如亲手重构一次老项目。

在追查报错与逐行迁移的过程中,我整理出了一串琐碎但极具杀伤力的踩坑清单:

  • 从 Prototype 到无侵入脚本:Rails 3 大刀阔斧地移除了旧时代的 periodically_call_remote,迫使定时加载和页面请求解耦。那一刻我才明白,框架并不是在刁难人,而是在倒逼我们告别混杂在 HTML 里的侵入式 JavaScript,走向现代 Web 的规范化。
  • 安全防护的强制性:在 ERB 模板里,<%= 开始默认开启严格的 HTML 转义。以前渲染输出随心所欲,现在遇到特殊格式必须显式标记 html_safe。改动虽然繁琐,但背后是框架在架构层面替开发者把死安全关隘的决断。
  • 约定带来的秩序:从 Controller 继承链的梳理、路由 resource 语法的收敛,到将插件依赖全面纳入 Gemfile 用 Bundler 统一管理……

每排除一个由于版本断层抛出的异常,每让一个原本报错的功能重新在本地跑通,那些之前在文档里看起来抽象晦涩的概念,瞬间全都落了地。

我忽然想通了:很多优秀的设计和框架哲学,在没有遇到过实际痛点的人眼里,往往只会觉得“规矩太多”、“约束太大”。所谓的“约定优于配置”,根本不是用来死记硬背的教条,而是只有当你真切地被繁杂的底层细节折磨过、在维护混乱的旧项目里挣扎过之后,回过头来才会由衷感叹的简洁与省心。

学习一门新技术最快的方式,永远不是坐在书桌前把手册从第一页背到最后一页,而是直接找一个真实的破损玩具,亲手把它拆解、修复、再让它重新运转起来。

Share this post

Enjoyed reading? Share it with your friends or colleagues!