Bundler不能和rbenv一起工作,找不到

我刚刚从rvm切换到rbenv ,我试图使用打包器进行gempipe理。 运行bundle install并尝试运行一个简单的sinatra应用程序( ruby app.rb )后,我得到这个:

 Could not find haml-3.1.4 in any of the sources Run `bundle install` to install missing gems. 

再次运行bundle install不起作用。 也尝试了另一个问题的回应build议bundle update

这是我的Gemfile:

 source "http://rubygems.org" gem "sinatra" gem "haml" 

这是bundle show产生的

 * bundler (1.0.22) * haml (3.1.4) * rack (1.4.1) * rack-protection (1.2.0) * sinatra (1.3.2) * tilt (1.3.3) 

这是我的应用程序需要:

 require "rubygems" require "bundler/setup" require 'sinatra' 

我相信这是bundler和rbenv不玩的path问题。 我已经试过通过rbenv的文档,但无法find任何东西。

注意:在一个不同的sinatra应用程序,我试图运行它时得到以下内容:

 Could not find addressable-2.2.7 in any of the sources Run `bundle install` to install missing gems. 

补充信息

echo $PATH
/Users/uri/.rbenv/shims:/Users/uri/.rbenv/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

which bundle
/Users/uri/.rbenv/shims/bundle

更新

如果我bundle install --system它的作品。 虽然我不认为这是一个可行的解决scheme。

我有同样的问题。 一个提示是rbenv exec bundle exec command工作,而且rbenv exec bundle install --path vendor/bundle工作,但是没有任何前缀等价物失败。

我擦了~/.rbenv~/.gem Gemfile.lockvendor/bundle ,试图重新开始。 一旦这些被清除,我尝试了以下:

 rbenv install 1.9.3-p194 rbenv rehash # for paranoia's sake rbenv global 1.9.3-p194 gem env # to check that everything was pointing at 1.9 and not the system gem install --no-ri --no-rdoc bundler rbenv rehash # necessary to load up the bundle executable bundle --path=vendor/bundle 

它的工作!

我认为重要的一点,因为我试了几次,是从您的主目录中删除.gem文件。 它似乎阻碍了。

你跑了吗?

 rbenv rehash 

这将为所有的ruby二进制文件提供补偿,包括由gem安装的二进制文件。

添加这个

 set :default_environment, { 'PATH' => "$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH" } 

部署.rb为我工作。

http://henriksjokvist.net/archive/2012/2/deploying-with-rbenv-and-capistrano/

我build议你使用gem'capistrano-rbenv'( https://github.com/yyuu/capistrano-rbenv

  1. 确保在远程服务器上安装了“rbenv”和ruby版本(例如1.9.3)

  2. 在你的config / deploy.rb(capistrano文件)

     require 'capistrano-rbenv' 
  3. 在你的Gemfile中:

     gem 'capistrano-rbenv', '1.0.1' 
  4. 而已。 debugging,如果它的工作,只需运行:

     $ cap shell cap> which ruby ** [out :: 10.103.13.74] /root/.rbenv/shims/ruby cap> ruby -v ** [out :: 10.103.13.74] ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux] 

你应该尝试使用chruby 。 chruby是RVM / rbenv的一个超小型(〜80行)替代品。 与rbenv不同,chruby不依赖垫片,只是修改PATHGEM_HOMEGEM_PATH

从rvm切换到rbenv时,我遇到了类似的问题。 我发现我的打包机显示了一个不同的gem列表,而不是我的gem list命令。 首先检查你的bundler和gem正在使用哪个path。 对于打包机使用show命令并select任何gem。

 $ bundle show ffi /my/project/path/vendor/ruby/1.9.1/gems/ffi-1.1.5 

和我的gem environment命令(部分)

 $ gem environment RubyGems Environment: - RUBYGEMS VERSION: 1.8.23 - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin10.8.0] - INSTALLATION DIRECTORY: /Users/rolf/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1 

在这里,我可以看到我的gem指向正确的rbenvpath,但我的打包程序指向我的项目的供应商path。

运行以下命令应修复bundlerpath问题:

 $ bundle install --system 

Bundlerpath现在应该指向rbenvpath。

 $ bundle show ffi /Users/rolf/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/ffi-1.1.5 

另外我发现,当我运行rvm implode命令来卸载rvm时,仍然有以下文件,我需要更改以删除rvmpath:

 ~/.profile ~/.bashrc ~/.zshrc 

如果~/.rvmpath仍然存在,则需要将其删除。

您将需要在更改这些文件后打开一个新的terminal会话。 终于毕竟,我终于得到了我的捆绑器和gem同步。

只是提醒一下,rbenv与rvm 兼容,它们不能很好地播放。 为了您的理智,如果您想使用rbenv,请卸载rvm。 从rbenv自述:

兼容性说明:rbenv与rvm不兼容。 事情似乎工作,直到你尝试安装一个gem。 问题是rvm实际上用shell函数覆盖了gem命令! 在使用rbenv之前,请删除对rvm的任何引用。

幸运的是,Wayne(rvm creator)提供了一个删除rvm的方法:

rvm implode

作为常规使用或:

rvmsudo rvm implode

清理rvm系统。

我在这里尝试了所有的东西,但是对于我来说,发现我的用户主目录中有一个.bundler出于某种原因。 这导致了上面奇怪的问题,其中'which'命令在垫片path中正确列出了捆绑包,但是检查捆绑包-v显示了旧的系统版本,而/Users/jerimiah/.rbenv/shims/bundle显示了最新版本。 我在我的主目录中删除.bundler,重新设置,重新启动我的terminal,一切开始工作。

试试这个rbenv插件,它会让垫片意识到bundler的path

https://github.com/carsomyr/rbenv-bundler