"Bundle Exec"抱怨Gem未安装,即使在"捆绑安装"之后[英] 'bundle exec' complains about gem not being installed, even after 'bundle install'

本文是小编为大家收集整理的关于"Bundle Exec"抱怨Gem未安装,即使在"捆绑安装"之后的处理方法,想解了"Bundle Exec"抱怨Gem未安装,即使在"捆绑安装"之后的问题怎么解决?"Bundle Exec"抱怨Gem未安装,即使在"捆绑安装"之后问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个网站使用 jekyll与github pages .在此前在另一台计算机上使用版本和RVM搞乱了,请在此,我选择使用Bundler的一个版本的Ruby和Per-Project环境.

我有一个非常简单的Gemfile:

[$]> cat Gemfile
source 'https://rubygems.org'
gem 'github-pages'

和bundler配置:

[$]> cat .bundle/config
---
BUNDLE_PATH: env
BUNDLE_DISABLE_SHARED_GEMS: '1'

当我通过bundle exec运行任何命令(Jekyll,Gem,IRB)时,我得到依赖性错误:

[$]> bundle exec jekyll
Could not find RedCloth-4.2.9 in any of the sources
Run `bundle install` to install missing gems.
但是,已安装捆绑包:

[$]> bundle install
Using RedCloth 4.2.9
Using i18n 0.6.11
Using json 1.8.1
[snip]
Using github-pages 29
Using bundler 1.7.7
Your bundle is complete!
It was installed into ./env

我在使用一个子命令时如何思考Bundler如何思考宝石,但在使用另一个子命令时缺少它们​​.

[$]> which ruby
/usr/local/bin/ruby
[$]> which bundler
/usr/local/bin/bundler
[$]> ruby --version
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
[$]> bundler --version
Bundler version 1.7.7

推荐答案

删除env目录并重新安装后,我注意到它为两个Ruby版本 - 2.1.0和2.2.0创建了子目录.后者是我当前的Ruby版本,但目录为空(所有GEMS都安装到env/ruby/2.1.0/gems目录中).这与Oliver对RBenv的答案相结合,让我考虑了不匹配的版本.

我用简单的gem install bundler重新安装捆绑程序,重新划分为reran bundle install,一切都很好.

似乎一般答案是用Bundler安装出不同版本的Ruby来解决与您实际使用的问题的问题.对我来说似乎很奇怪,它会为bundle install使用一件事,另一件事是bundle exec,但*耸肩*无论如何.

其他推荐答案

在安装rbenv作为我的Ruby Manager后,我有完全相同的问题.最后我解决了问题:

rbenv rehash

(此外,您可能需要重新启动终端,按@ joel-glovier的注释)

事实上它抱怨redcloth 4.2.9实际上是一个红鲱鱼. Bundler可能找不到任何宝石,但是RedCloth是它所寻找的第一个,所以它与那个错误一起退出.

基本上我安装了rbenv和ruby 2.2.2并将其与rbenv global 2.2.2更改为该版本,但我忘记运行rbenv rehash.所以我猜在运行bundle install它看着我以前使用的ruby(system ruby​​)看看了安装的宝石,但是在运行bundle exec jekyll serve时,它正在查看我的新Ruby版本而不是找到任何一个宝石.

其他推荐答案

我必须打开./.bundle/config并设置 BUNDLE_DISABLE_SHARED_GEMS至true为捆绑宝石被正确储存.

本文地址:https://www.itbaoku.cn/post/786608.html