2009-12-22 32 views
3

我開始使用新的部署弗拉德,我想知道什麼是設置它,這樣我就可以使用相同的任務來爲地方發展和遠程生產服務器的最佳方式?弗拉德的部署 - 使用模式?

我想過把所有東西都定義爲遠程任務,然後用dev/prod方法來設置域變量,然後我可以調用rake dev/prod vlad:do_something,但這只是感覺完全錯誤。

我的許多任務是我的本地服務器上,我的生產服務器上運行有用,我想,以避免有一個「任務」爲本地,一個是「remote_task」遠程重複自己。例如

def do_something 
    run "echo something" 
end 

task :do_something_dev 
    do_something 
end 

remote_task do_something_prod 
    do_something 
end 

我是否錯過了一些東西,或者這些確實是在本地和遠程機器上使用相同rake任務的唯一選擇?

+1

我喜歡這個標籤:) – 2012-01-05 02:54:05

回答

5

如何:

[:development, :test, :production].each do |environment| 
    namespace environment do 
    task :do_something do 
     echo "do something on #{environment}" 
    end 
    end 
end 

這會給你:

  • rake vlad:development:do_something
  • rake vlad:test:do_something
  • rake vlad:production:do_something

只需一個甲基OD它可能是更簡潔,以做你的方式。但只要你有2種或三種方法,開銷可以忽略不計。