国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

什么是rails?rails介紹

2024-04-25 20:44:38
字體:
供稿:網(wǎng)友
Rails框架首次提出是在2004年7月,它的研發(fā)者是26歲的丹麥人David Heinemeier Hansson。不同于已有復(fù)雜的Web 開發(fā)框架,Rails是一個(gè)更符合實(shí)際需要而且更高效的Web開發(fā)框架。Rails結(jié)合了PHP體系的優(yōu)點(diǎn)(快速開發(fā))和Java體系的優(yōu)點(diǎn)(程序規(guī)整),因此,Rails在其提出后不長的時(shí)間里就受到了業(yè)內(nèi)廣泛的關(guān)注。

簡介

Ruby on Rails 是一個(gè)用于開發(fā)數(shù)據(jù)庫驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序的完整框架。Rails基于MVC(模型- 視圖- 控制器)設(shè)計(jì)模式。從視圖中的Ajax應(yīng)用,到控制器中的訪問請求和反饋,到封裝數(shù)據(jù)庫的模型,Rails 為你提供一個(gè)純Ruby的開發(fā)環(huán)境。發(fā)布網(wǎng)站時(shí),你只需要一個(gè)數(shù)據(jù)庫和一個(gè)網(wǎng)絡(luò)服務(wù)器即可。
Ruby On Rails是一個(gè)用于編寫網(wǎng)絡(luò)應(yīng)用程序的軟件包.它基于一種計(jì)算機(jī)軟件語言Ruby,給程序開發(fā)人員提供了強(qiáng)大的框架支持.你可以用比以前少的多的代碼和 短的多的時(shí)間編寫出一流的網(wǎng)絡(luò)軟件。
Ruby On Rails的指導(dǎo)原則是”不要重復(fù)你自己”(Don’t Repeat Yourself, 或DRY).意思是說你寫的代碼不會(huì)有重復(fù)的地方.比如以往數(shù)據(jù)庫的接口往往是類似的程序代碼但是在很多地方都要重復(fù)用到.這無論是給編寫還是維護(hù)都造成 了很大的代價(jià).相反,Ruby On Rails給你提供了絕大多數(shù)的支持,讓你只需要短短的幾行代碼就可以實(shí)現(xiàn)強(qiáng)大的功能.而且,Rails提供了代碼生成工具,讓你甚至不需要編寫一行代碼 就實(shí)現(xiàn)強(qiáng)大的管理程序.
Ruby On Rails通過reflection和runtime extension減少了對configuration文件的依靠,這和Java,C#語言的方向有很大不同,讓你減少了很多配置和部署的麻煩,但是性能上卻完全可以應(yīng)付一般網(wǎng)站的需求.
Rails 支持各類網(wǎng)絡(luò)服務(wù)器和數(shù)據(jù)庫。在服務(wù)器方面,我們推薦Apache、 lighttpd 或 nginx 代理至 Mongrel (或者使用FastCGI)。 數(shù)據(jù)庫方面,你可以采用MySQL、PostgreSQL、 SQLite、 Oracle、 SQL Server、 DB2、 或其他任何我們支持的系統(tǒng)。 Rails可以在各類操作系統(tǒng)上運(yùn)行,不過我們建議采用基于'nix的系統(tǒng)進(jìn)行開發(fā)。[1]

編輯本段發(fā)展歷程

