对象关系映射
面向对象编程(OOP)会发现它在转换对象模型到实体关系表是很困难的,比如那些用在数据库管理系统中,比如MySQL.
对象关系映射(ROM)是建立以下OOP范式到实体-关系数据库记录的数据模型的过程.使用ORM,一个对象的属性和关系可以很容易的写入到数据库而不需要把程序逻辑转换成SQL语句,也就是说访问数据库的频率会更低.
在Rails中,它是由 Active Record 完成的,一种由Martin Fowler提出的在数据上的操作同时携带永久数据和行为逻辑对象的Active Record模式的实践.
Active Record 负责处理所有 Rails 用来永久存储数据的操作.它提供了一些和创建和模型对象相关的机制.
比如,它让我们:
- 表示模型和它们的数据
- 表示模型之间的关系
- 表示关系模型之间的继承层次
- 得到持久化数据之前会验证模型
- 以面向对象的形式执行数据操作
最后一点对Rails开发人员是特别重要的.你应该常常有个数据库是怎样支撑你的应用程序的清晰画面,你的代码会怎样使用它,使用Rails你可以通过编程对象的角度来设计你的应用程序,而不需要创建一个关系图表.
有个观点是当你不能按照标准的约定应该使用明确的配置.Rails假设大部分的web应用程序会使用默认的配置.
ORM假设你在使用一个关系型数据库.也有面向对象数据库,如果你计划使用面向对象数据库你就不会使用Active Record,取而代之的是,你会使用和Active Record 类似API的 gem ,这个gem能为NoSQL数据库系统提供对象文件映射器(ORM)的功能.
Bundler
Bundler 是Rails的默认gem管理器.它的明确任务是"管理一个应用程序所有的依赖gem,使它能在多个机器上系统和重复的使用".
在你的系统上开始Bundler设置是很容易的,打开终端窗口并运行:
$ gem install bundler
使用Bundler,依赖会声明在一个应用的根目录下的一个文件中,该文件名叫 Gemfile.
一个 Gemfile 至少需要一个gem源,gem源是一个 RubyGems 服务器的URL.如果你运行:
$ bundle init
Gemfile 默认的 rubygems.org 源就会产生:
#a simple Gemfile
source "https://rubygems.org"
# gem "rails"
如果可以的话,使用 https 会让你和 rubygems.org 服务器的连接使用SSl认证.当你创建一个新的应用,这一步默认已经让 Rails 完成了.
你可以声明你需要的 Bundler gem,包含版本号:
source 'https://rubygems.org'
gem 'rails', '4.1.0.rc2'
gem 'rack-cache'
gem 'nokogiri', '~> 1.6.1'
大多数版本指定是不言自明的,但是其它的还有一个特殊的意义.
比如, >= 是不言自明的,但是 ~> 2.0.3 是等同于 >= 2.0.3 和 < 2.1。 ~> 2.1 是等同于 >=2.1 和 <3.0。~>2.2.bate 会匹配
抢鲜版比如 2.2.bate.12。
选择一个编辑器
Ruby on Rails 并没有一个像大多数程序员使用的所谓标准的编辑器.Rails程序员会倾向于使用各种编辑器;我们都用自己的特殊爱好和偏好.
一个可使用的不完全无序的编辑器列表如下:
- Vim
- Emacs
- RubyMine (很有可能是最像一个 IDE 了)
- Aptana RadRails
- TextMate
- NetBeans
- Sublime Text 2
- RDT (Eclipse的Ruby开发工具插件)
选择你的最好的编辑器是个人的口味,但是开发者们经常为编辑器而产生争论.
如果你不相信我,可以查看https://xkcd.com/378/