用Rails中Rake管理MySQL数据库

豆豆网   技术应用频道   2008年02月19日  【字号: 收藏本文

内容摘要:为什么不用与编程相同的方式来管理数据库结构呢?自从开始使用Rails,终于找到了答案。通过Rails的功能,可以使用程序员的方式来管理MySQL数据库了。

  然后,创建state.csv文件,并存放在db/seed目录下面。该文件的内容如下:

  id, name, abbreviation

  1, Alabama, AL

  2, Alaska, AK

  3, Arizona, AZ

  4, Arkansas, AR

  5, California, CA

  6, Colorado, CO

  接下来,需要创建一个Rake文件,至于这一点,要想完全讲清楚,没有一篇比较长的文章很难。因此在这里不进行具体的解释,只列出步骤。创建seeder.task文件,并将它存放在项目的lib/tasks目录下面,该文件的内容如下所示:

  namespace:dbdo
  desc"Loadseedfixtures(fromdb/seed)intothecurrent
  environment'sdatabase."
  task:seed=>:environmentdo
  require'active_record/fixtures'
  Dir.glob(RAILS_ROOT+'/db/fixtures/*.csv').eachdo|file|
  Fixtures.create_fixtures('db/seed',
  File.basename(file,'.*'))
  end
  end
  end

  为了生成states数据表,需要在项目的目录下执行如下的命令:

  %>rake db:seeder

  登陆MySQL数据库服务器,检查数据库,表已经创建好了。

  三、在数据库之间迁移数据

  Rails的开发者Tobias Lutke遇到了数据迁移的问题,他采用Rake任务将数据库中的数据生成YAML格式的文件,再通过Rails的Migrations功能来生成其它数据库(包括MySQL、SQLite、SQL Server以及Oracle)。在这里,不列出具体的代码,因为很长,只列出一些关键的命令就可以了。

  执行下面的命令,把数据库中的数据生成YAML格式:

  %>rakedb:backup:write

  于是,数据库中的所有表都备份到了db/backup目录中了。接下来要做的就是修改database.yml文件,以指向接收数据的数据库。并运行如下的命令:

 %>rakedb:backup:write

  四、小结

  作为一个Rails开发者,你可能熟练得运用“rake”运行你的测试,或者你利用“rake db:migrate”运行你的数据迁移任务(migration)。但是,你是否真正明白在那些Rake任务的背后发生了什么吗?你是否意识到,你可以编写属于你的任务,或者创建好用的属于你的Rake库文件?

  本文只是介绍了Rails的数据管理功能的冰山一角,事实上,它不仅支持MySQL,还支持目前市面上的大多数数据库,诸如SQLite、PostgreSQL、SQL Server和Oracle。如果读者想了解更多这个精彩工具的功能,可以去查看Rails的官方站点的migrations documentation(http://api.rubyonrails.org/classes/ActiveRecord/Migration.html)。

来源:豆豆网转载    作者:IT168 sterning    责编:豆豆技术应用

正在加载评论...