Rails3.0經(jīng)過兩年的改進(jìn),終于發(fā)布了。社區(qū)聚集了1600多貢獻(xiàn)者一起齊心協(xié)力,使一切變得更加美好,更快,更清潔,更美麗。
在過去的兩年中,Ruby on Rails 應(yīng)用程序框架已經(jīng)具備了一個(gè)由托管和服務(wù)提供商組成的一體式行業(yè)、一套功能廣泛且令人印象深刻的開發(fā)工具,還有各種在 Ruby 用語里稱為 gems 和 plug-ins 的補(bǔ)充庫 — 可增強(qiáng)軟件的功能。例如 Engine Yard 和 Heroku 就是兩個(gè)提供虛擬的、方便的 Rails 軟件托管的公司;Oink 和 Bullet 分別用來顯示內(nèi)存使用和性能;Clearance 和 Sunspot 則用來提供現(xiàn)成的身份驗(yàn)證和快速的索引式搜索。
自2007年Apple的Leopard上捆綁了Ruby on Rails出售以來,Rails 社區(qū)也已不斷壯大。全球有眾多的 Rails 開發(fā)人員充滿活力、團(tuán)結(jié)互助,并且渴望不斷地改進(jìn)該軟件。可以毫不夸張地說,Rails 的改進(jìn)應(yīng)歸功于社區(qū),因?yàn)槭浅绦騿T之間不斷的相互超越使得構(gòu)建出的軟件越來越完善。如此不斷地循環(huán),各個(gè)功能才得以從初期階段快速發(fā)展,逐漸變的實(shí)用、功能不斷強(qiáng)大并完善,最終成為不可或缺的工具。在很多情況下,社區(qū)認(rèn)為最基本的 gems 和 plug-ins 都會(huì)保留到 Rails 核心中。Rails 的 named scopes(一個(gè)查詢快捷方式),可實(shí)現(xiàn)與 nested forms 相同的功能。這是一個(gè)新增的功能,可取代以前的嘗試,并在相同的 HTML 表單中創(chuàng)建和編輯多個(gè)模型。實(shí)際上,對于 Rails 開發(fā)人員來說最困難的任務(wù)或許就是跟上變化的節(jié)奏。(幸運(yùn)的是,目前有一些 Ruby 和 Ruby on Rails 的每周播客,這些播客會(huì)組織并呈現(xiàn)最新趨勢以及分享最佳實(shí)踐。)
Rails 下一個(gè)主要的發(fā)布是 Rails 版本 3,該版本繼續(xù)保持工具包的快速改進(jìn)。與以往相同,該軟件仍然非常 “固執(zhí)”,即仍然偏向于約定優(yōu)于配置。Rails 的核心組件始終存在,即 RESTful 路徑、關(guān)系、驗(yàn)證、模板和數(shù)據(jù)庫抽象化。不過,這些組件的許多內(nèi)部內(nèi)容已經(jīng)被重寫或者進(jìn)行了改進(jìn)。最明顯的并且很大程度上借用了 Merb 的理念的就是很多 Rails 的基本功能不再密切結(jié)合。例如,以前只對 Rails 應(yīng)用程序可用的數(shù)據(jù)驗(yàn)證便捷功能現(xiàn)在成為獨(dú)立的組件,并且可以包含在 Vanilla Ruby 代碼中。如呈現(xiàn)部件和模板等控制器功能,現(xiàn)在也是相互獨(dú)立的,并且可以嵌入到任一庫中。
在這篇文章中,您將會(huì)了解 Rails 3 及其眾多變化和附加功能,以及如何從頭創(chuàng)建一個(gè)新的 Rails 3 應(yīng)用程序。

編輯本段改進(jìn)

