41

我通过安装的 gemsudo gem install ...无法执行(我得到一个command not found)。它们似乎安装在/usr/local/Cellar/Brew 的安装目录中(此外,其中的 gem/Library/Ruby/也不起作用)。为了使 gems 可执行,我还需要做些什么吗?我在 Mac OS X 10.6 和 Ruby v1.8 上使用 ZSH 作为 Brew 中的一个。

编辑:它现在似乎正在工作。我刚出去玩了几个小时,又回来再试一次。

4

7 回答 7

153

家酿不错。但是与brewand不同npmgem它不会/usr/local/bin自动生成别名。

解决方案

我采用了一种非常简单的方法(截至 2020 年 3 月):

# Based on "`brew --prefix ruby`/bin"
export PATH=/usr/local/opt/ruby/bin:$PATH
# Based on "`gem environment gemdir`/bin"
export PATH=/usr/local/lib/ruby/gems/3.0.0/bin:$PATH

将此添加到您的.bashrc(或.bash_profile.zshrc等)。

而已!现在所有 Ruby bins 和已安装的 gem 都可以从你的 shell 中使用了!

在旧版本的 Homebrew 中(2017 年之前),Ruby 2 有一个单独的包,名为ruby20,您可以使用以下代码段代替:

export PATH=/usr/local/opt/ruby20/bin:$PATH

这条线路是当时唯一需要的线路。但是,在 Ruby 2.1 中,gems 被移到了一个单独的目录中。不再位于 之下/usr/local/opt/ruby/bin,而是位于 /usr/local/lib/ruby/gems/2.0.0/bin(其中“2.0.0”是 Gem 的最后一个主要 Ruby 版本)。

这个怎么运作

Homebrew 会跟踪它安装软件包的位置,并为您维护指向那里的符号链接。

$ brew --prefix ruby
/usr/local/opt/ruby

$ l /usr/local/opt/ruby
/usr/local/opt/ruby@ -> ../Cellar/ruby/2.5.3_1

实际上,添加/usr/local/opt/rubyPATH与以下内容相同:

export PATH=/usr/local/Cellar/ruby/2.5.3_1/bin:$PATH

除了,这个长版本对当前安装的 Ruby 版本进行硬编码,并且会在您下次升级 Ruby 时停止工作。

至于 Gem,下面的命令会告诉你 Gem 添加新包的确切目录:

$ gem environment gemdir
/usr/local/lib/ruby/gems/2.7.0

工具

这些工具旨在自动连接 Homebrew 和 Gem:

我没有用过这些,但它们可能对你有用。

于 2013-01-03T11:57:55.023 回答
21

brew unlink ruby; brew link ruby可能会添加符号链接/usr/local/bin/

$ which sass
$ brew unlink ruby; brew link ruby
Unlinking /usr/local/Cellar/ruby/2.0.0-p0... 20 links removed
Linking /usr/local/Cellar/ruby/2.0.0-p0... 31 symlinks created
$ which sass
/usr/local/bin/sass

brew --prefix ruby仍然很慢,但您也可以添加/usr/local/opt/ruby/bin到路径中。

$ time brew --prefix ruby
/usr/local/opt/ruby
0.216
$ time brew --prefix ruby
/usr/local/opt/ruby
0.076
$ stat -f%Y /usr/local/opt/ruby
../Cellar/ruby/2.0.0-p0
于 2013-05-27T05:34:51.053 回答
7

我喜欢家酿。可能有更好的方法来做到这一点,但如果你运行:

gem environment

这将打印出所有相关路径的漂亮列表。寻找标有EXECUTABLE DIRECTORY. 那就是您要添加到路径中的那个。在我的情况下,/usr/local/Cellar/ruby/1.9.3-p362/bin/ruby但我想它会随着 Ruby 的更新版本而改变。

我正在使用/bin/bash它作为我的外壳,但是将它添加到您的路径的过程应该几乎是名称。

我使用 TextWrangler(通过命令行工具)来编辑我的.profile文件。为此,它只是:

edit ~/.profile

完成后,关闭终端并打开一个新终端,或运行:

source ~/.profile
于 2013-01-03T05:37:05.707 回答
5

您也可以使用 homebrew 安装的 ruby​​。您只是缺少使用 homebrew 的自定义 gemset 的功能。

首先做:

sudo nano /etc/paths

这将打开纳米编辑器,

然后将以下内容添加到路径中:

/usr/local/Cellar/ruby/1.9.3-p194/bin

您的 ruby​​ 版本可能会有所不同。

而已。它现在应该检测到您的宝石。

哦,顺便说一句,您需要 Ctrl+X > y > ENTER 以将文件保存在 nano 中。

于 2012-07-18T18:02:11.113 回答
5

使用 Timo's answer中的信息,我得到了这个:

PATH=/usr/local/opt/ruby/bin:$PATH
GEMSDIR=$(gem environment gemdir)/bin
PATH=$GEMSDIR:$PATH
export PATH

适用于 Homebrew,适用于单独的 gems 目录,并且不对 Ruby 版本进行硬编码。

于 2020-07-01T10:28:53.283 回答
4

而不是使用 =>$(cd $(which gem)/..; pwd)

你可以改用这个=>$(brew --prefix ruby)/bin

于 2013-02-24T22:28:30.173 回答
2

我认为这有点发展。

只需添加

export PATH=/usr/local/opt/ruby/bin:$PATH

到您的 .bashrc(或 .bash_profile、.zshrc/.bashrc、.. – 无论您使用什么)。

如果您对红宝石本身有疑问

brew unlink ruby
brew link ruby
于 2013-05-30T09:42:18.800 回答