Rbenv не меняет рубиновую версию

Я установил rbenv в соответствии с направлениями github. Я запускаю OSX, но я пробовал это на Ubuntu 12.04 VM и получил те же результаты. Следующее - это то, что я получаю в своем терминале, когда пытаюсь изменить рубиновые версии:

rbenv versions
* 1.9.3-p0 (set by /Users/user/.rbenv/version)
1.9.3-p125

rbenv global
1.9.3-p0

rbenv rehash

ruby -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]

which ruby
/usr/bin/ruby

У кого-нибудь есть идеи относительно того, почему rbenv не переключает рубиновую версию, как она думает? Также в локальном каталоге нет файла .rbenv, который приведет к тому, что версия ruby ​​по умолчанию будет равна 1,8.7

rbenv local
rbenv: no local version configured for this directory

Ответ 1

Убедитесь, что PATH содержит $ HOME/.rbenv/shims и $ HOME/.rbenv/bin

$ env | grep PATH

Также убедитесь, что в вашем ~/.bash_profile есть следующее при использовании bash или ~/.zshenv при использовании zsh

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

ПРИМЕЧАНИЕ: Убедитесь, что это последний параметр в вашем ~/.bash_profile. Я столкнулся с проблемой, когда я установил программу, которая обновила мой файл .bash_profile и сбросил PATH.

Наконец, убедитесь, что в вашей папке $HOME нет файла .ruby-version, который вы могли создать случайно, если бы вы сделали $ rbenv local <ruby-version> в вашей папке $HOME. Выполнение $ rbenv global <ruby-version>' modifies the $ HOME/.rbenv/version file, and the existence of a.ruby-version file in the $ HOME folder would override the version set by $ HOME/.rbenv/version '.

Из документов:

Выбор версии Ruby Когда вы выполняете shim, rbenv определяет, какую версию Ruby использовать, читая ее из следующих источников, в следующем порядке:

Переменная среды RBENV_VERSION, если указана. Вы можете использовать команду оболочки rbenv для установки этой переменной среды в текущем сеансе оболочки.

Первый файл .ruby-version, найденный путем поиска в каталоге исполняемого скрипта и в каждом из его родительских каталогов до достижения корня вашей файловой системы.

Первый файл .ruby-version, найденный путем поиска в текущем рабочем каталоге и в каждом из его родительских каталогов до достижения корня вашей файловой системы. Вы можете изменить файл .ruby-version в текущем рабочем каталоге с помощью локальной команды rbenv.

Глобальный файл ~/.rbenv/version. Вы можете изменить этот файл с помощью глобальной команды rbenv. Если файл глобальной версии отсутствует, rbenv предполагает, что вы хотите использовать "системный" Ruby, т.е. какая бы версия не запускалась, если бы rbenv не был у вас на пути.

Ответ 2

Это может быть старый вопрос, но Google привел меня сюда и, ради потомства, подумал, что я поделюсь.

Моя проблема сохранилась после многих рекомендованных решений выше. Как и OP, я установил rbenv, а затем рубиновую версию, но мой ноутбук по умолчанию отказался от системы. То, что я упустил, было то, что когда я бежал:

[~/.rbenv] $ rbenv versions
* system (set by /Users/alphadogg/.rbenv/version)
  2.0.0-p247

IOW, он по-прежнему не выполнял функции системы. Быстрый

[~/.rbenv] $ rbenv local 2.0.0-p247

переключился на новую версию.

Ответ 3

Я исправил это, добавив следующее к моему ~/.bash_profile:

#PATH for rbenv
export PATH="$HOME/.rbenv/shims:$PATH"

Это то, что задокументировано на https://github.com/sstephenson/rbenv.

Из того, что я могу сказать, нет каталога ~/.rbenv/bin, о котором упоминалось в сообщении @rodowi.

Ответ 4

Первый шаг - выяснить, какой рубин называется:
which ruby

Ваша система говорит:
/usr/bin/ruby

Это НЕ прокладка, используемая rbenv, которая (на MacOS) должна выглядеть так:
/Users/<username>/.rbenv/shims/ruby

Прокладка фактически представляет собой script, который действует как перенаправление на версию рубина, который вы установили.

rbenv global 1.9.3 rbenv local --unset rbenv shell --unset
Я рекомендую, чтобы при устранении неполадок вы удаляли конкретную "локальную" версию проекта и версию оболочки "shell" и просто проверяли с использованием параметра "глобальной" версии, который определяется в текстовом файле в ~/.rbenv/verion, который будет только номер версии "1.9.3" в вашем случае. Вы можете сделать "ls -laG" в корне вашей папки проекта (а не в домашней папке), чтобы убедиться, что там больше нет файла ".ruby-version".

Вы можете использовать "версии rbenv", чтобы определить, какая версия rbenv установлена ​​для использования (и расположение и имя файла, который устанавливает это).

rbenv versions

НИ ОДНА ИЗ ЭТОГО ВОПРОСОВ: пока вы правильно установили путь.

Используйте это, чтобы убедиться, что ваш MacOS будет подчиняться вам:
eval "$(rbenv init -)"

Далее следуют:
which ruby

Чтобы убедиться, что это выглядит так: /Users//. Rbenv/прокладки/рубин

Затем добавьте строку в свой профиль, чтобы она запускалась каждый раз, когда вы открываете новое окно терминала:
~/.bash_profile eval "$(rbenv init -)"

Существуют и другие способы изменения пути, не стесняйтесь заменить любой из них, а не запускать rbenv init.

ПРИМЕЧАНИЕ. Переустановите Rails с помощью:
gem install rails

