2010-08-28 55 views
0

我有一個非常簡單的任務稱爲update_feeds:如何使用Capistrano在服務器上執行命令?

desc "Update feeds" 
task :update_feeds do 
    run "cd #{release_path}" 
    run "script/console production" 
    run "FeedEntry.update_all" 
end 

每當我試着運行這個任務,我得到以下信息:

[out :: mysite.com] sh: script/console: No such file or directory 

我想這是因爲我在正確的目錄是不,但試圖

run "cd ~/user/mysite.com/current" 

代替

run "cd #{release_path}" 

也失敗。手動運行完全相同的命令(通過ssh)完美地工作。 爲什麼不能正確地將capistrano cd(更改目錄)放到站點目錄下來運行命令?

謝謝!


更新:選擇了一個答案,非常感謝你對所有誰回答。 最好的答案實際上可能是one on server fault,儘管兩者的要點(服務器故障和堆棧溢出故障)都是相同的。

回答

1

你想使用腳本/跑步者。它啓動應用程序的一個實例來執行你想調用的方法。它的速度很慢,因爲它必須加載所有的rails應用程序。

~/user/mysite.com/current/script/runner -e production FeedEntry.update_all 2>&1 

你可以從capistrano任務運行。

1

我無法想象您能夠從capistrano遠程登錄到rails控制檯。我建議你從rake任務中調用你的模型方法。

How do I run a rake task from Capistrano?

至於你的問題的後半部分,你登錄到使用相同的用戶帳戶Capistrano的服務器?

相關問題