2008年5月7日 星期三

Ruby on Rails

Ruby on Rails

Ruby on Rails
接下來我們就要來看看Ruby on RailsRuby on Rails是用Ruby寫的網頁應用程式開發框架(web application framework),一般簡稱"Rails"或是"RoR"。它的作者是David Heinemeier Hansson (簡稱DHH) ,一個來自丹麥的年輕程式師。RoR是他為了Basecamp專案而開發的架構,之後在2005年釋出的open source project,目標是要加快以資料庫驅動的網站的開發速度與簡化過程。要達成這個目標,有兩個重大原則:一個是絕不做重覆的事,(DRY, Don’t Repeat Yourself),程式設計師要寫的程式碼愈少愈好,因為程式碼少的話,出錯的機率也會降低,最後維護起來也容易;另一個原則是用慣例(通則)取代設定(Convention over Configuration)

MVC (Model-View-Controller)
RoR
的基本架構是MVC(Model-View-Controller)Model處理和資料庫之間的溝通,View則是產生使用者介面,使用者透過View的頁面發出要求,Controller則是處理使用者的要求,若要使用到資料庫,則和Model溝通,由Model去進行資料庫的存取,再由View根據結果產生使用者看到的頁面。依照這樣的處理模式,資料的處理和使用者介面不會互相干擾,程式較容易撰寫也較容易維護。

Active Record
Active Record
RoR所提供的ORM (Object/Relational Mapping) layerRoR是資料庫驅動的網頁開發程式,所以資料庫的處理是非常重要的。Active Record會做如下的對應動作:

Database

Model

tables

à

classes

rows

à

objects

columns

à

attributes

Active Record主要利用到之前提到的原則之一,就是慣例取代設定。例如你的程式中有一個名為StudentclassActive Record 的慣例就是會將這個class對應到資料庫中名為students (student的複數形式)table,你不需要再額外設定告訴RoR要用什麼名字的table。而且Active Record的英文能力夠強,對於不規則的複數形式變化也應付自如,例如:Person => people。如果要利用到既存的資料庫,無法按照RoR的命名慣例,RoR當然也提供更改設定的方法,只是這麼一來,RoR提供的某些便利性也無法利用到了。

ERb (Embedded Ruby)
View的這部份,檔案的副檔名為".rhtml",Rails看到這個副檔名就知道要使用ERb來展開該檔的內容。在此值得注意的是,controller物件中的instance變數是可以直接在View樣板物件中被使用的。

Scaffold(由資料庫自動產生可以使用的程式)
當你把資料庫建立好,接下來用一個簡單的Scaffold動作,你將擁有整個專案程式的雛形,也許使用者介面還不夠漂亮,但是程式已經堪用,它有最基本的CRUD(Create, Read, Update, Delete)功能。這邊同樣也應用了慣例取代設定的原則,整個專案的目錄架構也是有其慣例。

沒有留言: