10分鐘內開發出Twitter網站:使用Ruby on Rails

剛剛在訂便當被買走了這篇文章提到,用Ruby on Rails可以很快地開發出一個網站,到底有多快呢?;事實上如果已經聽過或是稍微接觸過Ruby on Rails的朋友,應該都有聽說關於RoR的高生產力傳說,例如thegiive去年曾經po過的幾篇文章,都讓我學習Rails的心更加堅定XD像是他曾經提到

根據 Beyond JAVA 裡面,Justin Gehtland 用 Rails 重寫一個用 JAVA Spring/Hibernate 寫好的 Project,他發現程式碼比例 JAVA :Rails 大概是 3.48 : 1 。附帶一提,他重寫的開發時間開發時間比是 16 : 1,更噁心的數字。

image當然我後來也去弄了一本Beyond Java來看(有出中文翻譯本,某些學校圖書館或許能借到),對當時的我而言,聽到這麼多RoR的高生產力傳說、又好像可以少寫很多程式碼來達到同樣的目的,我就開始進入了Rails的世界,雖然一年來進步緩慢,不過畢竟是當興趣嘛XD

 

左邊這張圖片大概可以也可以稍微表達為何我熱愛Ruby & Rails,而不乖乖聽老師的話學Java XD

 

anyway,這篇文章的重點應該是標題中提到的「用RoR在十分鐘內開發出Twitter網站」,這是我在日本ZDNet網站上看到的一個短片「Ruby on Railsで10分で作るTwitterもどき」,有興趣的請直接連結到該網站觀看影片,網站上有提供影片中原始碼的下載!

作者用十分鐘左右的時間開發出一個簡單的Twitter雛型,包含了三個Model: User, friendship, status,分別是使用者的個人資料、好友名單的relation以及留下的訊息,光看這樣好像滿簡單的,但要在十分鐘內飆出來也不是那麼簡單。(如果是我就先把程式碼都先放在旁邊準備複製貼上XD)

我想作者可以在十分鐘內就完成這支簡單的程式,除了對Ruby on Rails要夠熟悉之外,還有兩個很重要的關鍵:

    1. TextMate在編輯過程中節省大量的coding時間。
    2. Rails的兩大精神幫了許多忙Don’t Repeat Yourselft, Convention over Configuration

有關TextMate這套編輯器,應該是很多Rails developer的最愛,關於TextMate應該是另外一個故事了,我最近也正式成為Mac User,尚在摸索這套工具所能帶來的高生產力與享受:p

從下篇文章開始,我想分享一些最近開發Rails的感想以及Rails到底在網站的開發過程中幫了些什麼忙。簡單分享個人心得與體會,如果誤會了Rails的精神還請不吝指教:)

Rails聖經中文翻譯本:碼上就會Rails敏捷開發網站

昨晚逛天瓏的時候發現Rails的聖經Agile Web Development with Rails的中文翻譯本出版了,聖經大概是我從讀大學以來讀得最勤奮的一本原文書,也因此本來很喜愛收藏各類書籍的我,對這本翻譯書實在提不起太大興趣。

目前在天瓏的價格應該是NT$450(定價600,目前好像是打75折),價格還算可以,如果不習慣讀原文書,這本翻譯書應該是個非常好的選擇。(比起市面上某些中文Rails書籍而言XD)

image

博客來連結:http://www.books.com.tw/exep/prod/booksfile.php?item=0010374225

參考網站與圖片來源:《碼上就會:Rails敏捷開發網站》新書上市!

AjaxScaffold & ActiveScaffold for Ruby on Rails

AjaxScaffold: AJAX interface for your Ruby on Rails models
http://www.ajaxscaffold.com/

ActiveScaffold: A Ruby on Rails plugin for dynamic, AJAX CRUD interfaces
http://activescaffold.com/

我自己還沒有實際用來開發,不過光看demo還滿吸引人的,簡單的CRUD機制都包好並且用Ajax的方式運作,包成Ruby on Rails的plugin使得安裝、使用都很簡單,有空再來研究研究。

HOWTO: Ruby on Rails中取出最新的一筆資料

使用Active Record時可以使用 Model.find(:first)來取出第一筆資料,或是Model.find(:all)來取出全部的資料,那如果想要取出最近的一筆資料該怎麼做呢?其實只需要加個排序的條件即可。

範例:

@event = Event.find(:first, : order => "created_at DESC")

Updated: 補充一下,其實如果是@event = Event.find(:all),那麼@event.last便是最後一筆資料了。