OS X Mavericks: рубигемы сломаны (после некоторых ошибок доморощенного и rvm?)

72
6

(Огромный нюанс:. Я очень умный разработчик и полностью осведомлен в командной строке... но я разработчик IOS mechanicry и взаимодействие между OS X встроенного ruby, gem, homebrew -installed ruby, и то, что rvm делает, - это тонкости, которые я только недавно узнал. Тем не менее...)

Я пытаюсь вернуться к базовой операционной системе OS X системы ruby install. Я не хочу использовать rvm, я не хочу использовать homebrew чтобы установить другой ruby... Я просто хочу, чтобы это работало.

Вот что не работает:


% ○ gem help
WARNING: Unknown command /usr/local/bin. Try gem help commands

% ○ gem help commands
WARNING: Unknown command /usr/local/bin. Try gem help commands

В попытке игнорировать весь этот шум и продолжить свой день:


% ○ sudo gem install bundler
ERROR: Could not find a valid gem '/usr/local/bin' (>= 0) in any repository
[time elapses]
Successfully installed bundler-1.7.3
Parsing documentation for bundler-1.7.3
Done installing documentation for bundler after 3 seconds
1 gem installed

Моя конфигурация системы:

    Системный ruby:

% ○ where ruby
/usr/bin/ruby

% ○ ruby --version
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin13]

    Системный gem:

% ○ where gem
/usr/bin/gem

% ○ gem --version
2.0.14

Версия OS X:


% ○ sw_vers
ProductName: Mac OS X
ProductVersion: 10.9.5
BuildVersion: 13F34

Предыдущие вещи, которые я сделал, вероятно, мутировали систему: - Установил ruby через homebrew. Я с тех пор поддерживал это с помощью brew uninstall ruby. - Установлен rvm помощью rvm. Я с тех пор поддерживал это с помощью rvm implode и возвращаю соответствующие изменения в мои .zsh* файлы (которые у меня есть под управлением версиями).

Итак... что здесь происходит? Почему gem говорит о /usr/local/bin/?

Som информация о gem:


% ○ which gem
/usr/bin/gem

% ○ type gem
gem is /usr/bin/gem

% ○ file /usr/bin/gem
/usr/bin/gem: a /System/Library/Frameworks/Ruby script text executable


% ○ cat /usr/bin/gem
#!/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++

require 'rubygems'
require 'rubygems/gem_runner'
require 'rubygems/exceptions'

required_version = Gem::Requirement.new ">= 1.8.7"

unless required_version.satisfied_by? Gem.ruby_version then
abort "Expected Ruby Version #{required_version}, is #{Gem.ruby_version}"
end

args = ARGV.clone

begin
Gem::GemRunner.new.run args
rescue Gem::SystemExitException => e
exit e.exit_code
end

спросил(а) 2014-10-16T02:28:00+04:00 6 лет, 1 месяц назад
1
Решение
92

Я нашел это. Прокопайте целую кучу дерьма в gem, через gem_runner.rb и command_manager.rb в command.rb, где я нашел:


# Adds extra args from ~/.gemrc

def add_extra_args(args)

Что в моем .gemrc? Ну, во- .dotfiles, он не отслеживается в моих git-backed .dotfiles. Два:


% ○ cat ~/.gemrc ---
:bulk_threshold: 1000
:benchmark: false
:sources:
- http://rubygems.org/
- http://gems.github.com
:update_sources: true
gem: /usr/local/bin
:backtrace: false
:verbose: true

Обратите внимание на эту строку: gem: /usr/local/bin. Это была модификация, которую я сделал, когда я получил ruby как часть homebrew.

Теперь это работает так, как ожидалось:


% ○ gem help
RubyGems is a sophisticated package manager for Ruby. This is a
basic help message containing pointers to more information.

Usage:
gem -h/--help
gem -v/--version
[snipped]

ответил(а) 2014-10-16T08:37:00+04:00 6 лет, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема