Ruby Bundle不能与rbenv一起使用,无法安装gem bundler

Ruby Bundle不能与rbenv一起使用,无法安装gem bundler,ruby,rubygems,bundler,rbenv,Ruby,Rubygems,Bundler,Rbenv,在使用rbenv时,我遇到了bundler的问题。不久前,我从ruby 2.3.1切换到了2.5.1,但在ansible任务中尝试在shell脚本中运行bundler时,我注意到了以下错误 ``` rbenv:bundle:未找到命令 The `bundle' command exists in these Ruby versions: 2.2.2 2.3.1 ``` 我看到了一些解决方案,在特定的ruby版本上必须安装bundler。然而,即使卸载并重新安装bundler也不能解决这

在使用rbenv时,我遇到了bundler的问题。不久前,我从ruby 2.3.1切换到了2.5.1,但在ansible任务中尝试在shell脚本中运行bundler时,我注意到了以下错误

``` rbenv:bundle:未找到命令

The `bundle' command exists in these Ruby versions:
  2.2.2
  2.3.1
```


我看到了一些解决方案,在特定的ruby版本上必须安装bundler。然而,即使卸载并重新安装bundler也不能解决这个问题。似乎是由于一些gem问题,我无法在特定的ruby版本上安装bundler,因此重新安装bundler对我没有任何帮助。

然而,我确实找到了一个非常手动的解决方案

我注意到,
rbenv whence bundle
如何指定bundle在某些ruby版本中是活动的,但在其他版本中不是。我追踪并发现它在以下路径下查找了在rbenv下安装的每个ruby版本:
~/.rbenv/versions/$version/bin/

如果您在没有bundler的gem路径下查找(对我来说,这是~/.rbenv/versions/2.5.1/bin/),您会注意到它不在那里。但是,在可以识别的其他版本下,您将看到可执行文件在那里(对我来说,它在
~/.rbenv/versions/2.3.1/bin/bundle
~/.rbenv/versions/2.3.1/bin/bundle
下)


因此,我将可执行文件从正常工作的ruby版本复制到已损坏的版本。然后在文件的顶部,您会注意到sha bang被设置为另一个ruby版本(对我来说这是
#!/Users/myuser/.rbenv/versions/2.3.1/bin/ruby
)。将版本路径更改为您想要修复的ruby版本,然后它将神奇地开始工作。

我强烈建议您在没有rbenv的环境中运行ansible脚本。换句话说,最好使用vagrant或VM在中练习脚本

如果您的项目确实需要rbenv,请使用ansible rbenv库来使用它,但是在主机上运行它是一种危险的开发方式,因为它不容易恢复


希望这有帮助

移除rbenv和所有已安装的红宝石,然后从头开始重新安装,这总是安全的。类似这样的奇怪问题通常可以通过干净的安装来解决。我建议其他人不要这样做,只运行gem安装包或找到其他解决方案