Welcome 微信登录

首页 / 软件开发 / JAVA / 利用Rails中Rake管理MySQL数据库

利用Rails中Rake管理MySQL数据库2011-11-09作为一名优秀的程序员,除了编写大量的程序外,创建大量的数据库也是在所难免的。在过去的几年中,笔者曾经创建和管理了大量的MySQL数据库,在这个过程中曾使用各种工具来进行管理,以便使它的过程更简单,例如首选的图形化管理工具PHPMyAdmin,以及基于命令行的MySQL clent,它们都非常好用。但是,在笔者内心身处始终觉得,我们是一名程序员,而不是一名数据库管理员,总感觉编程和数据库管理之间有些跨越。为什么不用与编程相同的方式来管理数据库结构呢?自从开始使用Rails,终于找到了答案。通过Rails的功能,可以使用程序员的方式来管理MySQL数据库了。

一、使用Migrations管理数据表

在Rails中,当创建一个叫contact的model时,同时一个名为contacts的数据表将会被创建。因此,对数据表contacts的操作可以转换成对模型contact操作,可以访问它的属性。而很多的新手习惯使用一些框架什么的来操作数据表,其实,可以通过Rails本身提供的功能就可以操作数据表了。这样的功能就是Migrations功能。

多数Rails开发者使用Migrations迁移的基本功能来创建和管理数据库。数据迁移功能让你可以使用Ruby语言来管理数据库方案,可以充分利用一些Ruby所特有的工具,诸如Rake,来根据Ruby脚本提供的指令来更新数据库。还有,数据迁移功能还具有一个内置的版本控制功能,可以像在Subversion或CVS中那样对所做的修改进行前后的回滚。听起来是不是很具有诱惑力呢?

Migrations有点像活动记录(Active Record,一个对象,它包装数据库表或视图中的某一行,封装数据库访问,并在这些数据上增加了领域逻辑),可以通过Migrations进行程序形式的管理数据表,即可以创建、修改、删除表格,而且语法很简单。更重要的是,Migrations提供了一个构建的控制器。

事实上,当在Rails下创建一个新的model时,会自动的创建Migration文件。例如,创建一个contact模型时,在项目的db目录下,即可发现一个名为001_create_contacts.rb的文件,其内容如下所示:

class CreateContacts < ActiveRecord::Migrationdef self.upcreate_table :contacts do |t|endenddef self.downdrop_table :contactsendend
如果想要创建数据表,可以把以上内容修改成如下内容:

class CreateContacts < ActiveRecord::Migrationdef self.upcreate_table :contacts do |t| t.column :name, :string, :null => false t.column :email, :string t.column :phone, :string, :limit => 10, :null => falseendenddef self.downdrop_table :contactsendend
现在可以使用Migration功能了,在项目的目录下运行如下的Rake命令:

%>rake db:migrate