Ruby on Rails
此條目需要補充更多來源。 (2022年5月31日) |
Ruby on Rails(官方簡稱為Rails,亦被簡稱為RoR),是一個使用Ruby語言寫的開源Web應用框架,它是嚴格按照MVC結構開發,努力使自身保持簡單,使實際應用開發時的代碼更少,使用最少的配置。
開發者 | Rails核心團隊 |
---|---|
首次發布 | 2005年12月13日[1] |
當前版本 | 8.0.0(2024年11月7日,12天前) |
源代碼庫 | |
操作系統 | 跨平台 |
語言 | Ruby |
類型 | Web應用框架 |
許可協議 | MIT許可證 |
網站 | rubyonrails |
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的網站有:[2]
- Basecamp
- GitHub
- Groupon
- Shopify
- Yellow Pages
- GitLab
- Coinbase
- Crypto.com
歷史
編輯於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的HTML/XML/JavaScript模板。
控制器
編輯控制器將用戶界面和數據模型關聯起來,並充當協調運作的角色。它接收各種用戶操作,更新數據模型,並用合適的view展示結果給用戶。像他的名字一樣,可以說應用的主要控制中心就是各個控制器。
Rails的組成模塊
編輯模型:Active Record
編輯ActiveRecord實現了Rails的對象關係映射。
控制器和視圖:ActionPack
編輯ActionController是Rails中的控制器,提供各種方法供用戶操作使用。
ActionView是Rails中的視圖,負責展現用戶界面。
常用實用工具:ActiveSupport
編輯ActiveSupport包提供一些工具和支持代碼。
處理郵件:ActionMailer
編輯ActionMailer用來發送和接收email。
Web服務:ActionWebService
編輯ActionWebService來提供SOAP和XML-RPC支持。需要注意的是,Rails趨向使用更加簡單明瞭的REST方式web服務而不再提倡SOAP格式的web服務。ActionWebServices在未來的版本裡面會逐步淡出。
網絡資源:ActiveResource
編輯用REST對Web服務提供了優秀的支持。這種風格的Web服務使用指定的資源。
Rails中的AJAX
編輯AJAX(非同步JavaScript與XML)是一種非同步傳輸介面,可以藉由瀏覽器使用JavaScript和XML或其他數據格式來處理傳輸請求,而將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中,常被用來作為應用服務器。而對於生產應用,常推薦使用帶FastCGI的Apache或者Lighttpd,但任何支持CGI或者FastCGI的網頁伺服器都可以使用。在Apache上,mod_ruby也可以考慮用來提高性能。
數據庫支持
編輯使用Rails的架構開發網絡應用一般都使用數據庫,所以推薦使用一個關聯式資料庫系統來進行數據存儲,若不能運行一個關聯式資料庫服務器,Rails支持嵌入式數據庫SQLite。Rails還支持關聯式資料庫系統,包括MySQL、PostgreSQL、IBM DB2、Oracle和SQL Server。
系統要求
編輯集成開發環境
編輯開發用的IDE有:Eclipse,MyEclipse,NetBeans,RubyMine,Aptana,Sublime Text,Visual Studio Code
類似的框架
編輯參考文獻
編輯外部連結
編輯官方網站
編輯- (英文)Ruby On Rails官方網站(頁面存檔備份,存於網際網路檔案館)
- (繁體中文)Ruby on Rails台灣官方網站(頁面存檔備份,存於網際網路檔案館)
其他
編輯- Ruby 中國社區(頁面存檔備份,存於網際網路檔案館)
- Onlamp.com的Ajax on Rails(頁面存檔備份,存於網際網路檔案館)
- Fast-track your Web apps with Ruby on Rails(頁面存檔備份,存於網際網路檔案館)(David Mertz article at IBM developerWorks)
- Ruby on Rails和J2EE:兩者能否共存?(頁面存檔備份,存於網際網路檔案館)
- Full Ruby on Rails Tutorial
- Steve Yegge把Rails移植到JavaScript/Rhino(頁面存檔備份,存於網際網路檔案館)
- Ruby編寫的JavaEye中的ruby論壇