【问题标题】:Execute db:migrate and db:setup rake tasks inside a controller using jruby and warble使用 jruby 和 warble 在控制器内执行 db:migrate 和 db:setup rake 任务
【发布时间】:2011-12-21 07:29:25
【问题描述】:

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

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

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

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

【问题讨论】:

  • afaik 除非有要连接的数据库,否则服务器将不会启动。你可能需要在 activerecord railtie hooks 中做一些猴子补丁

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


【解决方案1】:

只要数据库存在(或像 sqlite3 那样在使用时创建),您就可以在您的应用程序中添加一个初始化程序以非常轻松地运行迁移。

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

【讨论】:

    【解决方案2】:

    如果数据库设置不正确,您将无法使用控制器。如果必须通过 Web 界面进行设置,您可以包含一个小型 Sinatra 应用程序,该应用程序负责数据库创建、迁移等。为此,您只需执行命令(您可以通过反引用命令来完成) :

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 2021-02-16
      • 2021-02-25
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多