My Rails Way

by winson, 11 months ago.

很早就想寫一下我是如何開發Rails程式的,說穿了只是運用一些小技巧讓整個開發過程更加愉快、方便而已。

1.活用目錄結構

Rails的架構設計非常有趣,整包系統就是一個目錄結構,其中包括建立資料庫的語法、測試案例、不同的執行環境以及眾多的外掛等。

一般寫Rails程式的起手式是這樣子的:

rails myproject
如果有一些常用的外掛,那就必須一個一個裝起來;如果有一些自己常用的helper,那就必須一個一個從別的程式貼過來。

為了節省時間,我通常會維護一個叫做sample的Rails project,裡面把簡易的帳號、密碼、登入做起來,以及設計一個model,也把他的tag、comment功能作起來,並把相關的測試案例寫好、常用的外掛裝起來,然後整包壓成一個sample.zip檔。

一旦開始寫新的系統時,把這一包解開來該有的都有,方便的很。

日後,有新的helper或方便的外掛,就順手整理到sample裡頭,隨著這一包愈來愈大,寫程式的速度也會愈來愈快。

2.活用scaffold

開始寫程式最難的就是如何設計controller以及如何設計action。而參考scaffold就是最好的作法。

大家都知道scaffold有靜態跟動態兩種,所謂的靜態scaffold就是幫你把實際的檔案產生出來;而動態scaffold則是在controller裡頭加入

scaffold :mymodel
的語法,但實際上不產生檔案出來。

無論靜態或動態scaffold,執行結果是完全一樣的。

而很多人可能不知道,動態scaffold產生的action是可以跟你寫的action一起並存的。

也就是說,我寫程式通常會先在controller裡頭用動態scaffold讓程式可以跑,然後開始寫跟scaffold同名的action,逐步將scaffold的action一個一個換掉。

運用動態scaffold,我的程式隨時都維持在可以運作的狀態,只要是我設計的action,就會換掉scaffold的,而跑出我要的樣子;還沒設計的action,至少會跑scaffold內建的樣子出來。

至於簡易的代碼維護,可以先不管他,至少scaffold會暫時賦予他可以新增、修改、刪除的生命力。

3.必用TextMate

運用TextMate開發程式的快感是無法言喻的,熟悉之後,效率絕對提昇十倍以上,往後根本不會考慮使用其他開發工具。

使用TextMate當然也要用Mac平台,Mac是最好的桌面系統,他的底層是Unix,則是最佳的伺服器系統,兩者相輔相成,在這上頭搭配TextMate進行軟體開發當然是人間一大樂事。

4.活用三種開發環境

大家都知道Rails裡面有三種開發環境: Development, Production以及Test。但是很多人可能不知道,由於三種環境分屬三種不同的資料庫,所以這三種開發環境是可以同時跑的。

例如,我可以一邊跑autotest看測試結果,一邊跑development修改程式,甚至這也可以是一個正式上線的系統,除非重啟Mongrel,不然任何修改是不會影響上線效果的。

也就是說在Rails底下完全不需要把測試程式打包丟到另一個環境,然後重新啟動伺服器這類愚蠢的舉動,運用不同的環境,直接修改直接看到結果,十分爽快。

5.不要在view跟controller裡面寫太多程式

一個很簡單的原則: 除非這是一個partial template,否則寫在view裡頭的程式是無法重複呼叫運用的。

因此,能夠分給controller就分給controller,能夠提到helper就提到helper去寫,這樣程式的重複使用性才會高。

同樣地,寫在controller action裡頭的程式也只能夠在相關的controller跟view裡頭呼叫運用,因此controller也不要擠太多程式,能夠拉到controller_helper.rb就拉過去;能夠寫在application.rb或application_helper.rb就寫過去;屬於model該處理的,就先在model處理好;當然程式也不能隨便亂拉,目的是要讓controller單純化,不要去處理太多雜事。

6.使用autotest

運用autotest就好像有一位導師隨侍在側,只要程式一修改存檔,他會很聰明地去跑相關的測試案例,並且馬上告訴你程式哪裡有錯,哪裡需要修改,根本不用浪費時間去開debugger或瀏覽器才知道哪裡有錯。

7.善用batch檔

在Rails底下啟動伺服器通常會用:

script/server
但他預設在port 3000,也就是說在瀏覽器開網頁也需要加上:3000,多打這幾個字總覺得很囉唆。

善用batch檔,可以節省很多時間,舉個例子,假設開發了一支叫做money的程式,你就可以寫一支mone.bat檔:

mongrel_rails start -p 80 -c "D:\Documents\My Rails\money"
然後把這支batch檔,放在順手之處,隨時開一個小視窗,鍵入mone,就可以開啟這支money程式,而且開瀏覽器也只要輸入
http://localhost

在Unix底下,請運用alias,例如:
alias makt="sudo mongrel_rails start -p 80 -c /Users/projects/marketplace"
這可以達到相同的效果。

8.多用鍵盤、少用滑鼠、少動嘴

我的開發環境,無論是Mac OS X、Debian或Windows都有一大堆以四個字為基礎的捷徑、快速鍵和bat檔,取個容易記住的名字,可以讓你快速啟動Mongrel、關閉資料庫、重開Web Server,甚至切換目錄或安裝外掛、安裝gem或是svn checkin, checkout等。

寫程式的重點絕對是在打字寫程式,手一離開鍵盤,速度就慢,滑鼠按按鈕、拉畫面什麼的能幫的忙基本上有限,因此能不移動滑鼠就盡可能不移動他。

因此多用鍵盤、少用滑鼠,對於開發的效率而言,有相當程度的幫助。

而有新的想法光出一張嘴是沒有用的,寫程式去實踐他就對了;我碰到過那種很會空談idea,搞半天什麼也沒寫出來,還找理由說Rails沒有Java好。

我是不知道Java好在哪,只知道那玩意兒喜歡把事情搞得很複雜。好吧,用哪一國的語言都隨便你,這些爭辯其實沒什麼意義,但是請先寫出來再講,寫不出來就是空談嘛。

請記住,滑鼠跟嘴是永遠沒辦法幫你寫程式的,唯有鍵盤跟手才行。