5

(更新:由 zsh 引起的问题,请参阅接受的答案)

很久以前,我按照这个很棒的指南来使用 Rbenv 和捆绑器https://gist.github.com/1384279并且在 Ruby Land 中一切都很好。(我安装正确)

Bundler gem 为当前的 ruby​​ 版本全局安装。每个项目的所有 gem 都是从它们各自的 gemfile 包安装的。

我正在尝试全局安装 Zeus(例如如何全局安装捆绑程序),而不是将其添加到每个项目的 gemfile 中。

joe@computer:~/some_project
> rbenv versions
  1.9.3-p194
* 1.9.3-p327-perf (set by /Users/joe/some_project/.rbenv-version)

joe@computer:~/.rbenv/versions/1.9.3-p327-perf/lib/ruby/gems/1.9.1/gems
> ls -a
.                   method_source-0.7.1 zeus-0.13.1
..                  rake-0.9.2.2
bundler-1.2.0.rc.2  rdoc-3.9.4

我已经成功了,你可以看到 zeus 与捆绑器一起安装在全局范围内......但是:

joe@computer:~/some_project
> rbenv rehash

joe@computer:~/some_project
> zeus init
Users/joe/.rbenv/versions/1.9.3-p327-perf/lib/ruby/gems/1.9.1/gems/bundler-1.2.0.rc.2/lib/bundler/rubygems_integration.rb:147:in `block in replace_gem': zeus is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
from /Users/joe/.rbenv/versions/1.9.3-p327-perf/bin/zeus:22:in `<main>'

据我所知,正在寻找 zeus,就好像它是捆绑安装的,但它不是捆绑安装的,而是全局安装的。

如何让 shell 在捆绑 gem 之前查看全局 gem?

4

2 回答 2

5

如果我做对了,而你和我有同样的问题,而且你也在运行 zsh,那么这个问题是如果你安装了 bundler 插件,oh-my-zsh 会使用 bundler 自动包装一些命令。

见:https ://github.com/robbyrussell/oh-my-zsh/pull/1507

https://github.com/robbyrussell/oh-my-zsh/pull/1138

https://github.com/heroku/heroku/issues/173

编辑:这已在 oh-my-zsh 中修复

于 2012-12-20T05:43:55.020 回答
4

如果您确实对 oh-my-zsh 有此问题,并且无论出于何种原因尚未更新,您可以在 zeus 前面加上反斜杠,例如:

% \zeus start
% \zeus g model Post title content:text
% \zeus rake db:migrate

反斜杠的作用是运行覆盖任何别名的命令。请参阅 Wikipedia 上的此部分http://en.wikipedia.org/wiki/Alias_(command)#Overriding_aliases

于 2013-04-05T10:56:56.040 回答