为什么Capistrano需要修改才能使用像pythonbrew这样的东西?

时间:2013-01-16 16:15:57

标签: deployment ssh capistrano fabric

据我所知,Capistrano所做的就是ssh进入服务器并执行我们想要的命令(主要是)。

我在过去几个项目中使用过rvm,并且必须安装rvm-capistrano gem。否则,它无法找到可执行文件(或者我记得),即使我们在存储库中有一个正确的.rvmrc文件(带有正确的ruby和正确的gemset)。

同样,今天我正在为我正在使用pythonbrew的项目设置部署,而一个简单的“cd#{deploy_to} / current&& pythonbrew venv使用myenv&& gunicorn_django -c gunicorn。 py“给了我一条错误消息,说”找不到可执行文件gunicorn_django“。我想这是因为virtualenv没有正确激活。但是当我们做“pythonbrew venv使用myenv”时,我们没有激活环境吗?如果我ssh到服务器并在shell上执行它,完整的命令工作正常,但是当我通过Capistrano执行时它不会。

我的问题是 - 为什么Capistrano需要修改以及像rvm和pythonbrew这样的程序,尽管它所做的只是在ssh上执行几个命令?

1 个答案:

答案 0 :(得分:1)

那是因为他们的ssh'ing并没有激活你的shell的环境。所以它没有拿起启用魔术的源语句。只是做一个rvm使用...在运行命令之前,而不是假设cd会自动选择它。应该没事的。如果您一直在使用fabric,那么可以使用env()上下文管理器来确保在每个命令之前运行。