Bundler不使用rbenv,找不到[gem]

Uri*_*Uri 41 ruby sinatra bundler rbenv

我刚刚从rvm切换到rbenv,我正在尝试使用bundler进行gem管理.运行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.
Run Code Online (Sandbox Code Playgroud)

bundle install再次跑步没有效果.还尝试bundle update了另一个问题回复的建议.

这是我的Gemfile:

source "http://rubygems.org"

gem "sinatra"
gem "haml"
Run Code Online (Sandbox Code Playgroud)

这就是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)
Run Code Online (Sandbox Code Playgroud)

这是我的应用程序所需要的:

require "rubygems"
require "bundler/setup"
require 'sinatra'
Run Code Online (Sandbox Code Playgroud)

我敢说这是一种路径问题,其中bundler和rbenv没有一起玩.我试过通过rbenv的文档查看,但无法找到任何东西.

注意:在另一个sinatra应用程序中,我尝试运行它时会得到以下内容:

Could not find addressable-2.2.7 in any of the sources
Run `bundle install` to install missing gems.
Run Code Online (Sandbox Code Playgroud)

补充信息

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话.虽然我不认为这是一个可行的解决方案.

kwe*_*ous 102

我遇到了同样的问题.一个提示是,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
Run Code Online (Sandbox Code Playgroud)

它工作了!

我认为重要的是,因为我尝试了几次,就是从主目录中删除.gem文件.它似乎妨碍了.

  • 非常感谢!我很确定我的问题是我再次安装Bundler后没有运行`rbenv rehash`.在使用rbenv Ruby时`gem install bundler && rbenv rehash && bundle install`之后,错误消失了! (4认同)
  • 我登录后向你投票.这个问题开始让我发疯.似乎这样做的命令是`gem install --no-ri --no-rdoc bundler`和`rbenv rehash` (4认同)
  • 删除`〜/ .gem`为我做了诀窍.谢谢. (3认同)
  • 你救了我提〜/ .gem,现在捆绑安装效果很好! (2认同)

Ben*_*all 22

你跑了吗?

rbenv rehash
Run Code Online (Sandbox Code Playgroud)

这将为所有ruby二进制文件提供垫片,包括由宝石安装的二进制文件.

  • 为'rbenv rehash` +1.您必须在使用rbenv安装新的ruby后执行此行. (4认同)

小智 20

添加这个

set :default_environment, {
  'PATH' => "$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH"
}
Run Code Online (Sandbox Code Playgroud)

deploy.rb为我工作.

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


Siw*_*申思维 6

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

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

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

    require 'capistrano-rbenv'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在你的Gemfile中:

    gem 'capistrano-rbenv', '1.0.1'
    
    Run Code Online (Sandbox Code Playgroud)
  4. 而已.要调试它是否有效,只需运行:

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