2011-12-20 6 views
1

我正在創建一個應用程序,它必須允許非程序員最終用戶自行安裝應用程序。執行db:migrate和db:使用jruby和warble在控制器內部設置rake任務

我已經處理了ruby env + web服務器+數據庫安裝部分。現在我必須能夠爲應用程序設置數據庫。我正在考慮在InstallationController中運行rake db:setup(它只能在安裝過​​程中訪問)。

可能嗎?我怎樣才能做到這一點?

我打算使用Warble和JRuby,所以我無法通過在我的應用程序中使用命令行來完成它。

+0

afaik服務器不會啓動,除非有一個數據庫連接到。你可能需要在activerecord railtie hooks中做一些猴子補丁 – clyfe 2011-12-20 22:32:49

回答

4

只要數據庫中存在(或產生像sqlite3的使用),您可以在您的應用程序很容易地運行遷移拋出初始化。

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

如果數據庫設置不正確,您將無法使用控制器。如果安裝必須通過Web界面,您可以包含一個小型的Sinatra應用程序,負責數據庫創建,遷移等。要做到這一點,您只需要掏出命令(您可以通過反引號來執行該命令) :

puts "Migrating database..." 
`rake db:migrate` 
相關問題