Rails 3 中變動(dòng)的數(shù)量太多,無法在此全部列出。要閱讀帶有補(bǔ)充資料的完整列表,請查詢 Rails 3 發(fā)布通知。這里僅介紹一些很可能會(huì)影響到開發(fā)人員的一些變動(dòng):
1. 一條命令可以控制所有事件。有了 Rails 3,無需在每一個(gè)應(yīng)用程序中使用整套腳本(script/server、script/generate 以及其他),使用一條命令即可取代其功能,該命令恰如其分地被命名為 rails。例如,在以前需要鍵入 ./script/console 的地方,您現(xiàn)在只需鍵入 rails console。
2. rails 命令還可以像以前一樣生成新的應(yīng)用程序。其運(yùn)行方式依據(jù)其是否在現(xiàn)有的 Rails 應(yīng)用程序中啟動(dòng)而有所不同。
3. 可為依賴性提供具體的解決方案。協(xié)調(diào)和解決 gem 依賴性是個(gè)棘手的問題。與可用 gems 的集合一樣,gem 的修訂也是隨系統(tǒng)的不同而有所變化。因?yàn)榫哂羞@樣的多樣化,所以很難廣泛地部署或共享一個(gè) Rails 應(yīng)用程序。Rails 3 引入了 Bundler,這是一個(gè)專門用于管理依賴性的實(shí)用程序(因此無需再使用 config.gem)。您可以在應(yīng)用程序根目錄內(nèi)一個(gè)名為 Gemfile 的目錄中聲明依賴性。Bundler 將下載和存儲(chǔ)所有指定的 gem。您甚至可以在應(yīng)用程序中 “打包” gem ,以便阻止從外部存儲(chǔ)庫下載。
4. 不帶查詢語句的查詢功能。一直以來,Rails 已經(jīng)可以充分運(yùn)用特定于領(lǐng)域的語言 (DSL) — 考慮一下 has_one 或 validates_numericality_of — 有一個(gè)明顯的例外:數(shù)據(jù)庫查詢。可以確定地說,Rails 的動(dòng)態(tài)搜尋器便捷、易用,但混合使用選項(xiàng)哈希值如 :conditions、:order 和 :limit 非常常見,因?yàn)槎际?find_by_sql 語句。
5. Rails 3 合并了 relational algebra,這是專門設(shè)計(jì)用于表示查詢的 DSL。基本命令包括 project(用于選擇列)、where(用于表示條件)、join(用于指定關(guān)系)、take 和 skip(分別用于限定和抵消),以及 group(用于聚集)等其他屬性。
6. 用于模糊樣板代碼的控制器。Rails 控制器的核心操作 —new、create、edit 和 update — 通常不變,尤其是當(dāng)控制器大部分用于 CRUD 操作時(shí)。事實(shí)上,控制器生成器的輸出 ./script/generate controller 一般不需要進(jìn)一步的修改就可以滿足需要。考慮到這些相似性,Rails 3 引入了 Responder 來進(jìn)一步簡化代碼。例如下面是 create 操作全部所需的幾行代碼:
class PostsController respond_to :html, :xml
def create
@post = Post.create(params[:post])
respond_with(@post)
end
end
在該代碼片段中,如果 @post 保存成功,respond_with(@post) 將發(fā)送到 show 以顯示新的記錄,而假設(shè)對象的驗(yàn)證失敗,則發(fā)送到 new。 這僅僅是一個(gè)小樣本。您可以在下一章節(jié)找到這些新功能的示例以及更多內(nèi)容,例如從頭構(gòu)建 Rails 3 應(yīng)用程序。

編輯本段特點(diǎn)。

全棧式的MVC框架

Rails是一個(gè)全棧式的MVC框架,換句話說,通過Rails可以實(shí)現(xiàn)MVC模式中的各個(gè)層次,并使它們無縫地協(xié)同運(yùn)轉(zhuǎn)起來。
在實(shí)際開發(fā)一個(gè)MVC模式的Web應(yīng)用項(xiàng)目時(shí),如果使用Java開發(fā),需要用到Struts(Controller 層)、Hibernate(Model層)和Spring 3個(gè)框架,而且需要額外整合3個(gè)框架開發(fā)出的內(nèi)容。而使用Ruby語言開發(fā)相同的項(xiàng)目時(shí),只需要用到Rails框架就可以完成。

約定優(yōu)于配置

為了說明各個(gè)對象之間的關(guān)聯(lián)關(guān)系,一般的Web應(yīng)用開發(fā)框架往往采用寫入XML配置文件的方法。這種方式雖然可以解決一些問題,但是卻帶來了管理上的混亂。
Rails 對此的態(tài)度是約定優(yōu)于配置,這意味著在Rails中不會(huì)出現(xiàn)XML配置文件。Rails使用Web應(yīng)用多年來積累的各種常見約定(更具體地說是命名規(guī)則)來代替XML配置文件,而在Rails內(nèi)部的映射與發(fā)現(xiàn)機(jī)制根據(jù)這些約定可以實(shí)現(xiàn)對象之間的關(guān)聯(lián)。在第1章中,通過Rails的映射與發(fā)現(xiàn)機(jī)制實(shí)現(xiàn)了數(shù)據(jù)表與Ruby對象之間的關(guān)聯(lián)。

