【问题标题】:How to execute a command on the server with Capistrano?如何使用 Capistrano 在服务器上执行命令?
【发布时间】:2011-04-05 05:52:16
【问题描述】:

我有一个名为 update_feeds 的非常简单的任务:

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,尽管两者的要点(服务器故障和堆栈溢出)是相同的。

【问题讨论】:

    标签: ruby-on-rails deployment ssh capistrano


    【解决方案1】:

    您想使用脚本/运行器。它启动应用程序的一个实例来执行您要调用的方法。虽然它很慢,因为它必须加载所有的 Rails 应用程序。

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

    您可以从 capistrano 任务中运行它。

    【讨论】:

      【解决方案2】:

      我无法想象您能够从 capistrano 远程登录到 rails 控制台。我建议您从 rake 任务中调用模型方法。

      How do I run a rake task from Capistrano?

      至于您问题的后半部分,您是否使用与 capistrano 相同的用户帐户登录服务器?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-24
        • 1970-01-01
        相关资源
        最近更新 更多