本頁使用了標題或全文手工轉換

Ruby on Rails

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Ruby on Rails
Ruby On Rails Logo.svg
開發者 Rails核心團隊
初始版本 2005年12月13日,​13年前​(2005-12-13[1]
穩定版本
5.2.3
(2019年3月28日,​19天前​(2019-03-28 [2]
預覽版本
6.0.0 beta3
(2019年3月13日,​34天前​(2019-03-13 [3]
原始碼庫 編輯維基數據連結
作業系統 跨平台
語言 Ruby
類型 Web應用框架
授權條款 MIT授權條款
網站 rubyonrails.org

Ruby on Rails(官方簡稱為Rails,亦被簡稱為RoR),是一個使用Ruby語言寫的開源Web應用框架,它是嚴格按照MVC結構開發的。它努力使自身保持簡單,來使實際的應用開發時的程式碼更少,使用最少的組態。

Rails的設計原則包括「不做重複的事」(Don't Repeat Yourself)和「慣例優於設定」(Convention Over Configuration)

Ruby on Rails介紹[編輯]

Ruby on Rails是一種結合Ruby語言與Rails平台的一種網頁程式框架,Ruby語言以自然、簡潔、快速著稱,全面支援物件導向程式設計,而Rails則是Ruby廣泛應用方式之一,在Rails平台上設計出一套獨特的MVC開發架構,採取模型(Model)、視圖(View)、控制器(Controller)分離的開發方式,不但減少了開發中的問題,更簡化了許多繁複的動作。

應用[編輯]

Ruby on Rails的數千個程式已經線上上得到應用。 現在使用Ruby on Rails的網站有:[4]

  • Basecamp
  • Twitter
  • GitHub
  • Groupon
  • Shopify
  • Yellow Pages
  • GitLab

歷史[編輯]

於2004年7月,Rails的創始人大衛·漢森37signals公司的項目管理工具Basecamp裡面分離出Ruby on Rails,並且以開源方式發布。

Rails在發布以後的短短的時間內就迅速獲得很多開發人員歡迎,大衛認為這歸功於Rails設計為opinionated software。Rails當中有很多規矩從一開始就按照David的意見制定好了,所以在Rails上開發應用程式時,開發人員可以專注於應用程式自身的設計,省卻那些花在瞭解及組態基礎框架上面的時間。這也正是Rails很重要的精神「約定優於組態」,開發人員遵照Rails本身的慣例便可以省卻組態組態檔的時間;此外,Rails雖然強調慣例的重要及便利性,但針對不同的需求,Rails也提供修改的空間讓開發人員可以進行自訂的組態。

Rails的運作模式[編輯]

Rails框架是以固定的命名習慣來自動判斷整個架構,預設下會將網址分析成http://domain-name/ControllerName/ActionName/Attribute/ 然後執行目標Controller中的Action,並取出指定的View(視圖)回傳給瀏覽器顯示。

面對資料庫則以Model(模組)的形式,藉由Active Record作為與資料庫之間的傳輸介面。

Rails的MVC架構[編輯]

Ruby on Rails的模型-視圖-控制器架構由以下各部分組成:

模型[編輯]

模型包含著應用的狀態,狀態可能是臨時的也可能是長久性儲存在資料庫中的。需要注意的是模型不僅包含資料,而且包含資料代表的邏輯。在Rails中,模型通常是由一些代表關聯式資料庫中RDBMS表的類組成的。

在Rails中,模型類是通過Active Record模式進行處理的。一般來說,程式設計師要做的是繼承ActiveRecord類,同時程式會自動計算出要使用哪個RDBMS表,這個表有哪些列。表與表之間的關係通過簡單的命令來指明。

視圖[編輯]

View負責根據Model中的資料顯示使用者介面。作為web應用,Rails裡的View通常是生成整個或者部分網頁。當然可以是XML或者甚至是JavaScript程式碼。表現為使用內嵌Ruby的HTMLXMLJavaScript模板。

控制器[編輯]

控制器將使用者介面和資料模型關聯起來,並充當協調運作的角色。它接收各種用戶操作,更新資料模型,並用合適的view展示結果給用戶。像他的名字一樣,可以說應用的主要控制中心就是各個控制器。

Rails的組成模組[編輯]

檢視系統裡面安裝的gem包,可以發現如下的Rails相關的Gems。

  • actionmailer (1.3.2)
    Service layer for easy email delivery and testing.
  • actionpack (1.13.2)
    Web-flow and rendering framework putting the VC in MVC.
  • actionwebservice (1.2.2)
    Web service support for Action Pack.
  • activerecord (1.15.2)
    Implements the ActiveRecord pattern for ORM.
  • activesupport (1.4.1)
    Support and utility classes used by the Rails framework.
  • rails (1.2.2)
    Web-application framework with template engine, control-flow layer, and ORM.

模型:Active Record[編輯]

ActiveRecord實現了Rails的物件關係對映

控制器和視圖:ActionPack[編輯]

ActionController是Rails中的控制器,提供各種方法供用戶操作使用。

ActionView是Rails中的視圖,負責展現使用者介面。

常用實用工具:ActiveSupport[編輯]

ActiveSupport包提供一些工具和支援程式碼。

處理郵件:ActionMailer[編輯]

ActionMailer用來傳送和接收email

Web服務:ActionWebService[編輯]

ActionWebService來提供SOAPXML-RPC支援。需要注意的是,Rails趨向使用更加簡單明瞭的REST方式web服務而不再提倡SOAP格式的web服務。ActionWebServices在未來的版本裡面會逐步淡出。

網路資源:ActiveResource[編輯]

用REST對Web服務提供了優秀的支援。這種風格的Web服務使用指定的資源。

Rails中的AJAX[編輯]

AJAX(非同步JavaScript與XML)是一種非同步傳輸介面,可以藉由瀏覽器使用JavaScriptXML或其他資料格式來處理傳輸請求,而將Web伺服器作為後台來處理,這樣無須載入額外的網頁。Rails內建有Prototype套件來實現這個技術。Ajax已經和Ruby on Rails結合在了一起成為了一個新的系統叫做「Ajax on Rails」。Rails提供一些助手工具來更方便地實現AJAX應用。 Rails提供了一些Helper,可以在伺服器一端用純Ruby語言生成給瀏覽器用的JavaScript程式碼,從而讓Rails的開發者不需掌握JavaScript就可以簡單方便的開發出AJAX的應用。

Rails和Web服務[編輯]

稍早的版本的Rails中提供了ActionWebService作為開發XML-RPC和SOAP的web服務的基礎。但是最近的Rails 1.2更加傾向於是用REST方式的web服務,而ActionWebService在Rails 2.0中作為plugin而不再是rails核心的一部分。

Web伺服器支援[編輯]

對於開發和測試來說,一個很輕量的WEBrick網頁伺服器已經被包含在了Ruby中,常被用來作為應用伺服器。而對於生產應用,常推薦使用帶FastCGIApache或者Lighttpd,但任何支援CGI或者FastCGI的網頁伺服器都可以使用。在Apache上,mod_ruby也可以考慮用來提高效能。

資料庫支援[編輯]

使用Rails的架構開發網路應用一般都使用資料庫,所以推薦使用一個關聯式資料庫系統來進行資料儲存,若不能運行一個關聯式資料庫伺服器,Rails支援嵌入式資料庫SQLite。Rails還支援關聯式資料庫系統,包括MySQLPostgreSQLIBM DB2OracleSQL Server

系統要求[編輯]

整合式開發環境[編輯]

開發用的IDE有:EclipseMyEclipseNetBeansRubyMineAptanaSublime TextVisual Studio Code

類似的框架[編輯]

PHP 語言[編輯]

Python語言[編輯]

Perl語言[編輯]

Elixir語言[編輯]

Node.js環境[編輯]

參考文獻[編輯]

  1. ^ David. Rails 1.0: Party like it's one oh oh!. Ruby on Rails. [2017-03-01]. 
  2. ^ rafaelfranca. Rails 5.2.3 has been released. Ruby on Rails Weblog. 
  3. ^ rafaelfranca. Rails 4.2.11.1, 5.0.7.2, 5.1.6.2, 5.2.2.1, and 6.0.0.beta3 have been released!. Ruby on Rails Weblog. 
  4. ^ [1]

外部連結[編輯]

官方網站[編輯]

其他[編輯]