从应用程序运行数据库迁移

时间:2020-03-05 18:46:16  来源:igfitidea点击:

我有一个Rails应用程序,其中每个用户都有一个单独的数据库。 (在此方面接受Joel Spolsky的建议)。我想从rails应用程序运行数据库迁移,以为此用户创建一个新的数据库和表。

最简单的方法是什么?

也许db迁移对于这种类型的事情不是最好的。谢谢!

如果它可以是一个完全自动化的过程,那就太好了。以下过程将是理想的。

  • 用户在我们的网站上注册以使用此Web应用程序
  • 运行迁移以创建此用户数据库并正确设置表

有没有一种方法可以从Ruby应用程序中调用Rake任务?

解决方案

回答

我们为每个用户使用单独的配置文件。因此,在config /目录中,我们将拥有roo.database.yml并将其连接到我的个人数据库,然后将其复制到rails使用的database.yml文件中。

我们正在考虑扩展rails Rakefile,以便可以将开发人员指定为环境变量,然后选择一个特定的datbase配置,从而只允许使用一个database.yml文件。由于上述方法效果很好,因此我们尚未做到这一点。

回答

要回答部分问题,下面是如何从Rails代码内部运行rake任务:

require 'rake'
load 'path/to/task.rake'

Rake::Task['foo:bar:baz'].invoke

提醒我们,我不知道如何(或者为什么)每位用户可以拥有一个数据库。

回答

实际上,我发现了一种从应用程序运行数据库迁移的好方法:

ActiveRecord::Migrator.migrate("db/migrate/")