2010-11-11 35 views
1

我想從遷移中調用thor任務。 隨着耙我可以寫從遷移中運行Thor任務

def self.up 
    Rake::Task["db:rollback"].invoke 
end 

但我怎麼能這樣做與thor? (雷神命令是「雷神DB:回滾」) (thor db:rollback不是一個選擇,我要那麼看到輸出和腳本應該在錯誤中斷)

UPDATE: 遷移從Thorfile

它看起來像這樣:

require 'active_record' 
class Db < Thor 
    desc "migrate", "description ..." 
    def migrate 
    ActiveRecord::Migrator.migrate(MIGRATIONS_PATH) 
    end 
end 

回答

2

假設db:rollbackrollback任務Db類的,那麼你可以這樣做:

script = Db.new 
script.invoke(:rollback) 

你可以閱讀更多的文檔:http://rdoc.info/github/wycats/thor/master/Thor/Base/ClassMethods#start-instance_method

+0

當遷移執行一個錯誤是由DB.new提高。 「未初始化的常量CreateUsers :: Db」。 它似乎試圖在遷移本身中找到Db thor類。 (我更新了我的問題) – ipsum 2010-11-11 14:35:09

+1

確保該類已加載,並確保使用正確的大寫。 'Db'與'DB'不一樣,反之亦然。我的答案是關於如何調用Thor任務的一般情況,而不是您的具體情況,因此請確保您的名稱正確並且要使用的類已加載。 – Theo 2010-11-14 09:59:34