Bundle 不能与 rbenv 一起工作并且不能 gem 安装 bundler
Bundle not working with rbenv and cannot gem install bundler
我在使用 rbenv 时 运行遇到了捆绑程序的问题。不久前我从 ruby 2.3.1 切换到 2.5.1,但是当我尝试在 ansible 任务中的 shell 脚本中 运行 捆绑器时,我注意到以下错误。
```
rbenv:捆绑:找不到命令
The `bundle' command exists in these Ruby versions:
2.2.2
2.3.1
```
我看到了一些解决方案,您必须在特定 ruby 版本上安装捆绑程序。但是,即使卸载捆绑器并重新安装也无法解决问题。似乎由于某些 gem 问题,我无法在特定 ruby 版本上安装捆绑器,因此重新安装捆绑器对我没有任何帮助。
但是我确实找到了一个非常手动的解决方案。
我注意到 rbenv whence bundle
如何指定该捆绑包在某些 ruby 版本中处于活动状态,但在其他版本中则不是。我追踪 the portion of rbenv whence command to find out where it was looking 并看到它在以下路径下查找安装在 rbenv 下的每个 ruby 版本:~/.rbenv/versions/$VERSION/bin/
如果您在没有捆绑器的情况下查看 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 或虚拟机来练习脚本。
如果您的项目确实需要 rbenv,请使用 ansible rbenv 库来处理它,但是 运行在您的主机上使用它是一种危险的开发方式,因为它不容易逆向。
希望对您有所帮助!
我在使用 rbenv 时 运行遇到了捆绑程序的问题。不久前我从 ruby 2.3.1 切换到 2.5.1,但是当我尝试在 ansible 任务中的 shell 脚本中 运行 捆绑器时,我注意到以下错误。
``` rbenv:捆绑:找不到命令
The `bundle' command exists in these Ruby versions:
2.2.2
2.3.1
```
我看到了一些解决方案,您必须在特定 ruby 版本上安装捆绑程序。但是,即使卸载捆绑器并重新安装也无法解决问题。似乎由于某些 gem 问题,我无法在特定 ruby 版本上安装捆绑器,因此重新安装捆绑器对我没有任何帮助。
但是我确实找到了一个非常手动的解决方案。
我注意到 rbenv whence bundle
如何指定该捆绑包在某些 ruby 版本中处于活动状态,但在其他版本中则不是。我追踪 the portion of rbenv whence command to find out where it was looking 并看到它在以下路径下查找安装在 rbenv 下的每个 ruby 版本:~/.rbenv/versions/$VERSION/bin/
如果您在没有捆绑器的情况下查看 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 或虚拟机来练习脚本。
如果您的项目确实需要 rbenv,请使用 ansible rbenv 库来处理它,但是 运行在您的主机上使用它是一种危险的开发方式,因为它不容易逆向。
希望对您有所帮助!