使用jruby和warble在控制器内执行db:migrate和db:setup rake任务

时间:2011-12-20 21:10:49

标签: ruby-on-rails jruby rails-migrations warbler

我正在创建一个必须允许非程序员最终用户自行安装应用程序的应用程序。

我已经处理了ruby env + web服务器+数据库安装部分。现在我必须能够为应用程序设置数据库。我正在考虑在InstallationController中运行 rake db:setup (只能在安装过​​程中访问)。

有可能吗?我怎样才能做到这一点?

我打算使用Warble和JRuby,所以我无法通过在我的应用程序中使用命令行来实现。

2 个答案:

答案 0 :(得分:3)

如果未正确设置数据库,您将无法使用控制器。如果设置必须通过Web界面,您可以包含一个小型的Sinatra应用程序来处理数据库的创建,迁移等。要做到这一点,您只需要执行命令(您可以通过反向命令来执行此操作) :

puts "Migrating database..."
`rake db:migrate`

答案 1 :(得分:3)

只要数据库存在(或者像sqlite3一样在使用时创建),您就可以在应用程序中抛出初始化程序,以便轻松地运行迁移。

ActiveRecord::Migrator.migrate(Rails.root.join('db','migrate'))