'bundle exec'抱怨gem没有被安装,即使在'bundle install'之后

Xio*_*iov 7 ruby gem bundler

我有一个使用Jekyll和Github Pages的网站.之前在另一台计算机上搞乱了版本和RVM之后,在这个上我选择使用捆绑器只使用一个版本的Ruby和每个项目环境.

我有一个非常简单的Gemfile:

[$]> cat Gemfile
source 'https://rubygems.org'
gem 'github-pages'
Run Code Online (Sandbox Code Playgroud)

和bundler配置:

[$]> cat .bundle/config
---
BUNDLE_PATH: env
BUNDLE_DISABLE_SHARED_GEMS: '1'
Run Code Online (Sandbox Code Playgroud)

当我运行任何命令(jekyll,gem,irb)时bundle exec,我得到一个依赖性错误:

[$]> bundle exec jekyll
Could not find RedCloth-4.2.9 in any of the sources
Run `bundle install` to install missing gems.
Run Code Online (Sandbox Code Playgroud)

但是,该软件包已经安装:

[$]> 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
Run Code Online (Sandbox Code Playgroud)

关于Bundler如何在使用一个子命令时认为安装了gem,我有点不知所措,但认为在使用另一个子命令时它们会丢失.

[$]> 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
Run Code Online (Sandbox Code Playgroud)

Xio*_*iov 5

删除env目录并重新安装后,我注意到它创建了两个Ruby版本的子目录 - 2.1.0和2.2.0.后者是我当前的Ruby版本,但目录是空的(所有的gem都安装在env/ruby/2.1.0/gems目录中).结合Oliver关于rbenv的回答,让我想到了不匹配的版本.

我重新安装了一个简单的捆绑器gem install bundler,reran bundle install,一切都很好.

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