据我了解,Capistrano 所做的只是 ssh 进入服务器并执行我们希望它执行的命令(大部分)。
我在过去的几个项目中使用了 rvm,并且必须安装 rvm-capistrano gem。否则,即使我们在存储库中有一个正确的 .rvmrc 文件(具有正确的 ruby 和正确的 gemset),它也无法找到可执行文件(或者我记得)。
同样,今天我正在为我正在使用 pythonbrew 的项目设置部署,并且一个简单的“cd #{deploy_to}/current && pythonbrew venv use myenv && gunicorn_django -c gunicorn.py”给了我一条错误消息,说“找不到可执行的 gunicorn_django”。我想这是因为 virtualenv 没有正确激活。但是我们在做“pythonbrew venv use myenv”的时候不是激活了环境吗?如果我 ssh 进入服务器并在 shell 上执行它,完整的命令可以正常工作,但是当我通过 Capistrano 执行它时它不会。
我的问题是 - 为什么 Capistrano 需要修改才能与 rvm 和 pythonbrew 等程序一起使用,即使它所做的只是通过 ssh 执行几个命令?