Capistrano rbenv - Ruby版本没有安装和干运行

时间:2018-03-15 02:32:29

标签: ruby-on-rails capistrano rbenv

当我在干运行中运行Capistrano任务时,它告诉我无法找到rbenv Ruby版本。我认为干运行应该使用当地环境。但是当我在本地运行命令时,我可以很容易地找到下面提到的目录并安装了Ruby。

> ./bin/bundle exec cap --dry-run development t

DEBUG [8171d925] Running [ ! -d ~/.rbenv/versions/2.4.3 ] as user@dev
DEBUG [8171d925] Command: [ ! -d ~/.rbenv/versions/2.4.3 ]
ERROR rbenv: 2.4.3 is not installed or not found in ~/.rbenv/versions/2.4.3

> ls ~/.rbenv/versions/2.4.3
bin include lib share

> rbenv global
2.4.3

> ruby -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-darwin16]

> bundle info capistrano
* capistrano (3.4.0)

我的Capfile包含以下行。

require 'capistrano/rbenv'
set :rbenv_type, :user
set :rbenv_ruby, '2.4.3'

我正在使用Mac OS并使用自制软件安装rbenv。

3 个答案:

答案 0 :(得分:0)

检查您的路径并确保其中包含$HOME/.rbenv/shims$HOME/.rbenv/bin

要查看您的路径,请执行以下操作:

$ echo $PATH

同时检查〜/ .bash_profile

中是否包含以下内容
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

要检查bash配置文件,请在终端输入:

touch ~/.bash_profile; open ~/.bash_profile

确保它是〜/ .bash_profile

中的最后一个设置

答案 1 :(得分:0)

+ num2 - 1中肯定存在一些错误。我已经更改了我的Gemfile,问题解决了。

capistrano/rbenv

答案 2 :(得分:0)

  

我认为干运行应该使用当地环境。

事实并非如此。

Capistrano干运行只是打印出它将在实际部署中运行的远程命令,但它确实执行它们(本地或其他)。

由于Capistrano未执行任何命令,因此任何依赖这些命令结果的插件都可能无效。例如,rbenv插件显然希望运行此命令:

[ ! -d ~/.rbenv/versions/2.4.3 ]

在干运行场景中,实际上并未执行此操作。相反,Capistrano只是打印命令并继续,就像命令成功一样。

在这种特殊情况下,[ ! -d ~/.rbenv/versions/2.4.3 ]到"成功"表示~/.rbenv/versions/2.4.3不存在。因此,rbenv插件会输出错误并停止部署。

总结一下:在实践中,--dry-run选项并不是特别有用。