更少的代碼

使用約定來代替XML配置文件說明Rails本身完成了大量的底層工作,這意味著使用更少的代碼來實(shí)現(xiàn)應(yīng)用程序是極有可能的。此外,代碼量的縮減也減小了出現(xiàn)bug的可能性,降低了維護(hù)程序和升級程序的難度。

生成器

Rails 使用的實(shí)時(shí)映射技術(shù)和元編程技術(shù),免去了開發(fā)人員在開發(fā)過程中編寫大量樣板文件代碼的煩惱。在少數(shù)需要使用樣板文件代碼的時(shí)候,開發(fā)人員可以通過 Rails內(nèi)建的生成器腳本實(shí)時(shí)創(chuàng)建,而不再是通過手工編寫。Rails的這個(gè)特點(diǎn)可以使開發(fā)人員更專注于系統(tǒng)的邏輯結(jié)構(gòu),而不必為一些瑣碎的細(xì)節(jié)所煩擾。

零周轉(zhuǎn)時(shí)間

對已有的Web應(yīng)用系統(tǒng)進(jìn)行修改后,其一般需要經(jīng)過配置、編譯、發(fā)布、重新設(shè)置、測試等一系列步驟才能投入使用,這明顯浪費(fèi)了許多時(shí)間。而使用Rails開發(fā)Web應(yīng)用系統(tǒng),可以通過瀏覽器即時(shí)查看程序運(yùn)行結(jié)果,從而節(jié)約了大量的時(shí)間。

支架系統(tǒng)

Rails的支架系統(tǒng)可以自動(dòng)為任何相關(guān)的數(shù)據(jù)庫表創(chuàng)建一套包含標(biāo)準(zhǔn)CRUD操作和前臺視圖的系統(tǒng)。通過支架系統(tǒng),開發(fā)人員可以方便快捷地操縱數(shù)據(jù)庫中的數(shù)據(jù)表。此外,Rails也允許開發(fā)人員使用自己設(shè)計(jì)的代碼或視圖來替換自動(dòng)生成的代碼和視圖。

指導(dǎo)原則

Rails的指導(dǎo)原則是"不要重復(fù)你自己"(Don't Repeat Yourself, 或DRY).意思是說你寫的代碼不會(huì)有重復(fù)的地方.比如以往數(shù)據(jù)庫的接口往往是類似的程序代碼但是在很多地方都要重復(fù)用到.這無論是給編寫還是維護(hù)都造成了很大的代價(jià).相反,Rails給你提供了絕大多數(shù)的支持,讓你只需要短短的幾行代碼就可以實(shí)現(xiàn)強(qiáng)大的功能.而且,Rails提供了代碼生成工具,讓你甚至不需要編寫一行代碼就實(shí)現(xiàn)強(qiáng)大的管理程序.Rails通過reflection和runtime extension減少了對configuration文件的依靠,這和Java,C#語言的方向有很大不同,讓你減少了很多配置和部署的麻煩,但是性能上卻完全可以應(yīng)付一般網(wǎng)站的需求.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 游戏| 凉城县| 馆陶县| 昭通市| 临夏县| 平和县| 黔西| 邮箱| 来安县| 清新县| 镇雄县| 拉孜县| 波密县| 彰化县| 布拖县| 屏山县| 建湖县| 凉城县| 长沙县| 靖江市| 肃南| 辽源市| 东至县| 遂宁市| 秦皇岛市| 六盘水市| 盐山县| 马关县| 河曲县| 东宁县| 嵊泗县| 樟树市| 鄂托克旗| 阿拉善左旗| 灵寿县| 融水| 乾安县| 英山县| 麻阳| 额济纳旗| 新巴尔虎左旗|