Предполагается, что вы используете Homebrew Ruby ...
Исполняемый файл irb
расположен по адресу:
/usr/local/opt/ruby/lib/ruby/gems/2.6.0/gems/irb-1.0.0/exe/irb
Вы можете использовать эту строку напрямую, вставив ее в свой $PATH
, alias
это или что-то еще.
В качестве альтернативы, вы можете исправить /usr/local/opt/ruby/bin/irb
вокруг строки 22.
# patch
class Gem::BasicSpecification
def self.default_specifications_dir
File.join(Gem.private_dir, "specifications", "default")
end
end
# /patch
# Next line looks like this. Don't change this.
# if Gem.respond_to?(:activate_bin_path)
Вы можете сделать то же самое в /usr/local/opt/ruby/bin/ri
и/usr/local/opt/ruby/bin/rdoc
для исправления этих команд.
Почему?
См. https://github.com/Homebrew/homebrew-core/blob/955497722b9bf65069957b0e7c903b96939cdd99/Formula/ruby.rb#L112
В формуле Homebrew Ruby предполагается, что все гемы будут установлены в "глобальном каталоге гемов"."/usr/local/lib/ruby/gems/2.6.0/
.Поэтому, когда вы удаляете и переустанавливаете Homebrew Ruby, гемы остаются на месте - вам также не нужно их переустанавливать (что раздражает, поскольку у меня установлены гемы для версий Ruby, которые я даже не устанавливал, но это другая проблема).
Но драгоценные камни Руби по умолчанию не включены в глобальный каталог драгоценных камней.Они находятся внутри установочной директории Ruby (то, что в формуле Homebrew называется private_dir
): /usr/local/opt/ruby/lib/ruby/gems/2.6.0/
.
Так что Homebrew Ruby не может их найти.
Homebrew исправляет Rubygems , поэтому этот фрагмент исправляет Rubygems снова, но глубже.Вы также можете сделать патч-патч следующим образом:
module Gem
def self.default_dir
private_dir
end
end
Но default_dir
используется в других местах , и я не хотел ничего ломать.