rbenv не меняет версию ruby

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

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 не переключает версию ruby, как она думает? Также нет .файл rbenv в локальном каталоге, который будет вызывать версию ruby по умолчанию 1.8.7

rbenv local
rbenv: no local version configured for this directory

19 ответов


проверьте, что путь содержит $HOME/.rbenv / shims и $HOME/.rbenv / bin

$ env | grep PATH

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

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

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


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

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

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

IOW, он все еще был по умолчанию в системе. Быстрый

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

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


я исправил это, добавив следующее К моему~/.файл:

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

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

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


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

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

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


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

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

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

прокладка на самом деле является скриптом, который действует как перенаправление на версию ruby, которую вы установили.

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

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

rbenv versions

ничего из этого не имеет значения: пока вы не установите путь правильно.

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

затем:
which ruby

чтобы убедиться, что она выглядит: /Пользователи.//rbenv / shims / ruby

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

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

Примечание: переустановите Rails с помощью:
gem install rails

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

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


в моем случае изменение ~/.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]

rbenv help shell

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

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

rbenv shell 1.9.3-p125


у меня была та же проблема, но вызванная 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. Бег!--2-- > исправлено для меня.


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

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


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

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


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


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

# 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)

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

ум, чтобы перезапустить сеанс терминала после внесенных изменений.


выполнить команду

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

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

это решит вашу проблему ссылка


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

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

для пользователя fish shell

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

run:

rbenv init

после того, как я запустил это, когда я установил свою локальную версию rbenv:

rbenv local 2.4.0

затем мой ruby -v и меня rbenv local версии совпали.

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


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


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


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