Как установить правильную версию Ruby в среде gem

Примечание: этот вопрос относится к тому, как заставить упаковщик использовать версию Ruby, установленную chruby и.ruby-version?,

С помощью chruby У меня Ruby 1.8.7 установлен на macOS:

$ ruby -v
ruby 1.8.7 (2013-06-27 patchlevel 374) [i686-darwin17.4.0]

Также я использовал gem update --system 1.8.30 установить конкретную версию RubyGems, которая, я надеюсь, совместима. Это будет установлено правильно:

$ gem --version
1.8.30

Однако в моей среде RubyGems показана неверная версия Ruby (2.5.0):

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.30
  - RUBY VERSION: 2.5.0 (2017-12-25 patchlevel 0) [x86_64-darwin17]
  - INSTALLATION DIRECTORY: /Users/keithpitty/.gem/ruby/1.8.7
  - RUBY EXECUTABLE: /usr/local/opt/ruby/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/keithpitty/.gem/ruby/1.8.7/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-17
  - GEM PATHS:
     - /Users/keithpitty/.gem/ruby/1.8.7
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

Как я могу исправить среду RubyGems, чтобы использовать версию Ruby, которая chruby установил?

2 ответа

Решение

Моим пропущенным шагом была установка RubyGems 1.6.2 из исходного кода. Следуя советам Dan Cheail, я сделал следующее:

curl -O https://rubygems.org/rubygems/rubygems-1.6.2.tgz

(а затем расстегнул молнию)

cd rubygems-1.6.2
chruby ruby-1.8.7-p374
ruby setup.rb
gem update --system 1.8.25

И тогда моя среда RubyGems была исправлена:

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.25
  - RUBY VERSION: 1.8.7 (2013-06-27 patchlevel 374) [i686-darwin17.4.0]
  - INSTALLATION DIRECTORY: /Users/keithpitty/.gem/ruby/1.8.7
  - RUBY EXECUTABLE: /Users/keithpitty/.rubies/ruby-1.8.7-p374/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/keithpitty/.gem/ruby/1.8.7/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-darwin-17
  - GEM PATHS:
     - /Users/keithpitty/.gem/ruby/1.8.7
     - /Users/keithpitty/.rubies/ruby-1.8.7-p374/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

Если вы используете диспетчер версий Ruby, например (chruby)[https://github.com/postmodern/chruby], и у вас включено автоматическое переключение. Проверьте файл версии .ruby и, если он не существует, добавьте его с нужным номером версии, например

echo "2.7.8" > .ruby-version

Тогда проверьте свойgem envснова.

Другие вопросы по тегам