当我在干运行中运行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。
答案 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
选项并不是特别有用。