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.lock
和vendor/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 )
-
确保在远程服务器上安装了“rbenv”和ruby版本(例如1.9.3)
-
在你的config / deploy.rb(capistrano文件)
require 'capistrano-rbenv'
-
在你的Gemfile中:
gem 'capistrano-rbenv', '1.0.1'
-
而已。 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不依赖垫片,只是修改PATH
, GEM_HOME
和GEM_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
如果~/.rvm
path仍然存在,则需要将其删除。
您将需要在更改这些文件后打开一个新的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