Ruby on Rails 是什麼?
Ruby是什麼 ?
我們在使用Rails之前,讓我們知道一點點關於Ruby是Rails的基礎。
Ruby 是成功的結合:
- Smalltalk的概念上的優雅,
- Python 易於使用和學習,
- Perl 實用主義
Ruby 是
- 一個高層次的編程語言
- 像Perl,Python和Tcl/ TK 的解釋。
- 面向對象的,如:Smalltalk, Eiffel, Ada, Java.
- 起源於日本,並迅速在美國和歐洲獲得廣泛關注。
爲什麼選擇Ruby ?
Ruby在日本,美國和歐洲越來越受歡迎。以下是最大的因素:
- 簡單易學
- 開源(非常寬鬆許可證)
- 豐富的庫
- 很容易擴展
- 真正的面向對象
- 編碼錯誤更少
- 幫助社區
爲什麼不用 Ruby ?
- 性能 - 雖然它匹敵Perl和Python。
- 線程模型不使用原生線程。
Ruby代碼示例:
下面是一個示例Ruby代碼打印 "Hello Ruby"
The Hello Class
class Hello
def initialize( name )
@name = name.capitalize
end
def salute
puts "Hello #{@name}!"
end
end
Create a new object
h = Hello.new("Ruby")
Output "Hello Ruby!"
h.salute
嵌入式Ruby:
Ruby 提供了一個叫ERb(嵌入式的Ruby),由Seki Masatoshi編寫的程序。ERB允許把一個HTML文件裏面加入Ruby代碼。ERb逐字逐句,然後在某一個點時,看到Ruby代碼嵌入到文檔中看到,它已經填補一個空白,它通過執行Ruby代碼。
需要知道的只有兩件事情,準備ERb的文件:
如果想執行一些Ruby代碼,請將它寫在 <% 和 %>之間
如果想執行的代碼打印出來的結果,作爲輸出的一部分,請將代碼寫入到 <%= 和 %>之間.
下面是一個例子,保存的代碼在erbdemo.rb文件。請注意Ruby的文件將有擴展 .rb
<% page_title = "Demonstration of ERb" %>
<% salutation = "Dear programmer," %>
<%= salutation %>
This is an example of how ERb fills out a template.
現在,運行程序,使用命令行實用程序 erb
c:\ruby\>erb erbdemo.rb
這將產生以下結果:
Dear programmer,
This is an example of how ERb fills out a template.
Rails是什麼?
- 一個非常富有成效的web應用框架。
- 由David Heinemeier Hansson用Ruby編寫。
- 可以開發一個Web應用程序比用一個典型的Java框架至少十倍的速度。
- 一個開源Ruby框架,用於開發數據庫支持的Web應用程序。
- 代碼和數據庫架構的配置!
- 無需編譯階段。
完整的堆棧框架
- 包括一切需要創建一個數據庫驅動的Web應用程序使用的模型 - 視圖 - 控制器模式。
- 作爲一個全棧框架意味着所有圖層建立無縫協同工作,更少的代碼。
- 需要更少的總的代碼行比其他框架花在建立自己的XML配置文件。
約定優於配置
- Rails 迴避贊成配置文件的約定,反射和動態運行時擴展。應用程序代碼和運行的數據庫已經包含了Rails需要知道的一切!
Rails 優勢:
Rails是包裝功能,更有效率,許多基礎上另一個具有以下特點。
元編程 : 其他框架使用大量的代碼生成從零開始。使用元編程技術方案編寫程序。 Ruby是的元編程最好的語言之一,Rails使用此功能。Rails的也採用代碼生成,元編程繁重,但更依賴。
活動記錄 : Rails 介紹活動記錄的框架,這將對象保存到數據庫。活動記錄發現 Rails版本的數據庫架構中的列,並自動附加到對象域使用元編程。
約定優於配置: 大多數Web開發框架.NET或Java,迫使寫配置代碼的頁面。如果遵循建議的命名約定時,Rails不需要太多的配置。
腳手架: 經常在發展的早期階段,以幫助應用程序快速創建臨時代碼,主要組成部分是如何一起工作。 Rails自動創建很多需要的腳手架。
內置測試: Rails創建簡單的自動化測試,也可以擴展。Rails也提供支持所謂的安全帶及裝置,使更容易編寫和運行測試用例的代碼。 Ruby可以執行所有耙子實用程序的自動化測試。
三種環境: Rails 提供了三種默認的環境:開發,測試和生產。每個人的行爲方式略有不同,更容易使整個軟件開發週期。例如,Rails的測試數據庫中創建一個新的副本,每個測試運行。