Capistrano rbenv - Ruby 版本未安装干 运行
Capistrano rbenv - Ruby version not installed witn dry run
当我 运行 Capistrano 任务干 运行 它告诉我找不到 rbenv Ruby 版本。我假设 dry 运行 它应该使用本地环境。但是当我在本地 运行 命令时,我可以很容易地找到下面提到的目录并安装了 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。
检查您的 PATH 并确保它包含 $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 中的最后一个设置
capistrano/rbenv
中肯定有一些错误。我已按如下方式更改了我的 Gemfile,问题已解决。
# gem 'capistrano-rbenv', '2.0.2'
gem 'capistrano-rbenv', '~> 2.1'
I assume with dry run it should use local environment.
这不是真的。
Capistrano dry-run 只是打印出它在实际部署中会 运行 的远程命令,但它确实会执行它们(本地或其他方式)。
由于 Capistrano 没有执行任何命令,任何依赖于这些命令结果的插件可能无法工作。例如,rbenv 插件显然期望 运行 这个命令:
[ ! -d ~/.rbenv/versions/2.4.3 ]
在dry-run场景中,这并没有真正执行。相反,Capistrano 只是打印命令并继续,就好像命令成功一样。
在这种特殊情况下,对于 [ ! -d ~/.rbenv/versions/2.4.3 ]
到 "succeed" 意味着 ~/.rbenv/versions/2.4.3
不存在。 rbenv 插件因此打印错误并停止部署。
总结一下:在实践中,--dry-run
选项并不是特别有用。
当我 运行 Capistrano 任务干 运行 它告诉我找不到 rbenv Ruby 版本。我假设 dry 运行 它应该使用本地环境。但是当我在本地 运行 命令时,我可以很容易地找到下面提到的目录并安装了 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。
检查您的 PATH 并确保它包含 $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 中的最后一个设置
capistrano/rbenv
中肯定有一些错误。我已按如下方式更改了我的 Gemfile,问题已解决。
# gem 'capistrano-rbenv', '2.0.2'
gem 'capistrano-rbenv', '~> 2.1'
I assume with dry run it should use local environment.
这不是真的。
Capistrano dry-run 只是打印出它在实际部署中会 运行 的远程命令,但它确实会执行它们(本地或其他方式)。
由于 Capistrano 没有执行任何命令,任何依赖于这些命令结果的插件可能无法工作。例如,rbenv 插件显然期望 运行 这个命令:
[ ! -d ~/.rbenv/versions/2.4.3 ]
在dry-run场景中,这并没有真正执行。相反,Capistrano 只是打印命令并继续,就好像命令成功一样。
在这种特殊情况下,对于 [ ! -d ~/.rbenv/versions/2.4.3 ]
到 "succeed" 意味着 ~/.rbenv/versions/2.4.3
不存在。 rbenv 插件因此打印错误并停止部署。
总结一下:在实践中,--dry-run
选项并不是特别有用。