我通过安装的 gemsudo gem install ...
无法执行(我得到一个command not found
)。它们似乎安装在/usr/local/Cellar/
Brew 的安装目录中(此外,其中的 gem/Library/Ruby/
也不起作用)。为了使 gems 可执行,我还需要做些什么吗?我在 Mac OS X 10.6 和 Ruby v1.8 上使用 ZSH 作为 Brew 中的一个。
编辑:它现在似乎正在工作。我刚出去玩了几个小时,又回来再试一次。
家酿不错。但是与brew
and不同npm
,gem
它不会/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/ruby
到PATH
与以下内容相同:
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:
我没有用过这些,但它们可能对你有用。
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
我喜欢家酿。可能有更好的方法来做到这一点,但如果你运行:
gem environment
这将打印出所有相关路径的漂亮列表。寻找标有EXECUTABLE DIRECTORY
. 那就是您要添加到路径中的那个。在我的情况下,/usr/local/Cellar/ruby/1.9.3-p362/bin/ruby
但我想它会随着 Ruby 的更新版本而改变。
我正在使用/bin/bash
它作为我的外壳,但是将它添加到您的路径的过程应该几乎是名称。
我使用 TextWrangler(通过命令行工具)来编辑我的.profile
文件。为此,它只是:
edit ~/.profile
完成后,关闭终端并打开一个新终端,或运行:
source ~/.profile
您也可以使用 homebrew 安装的 ruby。您只是缺少使用 homebrew 的自定义 gemset 的功能。
首先做:
sudo nano /etc/paths
这将打开纳米编辑器,
然后将以下内容添加到路径中:
/usr/local/Cellar/ruby/1.9.3-p194/bin
您的 ruby 版本可能会有所不同。
而已。它现在应该检测到您的宝石。
哦,顺便说一句,您需要 Ctrl+X > y > ENTER 以将文件保存在 nano 中。
使用 Timo's answer中的信息,我得到了这个:
PATH=/usr/local/opt/ruby/bin:$PATH
GEMSDIR=$(gem environment gemdir)/bin
PATH=$GEMSDIR:$PATH
export PATH
适用于 Homebrew,适用于单独的 gems 目录,并且不对 Ruby 版本进行硬编码。
而不是使用 =>$(cd $(which gem)/..; pwd)
你可以改用这个=>$(brew --prefix ruby)/bin
我认为这有点发展。
只需添加
export PATH=/usr/local/opt/ruby/bin:$PATH
到您的 .bashrc(或 .bash_profile、.zshrc/.bashrc、.. – 无论您使用什么)。
如果您对红宝石本身有疑问
brew unlink ruby
brew link ruby