Если вы пытались запустить Ruby on Rails, вам нужно сначала запустить все это, а затем снова установить рельсы. В предыдущей установке Rails будет использоваться жестко закодированный путь к неправильному рубину, а некоторые другие вещи будут не в том месте, поэтому просто установите драгоценный камень еще раз.

Р. S. Если ваш MacOS не будет подчиняться вам (* упомянуто выше), вам, возможно, придется найти другой способ изменить свой путь, но это вряд ли будет проблемой, потому что "Mac просто работают";)

Ответ 5

Я нашел эту же проблему. То, что я сделал, это удалить rbenv (через homebrew) и переустановить его. Я также добавил

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

в ~/.bash_profile при повторной установке rbenv. Теперь работает отлично.

Ответ 6

В моем случае изменение ~/.zshenv не сработало. Мне пришлось внести изменения внутри ~/.zshrc.

Я только что добавил:

# Include rbenv for ZSH
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

вверху ~/.zshrc, перезапустили оболочку и вышли из системы.

Проверьте, работает ли он:

➜  ~ rbenv install 2.4.0
➜  ~ rbenv global 2.4.0
➜  ~ rbenv global
2.4.0
➜  ~ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]

Ответ 7

Запустите эту команду

Добавьте rbenv в bash, чтобы он загружался при каждом открытии терминала

echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile

это решит вашу проблему Reference

Ответ 8

rbenv help shell

"Устанавливает версию Ruby для оболочки, задающую переменную среды RBENV_VERSION в вашей оболочке. Эта версия переопределяет версии, специфичные для локального применения, и глобальная версия. должна быть строкой, соответствующей версии Ruby, известной как rbenv. Специальная версия string 'system' будет использовать вашу систему по умолчанию Ruby. Запустите rbenv versions 'для списка доступных версий Ruby.

Если rbenv был установлен правильно, ruby ​​-v будет соответствовать

rbenv shell 1.9.3-p125

Ответ 9

У меня была та же проблема, но вызванная Homebrew:

[~]$ rbenv version
2.3.0 (set by /Users/user/.rbenv/version)
[~]$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]
[~]$ which ruby
/usr/local/bin/ruby

Каким-то образом я установил Ruby через Homebrew тоже, и путь Homebrew был впереди пути rbenv в моем $PATH. Запуск brew uninstall ruby исправил его для меня.

Ответ 10

Я пришел к той же проблеме. Исправлено это, запустив команду "rbenv global" с помощью "sudo". Я думаю, что это была проблема разрешения проблемы.

обновление: Наконец я нашел решение. Была одна версия файла на моем mac, которая находится под "/usr/local/Cellar/rbenv/0.3.0/". Я думаю, что это было создано по ошибке время от времени. вы должны удалить его.

Ответ 11

Когда у меня были эти симптомы, проблема оказалась в том, что установка не прошла на полпути для новой версии Ruby, к которой я пытался переключиться, без меня замечать. Исправлено удаление и повторная установка.

(Это означало, что хотя Ruby 1.9.3 появился в списке доступных версий rbenv, у него не было исполняемого файла на пути, на который предположил Rbenv. Так как rbenv пытается изменить вашу рубиновую версию просто путем добавления место на вашем пути, если в фактическом месте, где он находится, ничего не происходит, ваша ОС с радостью продолжит поиск пути по умолчанию и найдет вашу версию системы, в моем случае, как вопрос 1.8.7.)

Ответ 12

Как для меня, самый простой способ использовать rbenv вместе с zsh - это добавить rbenv в раздел плагинов в конфигурации .zshrc. В моем случае он похож на:

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git bower rails ruby rbenv gulp npm node nvm sublime)

После этого нет проблем при установке, переключении, использовании рубиновых версий с помощью rbenv.

Обратите внимание на перезапуск сеанса терминала после внесенных изменений.

Ответ 13

для пользователя оболочки рыбы

set --universal fish_user_paths $fish_user_paths ~/.rbenv/shims/

Ответ 14

пробег:

rbenv init

После этого я установил свою локальную версию rbenv:

rbenv local 2.4.0

тогда мои версии ruby -v и my rbenv local совпали.

Примечание. Возможно, вы также захотите выйти из каталога, в котором вы находитесь, а затем вернуться в него, я заметил, что это было необходимо для меня, чтобы заставить работать.

Ответ 15

Это случилось со мной сразу после того, как я переустановил rbenv. По-видимому, у меня был файл .ruby-version в моем домашнем каталоге, указав версию, которая больше не существует. Как только я удалил файл, все сработало.

Ответ 16

Убедитесь, что последняя строка вашего .bash_profile:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

Ответ 17

Странно, версия rbenv не установила файл .rbenv Проверьте с помощью: ls -ltra → , чтобы увидеть, что rbenv был записан

Ответ 18

Вы можете попробовать использовать chruby? chruby не полагается на прокладки, вместо этого он только изменяет PATH, GEM_HOME, GEM_PATH.

Ответ 19

Если вы используете bash, перейдите на

~/.bash_profile

и добавьте следующую строку (если ее там еще нет)

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

Если вы используете Zsh, перейдите на

~/.zshrc

и добавьте ту же строку кода в конец файла .zshrc.

Затем просто перезапустите свой терминал, и теперь все должно быть в порядке.

Ответ 20

Я забыл удалить rvm перед установкой rbenv. Я удалил rvm и снова установил rbenv, но система все еще не использовала версию Ruby, которая была объявлена ​​глобальной как rbenv. Я попытался закрыть терминал, но он работал только после перезапуска всей машины.