如何使用Capistrano在服务器上执行命令?
问题描述:
我有一个非常简单的任务称为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,尽管两者的要点(服务器故障和堆栈溢出故障)都是相同的。
答
你想使用脚本/跑步者。它启动应用程序的一个实例来执行你想调用的方法。它的速度很慢,因为它必须加载所有的rails应用程序。
~/user/mysite.com/current/script/runner -e production FeedEntry.update_all 2>&1
你可以从capistrano任务运行。
答
我无法想象您能够从capistrano远程登录到rails控制台。我建议你从rake任务中调用你的模型方法。
How do I run a rake task from Capistrano?
至于你的问题的后半部分,你登录到使用相同的用户帐户Capistrano的服务器?