摘要
介紹Ruby On Rails(下)Ruby on Rails新手指南Ruby要使用Rails,非得學習Ruby不可。Ruby是一個純物件導向的語言,意思是說在裡面任何東西,一個字串,一個數字都是一個物件。相較於其他 script語言,ruby提供較多的與該物件相關且符合英文意義的成員函式,我們用ruby附的指令介面irb(interactive ruby)展示一下: -1.class # output Fixnum -1.abs # output 1 1.succ # output 2 1.succ.succ # output 3
puts say # Output "I love Ruby" # 字串提供"[ ]"成員函式來取得子字串,而下一行的功能就形同於取代 say['love'] = "*love*" puts say.upcase # Output "I *LOVE* RUBY" # 下行程式碼展示了Fixnum的成員函式times,而傳入一個"{ } ",稱作為區塊(物件),如此這個區塊內的程式碼會被執行五次。 5.times { puts say } # Output "I *love* Ruby" # five times
剛剛有提到,ruby是一個純OO的語言,在程式裡任何東西皆為物件,自然就有物件該有的特性。 如果你想要試試語法,可以使用irb,ruby附的編輯器scite,或者是http://tryruby.hobix.com/ 。初學者最常見到就是不知道該呼叫啥成員函式,你可以透過http://www.gotapi.com/rubyrails 去查,或者是任何物件都有一個methods函式可以呼叫,至少你可以掌握你有什麼。 而目前針對ruby語言個人認為比較值得看的參考,就是下列網址:
如果你是熟悉Perl的老手,那Ruby對你而言是再快樂不過的事情了。.Net或是Java的也沒關係,花些時間深度地思考什麼叫做純物件導向,或者去看看Smalltalk,便能從語言面就瞭解Ruby。 Rails因為Rails終究是一個MVC Framework,深讀MVC的內容是相當重要的,一個不小心你的程式碼就會有許多誤用,造成未來維護困難或效能緩慢。說起來就算是老手,一旦遇上趕專案的狀況,為了要快點寫完,很多時候也難逃誤用的命運。 但是在這裡我不詳述Rails的MVC究竟該怎樣去理解或開發,那是下一篇文章,先推薦Agile Web Development with Rails及Ruby on Rails:Up and running這兩本書好了。第一本書深入淺出,從觀念,目錄結構到撰寫流程解釋地相當詳盡,對於不是寫Rails的人來說,從中學習MVC也是相當棒 的,可惜還沒有中文翻譯。第二本書以實做的角度直接切入程式碼,並且有中文翻譯,對於新手可以說是相當適合。 有關Rails的連結,最推薦的是: 不過既然是介紹,免不了還是要說明一下目錄結構。 Rails的目錄結構如上圖,基本上大部分的程式碼都在apps/,也就是代表你的應用程式本身,在此我們僅介紹撰寫過程中一定會碰到的目錄。 所有的Controller類別基本上都繼承自application.rb,程式碼就擺在controllers/,讓你可以在其中寫所 有 Controller共用的成員函式。Helper就是載入到view裡讓view可以呼叫的成員函式,所以application_helper.rb 也是同樣的情況。models/相當單純不用多解釋,而views/除了必須新增和controller同名小寫的目錄來擺rhtml以外,也可以使用所 謂的Layout功能。Layout就是讓所有的view可以選擇性地套入一個主樣版,通常我們在畫面設計上都會做成網站的外框。 在Rails專案產生完畢後,最先就是要編輯database.yml來設定好資料庫系統的存取方式。值得注意的是Rails預設提供三種 應用程式運作使用的環境設定,有development,test,production,分別代表開發時,進行單元測試時,及正式上線時。這三個設定檔 理論上應該分別設定在不同的資料庫,而啟動到底是使用了哪一個設定檔,就是看傳遞給web server怎樣的參數。此外如果有要預先require的函式庫或是include的module,都可以放在environment.rb裡。 route.rb負責上述URL的結構,也就是說那個結構是可以改的。 一個Web應用程式一定有靜態資料,包括圖片,css與js,分別擺在public/的images/,stylesheets/, javascripts/,並且在view裡可以透過image_tag, include_javascript_tag, stylesheet_link_tag來呼叫。Rails提供了DB Migration功能,讓你可以輕鬆地撰寫資料庫schema,並且可以視database.yml轉移到不同的資料庫,利用產生器的話,會自動產生在 db/。 結論未來Rails的發展方向,不僅會在REST這個主題,使用JRuby來整合Java,甚至是Offline應用程式都有相當大的可能性。以往我發 現,任何視窗上的應用程式,免不了就是一定要遇到作業系統本身帶來的問題,如同Windows,可能他一更新,就封鎖掉你的應用程式。Web是一個開放的 平台,提供很多的創意空間,也不見得要用同一種技術解決問題,有多種瀏覽器可以選擇,不會被侷限在一個平台上。 文章到最後,當然還是得跟各位提一下Rails的缺點,畢竟是以純物件導向撰寫的Web應用程式,所需要的代價就是大量的CPU記憶體資 源。也因為這一點,有很多Rails的開發者也積極地加入叢集化的支援。但畢竟電腦硬體只會越快不會越慢,Web未來的趨勢還是會以敏捷編程(Agile Programming)的方式來快速開發及佔有市場。 參考連結
|