2011-12-20 13 views
1

私はプログラマ以外のエンドユーザがアプリケーションを単独でインストールできるようにする必要があるアプリケーションを作成しています。jrubyとwarbleを使用してdb:migrateとdb:rakeタスクをコントローラ内で実行する

すでにRubyのenv + Webサーバー+データベースのインストール部分を処理しました。今私は、アプリケーションのデータベースをセットアップすることができなければなりません。私はrake db:setupをInstallationController内で実行することを考えています(これはインストール処理中にのみアクセス可能です)。

可能ですか?どうやってやるの?

私はWarbleとJRubyの使用を計画していますので、私のアプリ内でコマンドラインを使用してそれを行うことはできません。

+0

afaik接続先のデータベースがない限り、サーバーは起動しません。あなたはactiverecordのレールティックフックでいくつかのサルのパッチを当てる必要があるかもしれません – clyfe

答えて

4

限り、データベースが存在する(またはsqlite3のような使用に作成されます)として、あなたはかなり簡単にマイグレーションを実行するために、あなたのアプリで初期化子を投げることができます。

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

データベースが正しく設定されていない場合、コントローラを使用することはできません。セットアップがWebインターフェイスを経由しなければならない場合は、DBの作成、移行などを処理する小さなSinatraアプリケーションを組み込むことができます。これを行うには、コマンドをシェルする必要があります(コマンドをバッククォートするだけで実行できます) :

puts "Migrating database..." 
`rake db:migrate` 
関連する問題