ROR的数据库维护解决方案
Confach 发表于 August 21, 2007 5:54 pm
版权信息 :严禁转载, 若想推荐或收藏,请用链接的形式.
网址:http://www.36sign.com/blog/working/database-maintainace-solution-from-ror.html
很早就听说ROR有Database Migrate这样的服务.以前由于所做的太简单,也就没有必要去关心它.一旦数据库需要修改的时候,才会想到,"哦,原来ROR还有这样一个服务!".
感觉Migrate这样的服务真的很棒,很容易维护数据库结构和表.记得以前都是现在开发的环境下修改调试好之后,就部署到production环境下,一个个字段增加,删除或者修改.殊不知,这样是非常容易修改错的,相信很多人都有类似的经历.
现在ROR提供的解决方案非常简单,就是在Database Migrate目录下增加一些数字开头的ruby文件,直接到产品环境下执行就OK了.命令很简单:
ruby 代码
- rake db:migrate
或者
- rake db:migrate VERSION=num
这里,num就是要迁移的版本号.
在Database Migrate目录的文件里,包含了你要对数据库的操作,例如,创建一个表的文件内容可能如下:
ruby 代码
- class CreateUsers < ActiveRecord::Migration
- def self.up
- create_table :users do |t|
- t.column :login, :string
- t.column :email, :string
- t.column :password, :string
- t.column :created_at, :datetime
- t.column :last_login_at, :datetime
- t.column :admin, :boolean
- t.column :posts_count, :integer, :default => 0
- end
- end
- def self.down
- drop_table :users
- end
- end
文件名或许是002_create_user_table.rb
详细的内容可以参考Rails的API,书籍可以参考Agile Web Development with Rails,Second Edition 的第16章,正好中文有免费试读的.
好处就是:
- 版本控制
- 替换DDL
- 自动化,避免手工错误
- 共享资源
- 部署的简单性,灵活性
不足有:
- 难度较大,需要程序员有充足的知识