對象關系映射
面向對象編程(OOP)會發(fā)現(xiàn)它在轉換對象模型到實體關系表是很困難的,比如那些用在數(shù)據(jù)庫管理系統(tǒng)中,比如MySQL.
對象關系映射(ROM)是建立以下OOP范式到實體-關系數(shù)據(jù)庫記錄的數(shù)據(jù)模型的過程.使用ORM,一個對象的屬性和關系可以很容易的寫入到數(shù)據(jù)庫而不需要把程序邏輯轉換成SQL語句,也就是說訪問數(shù)據(jù)庫的頻率會更低.
在Rails中,它是由 Active Record 完成的,一種由Martin Fowler提出的在數(shù)據(jù)上的操作同時攜帶永久數(shù)據(jù)和行為邏輯對象的Active Record模式的實踐.
Active Record 負責處理所有 Rails 用來永久存儲數(shù)據(jù)的操作.它提供了一些和創(chuàng)建和模型對象相關的機制.
比如,它讓我們:
- 表示模型和它們的數(shù)據(jù)
- 表示模型之間的關系
- 表示關系模型之間的繼承層次
- 得到持久化數(shù)據(jù)之前會驗證模型
- 以面向對象的形式執(zhí)行數(shù)據(jù)操作
最后一點對Rails開發(fā)人員是特別重要的.你應該常常有個數(shù)據(jù)庫是怎樣支撐你的應用程序的清晰畫面,你的代碼會怎樣使用它,使用Rails你可以通過編程對象的角度來設計你的應用程序,而不需要創(chuàng)建一個關系圖表.
有個觀點是當你不能按照標準的約定應該使用明確的配置.Rails假設大部分的web應用程序會使用默認的配置.
ORM假設你在使用一個關系型數(shù)據(jù)庫.也有面向對象數(shù)據(jù)庫,如果你計劃使用面向對象數(shù)據(jù)庫你就不會使用Active Record,取而代之的是,你會使用和Active Record 類似API的 gem ,這個gem能為NoSQL數(shù)據(jù)庫系統(tǒng)提供對象文件映射器(ORM)的功能.
Bundler
Bundler 是Rails的默認gem管理器.它的明確任務是"管理一個應用程序所有的依賴gem,使它能在多個機器上系統(tǒng)和重復的使用".
在你的系統(tǒng)上開始Bundler設置是很容易的,打開終端窗口并運行:
$ gem install bundler
使用Bundler,依賴會聲明在一個應用的根目錄下的一個文件中,該文件名叫 Gemfile.
一個 Gemfile 至少需要一個gem源,gem源是一個 RubyGems 服務器的URL.如果你運行:
$ bundle init
Gemfile 默認的 rubygems.org 源就會產(chǎn)生:
#a simple Gemfile
source "https://rubygems.org"
# gem "rails"
如果可以的話,使用 https 會讓你和 rubygems.org 服務器的連接使用SSl認證.當你創(chuàng)建一個新的應用,這一步默認已經(jīng)讓 Rails 完成了.
你可以聲明你需要的 Bundler gem,包含版本號:
source 'https://rubygems.org'
gem 'rails', '4.1.0.rc2'
gem 'rack-cache'
gem 'nokogiri', '~> 1.6.1'
大多數(shù)版本指定是不言自明的,但是其它的還有一個特殊的意義.
比如, >= 是不言自明的,但是 ~> 2.0.3 是等同于 >= 2.0.3 和 < 2.1甚牲。 ~> 2.1 是等同于 >=2.1 和 <3.0磷仰。~>2.2.bate 會匹配
搶鮮版比如 2.2.bate.12。
選擇一個編輯器
Ruby on Rails 并沒有一個像大多數(shù)程序員使用的所謂標準的編輯器.Rails程序員會傾向于使用各種編輯器;我們都用自己的特殊愛好和偏好.
一個可使用的不完全無序的編輯器列表如下:
- Vim
- Emacs
- RubyMine (很有可能是最像一個 IDE 了)
- Aptana RadRails
- TextMate
- NetBeans
- Sublime Text 2
- RDT (Eclipse的Ruby開發(fā)工具插件)
選擇你的最好的編輯器是個人的口味,但是開發(fā)者們經(jīng)常為編輯器而產(chǎn)生爭論.
如果你不相信我,可以查看https://xkcd.com/378/