capistrano命令在服务器上运行,但不在本地运行

时间:2012-05-21 03:02:05

标签: ruby-on-rails rake capistrano

运行此capistrano任务时我遇到此错误(我自己的 - cap deploy:show_pointers):

  * executing `deploy:show_pointers'
  * executing "cd /home/mydomain/public_html/site_folders/rails/current; rake app:show_pointers"
    servers: ["mydomain.net"]
    [mydomain.net] executing command
 ** [out :: mydomain.net] (in /home/mydomain/public_html/site_folders/rails/releases/20120521025150)
 ** [out :: mydomain.net] Could not find rake-0.9.2 in any of the sources
 ** [out :: mydomain.net] Try running `bundle install`.
    command finished in 1584ms
failed: "sh -c 'cd /home/mydomain/public_html/site_folders/rails/current; rake app:show_pointers'" on mydomain.net

然而,当我跑

sh -c 'cd /home/mydomain/public_html/site_folders/rails/current; rake app:show_pointers

手动从capistrano登录的同一个目录,它的工作原理。我有capistrano设置为不使用sudo,所以这不应该是问题,但听起来可能是这样,因为上面的命令失败了sudo。我认为这是一个用户问题,或者可能是环境变量问题。或者我不确定是什么。

任何建议。这是一项已经是rake任务的任务,但它将帮助我不必每次运行时都必须登录服务器(大约10个更喜欢它)。

感谢您的任何帮助。

3 个答案:

答案 0 :(得分:3)

  

手动从capistrano登录的同一个目录,它可以工作。

没有说什么,Capistrano创建了一个非登录tty,这意味着你的个人资料,点文件等都没有运行。

ssh root@example.de -t /bin/sh

这是将环境与Capistrano进行比较的更可靠的方法(尽管这甚至比Capistrano使用的功能更加全面。

答案 1 :(得分:0)

鉴于这些错误消息,我有几个想法:

** [out :: mydomain.net] Could not find rake-0.9.2 in any of the sources
** [out :: mydomain.net] Try running `bundle install`.

该应用无法找到rake命令。您是否尝试在远程计算机上运行bundle install作为其推荐?

另一种选择可能是将命令更改为

cd /home/mydomain/public_html/site_folders/rails/current; bundle exec rake app:show_pointers

根据远程服务器上的ruby环境,可能会建议在命令前使用bundle exec

答案 2 :(得分:0)

堆栈溢出上的@dbra指出我需要完整的rake路径。