第36个标记 » ROR的数据库维护解决方案

喜马拉雅的天空

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 代码
  1. rake db:migrate   

或者

  1. rake db:migrate VERSION=num    

这里,num就是要迁移的版本号.

在Database Migrate目录的文件里,包含了你要对数据库的操作,例如,创建一个表的文件内容可能如下:

ruby 代码
  1. class CreateUsers < ActiveRecord::Migration   
  2.  def self.up      
  3.  create_table :users do |t|       
  4.    t.column :login:string        
  5.    t.column :email:string      
  6.    t.column :password:string  
  7.    t.column :created_at:datetime  
  8.    t.column :last_login_at:datetime  
  9.    t.column :admin:boolean  
  10.    t.column :posts_count:integer:default => 0  
  11.  end  
  12. end  
  13.   
  14.   def self.down  
  15.    drop_table :users  
  16.  end  
  17. end  

文件名或许是002_create_user_table.rb

 

详细的内容可以参考Rails的API,书籍可以参考Agile Web Development with Rails,Second Edition 的第16章,正好中文有免费试读的.

好处就是:

  1.  版本控制
  2. 替换DDL
  3. 自动化,避免手工错误
  4. 共享资源
  5. 部署的简单性,灵活性

不足有:

  1. 难度较大,需要程序员有充足的知识

 

 



发表评论