《Web開發敏捷之道(第二版)-應用Rails進行敏捷Web開發》這本書的中文版已經上市,關于這本書在RoR書籍市場的地位就不用贅述了。有意思的是,這本經典的Ruby on rails教科書和我們JavaEye網站非常有緣分:
去年8月份,這本書第一版中文版上市的時候,正值我們使用Ruby on rails開發JavaEye2.0的關鍵時期,所以我毫不猶豫購買了三本,開發團隊人手一冊,那個時候,我們開發團隊也是剛剛開始學習Ruby on rails,所以的確幫了不少忙。今年8月份,這本書第二版中文版也上市了,剛巧我們開發團隊正在開發JavaEye3.0,這次是完全拋棄掉了JavaEye2.0的代碼,徹底重寫整個網站的代碼,對代碼質量提出了很高的要求,所以也要求我們對Ruby on rails有很好的掌握,不出意外,這次還是人手一冊。
這本書的第一版主要是針對rails1.0版本的,第二版是針對rails1.2版本而寫,所以新的內容很多,有意思的是,我們JavaEye2.0和JavaEye3.0的代碼變遷也挺符合這本書兩個版本之間的內容變動,第二版主要添加的內容有:
一、數據遷移
數據遷移功能是rails1.1版本引入的,非常受程序員的歡迎,去年我們開發JavaEye2.0的時候,rails1.1其實早就發布了,但當時第一版沒有這部分內容,我們也不清楚這個功能。所以數據庫的維護都是直接通過數據庫工具來修改表結構,但這也造成了一些問題:例如開發環境添加了字段,但是生產環境忘記修改數據庫,造成代碼發布以后,網站頻頻報錯的問題出現了好多次。
這次我們開發JavaEye3.0,就是完全使用數據遷移功能來維護數據庫,可以杜絕問題的再次發生了,當然數據庫的版本跟蹤也方便了很多。
二、REST支持
REST是rails1.2引入的功能,也是rails框架未來的核心功能,這次我們開發JavaEye3.0,就是按照REST的架構風格來設計和開發的。但是第二版的REST功能介紹顯得比較簡略,不夠詳細,如果你的rails項目打算完全基于REST,那么可以參考一下beast開源項目,實際上我們就是大量參考了beast的代碼寫法。
三、模型對象的多態關聯
多態關聯是ORM很有用處而且很有趣的一項功能,第二版詳細介紹了rails的多態關聯功能,例如JavaEye3.0當中,我們就使用多態關聯特性來實現帖子、博客、站內短信都可以帶有附件這樣的功能,也使用多態關聯特性實現帖子、博客、評論都可以打tag這樣的功能。
四、assert_select和集成測試
我個人覺得assert_select是一項很偉大的功能。我們整天都說TDD、TDD……,但是web應用,你怎么TDD?測試能夠覆蓋到頁面上去嗎?這在其他web開發當中是一個難題,但是assert_select就可以,而且完成的很漂亮,很簡單。事實上,有了assert_select和集成測試,類似selenium之類的外部測試框架完全可以退休了。
五、其他的一些新內容
例如第二版里面增加了RJS和render :update功能,在JavaEye2.0里面,很多AJAX功能我們也是直接寫prototype JS庫的調用,現在基本上都改成了render :update了;
第二版里面增加了發送HTML格式和帶附件的email功能,這個也是我們目前很迫切需要的功能;
第二版里面增加了使用mongrel群集部署rails應用的內容,這部分內容恐怕是我們JavaEye3.0唯一不會采用的新內容。
文章來源于領測軟件測試網 http://www.k11sc111.com/