Скажите RVM перепроверить рубиновую версию на git checkout

Я использую RVM и устанавливаю рубиновую версию в свой Gemfile. Поскольку я сейчас работаю над обновлением своего приложения до новой версии, у меня есть ветви с разными версиями.

Каждый раз, когда я переключаюсь на или из этих ветвей, я делаю cd.. && cd project_directory чтобы заставить RVM замечать версии изменений и переключения. Это немного неприятно. Есть ли способ, которым я могу заставить RVM делать это автоматически, когда я проверяю ветку?

В противном случае, есть ли хотя бы команда RVM, которая делает это?

Редактирование: я потратил слишком много времени на то, чтобы разобраться в этом, и обнаружил несколько вещей:

Благодаря Xavdidtheshadow , я написал git post-checkout hook, который, как следует из названия, будет выполнять материал, когда я выхожу из ветви. Вот:

project_directory / .git / Крючки / пост-фотографии:

 echo 'Checking for updated Ruby version' cd . 

Теперь проблема в том, что это не работает. О, он будет эхо-строки просто отлично, но это не вызывает повторную проверку RVM рубиновой версии. Я узнал, что RVM определяет собственную функцию cd . К сожалению, я не особенно разбираюсь в сценариях оболочки, поэтому я немного туманно о том, что именно он делает.

Дело в том, что я не думаю, что git hook использует эту версию cd . Я основываю это на выходе этой команды: shopt -s extdebug ; declare -F cd shopt -s extdebug ; declare -F cd (который я нашел здесь ). Когда я запускаю его сам, вывод будет cd 14 /Users/imclean/.rvm/scripts/cd – показывает, где RVM определяет cd , тогда как если бы у меня был запуск git-hook и эхо-команда, то он выводит пустую строку.

Конечно, вы можете использовать Git Hooks .

Есть крюк после проверки, который может запускать сценарий оболочки, поэтому вы можете обмануть и просто cd . чтобы rvm перепроверить версию для вас.

Git-крючки, вероятно, не могут решить вашу проблему, потому что они запускаются в дочерней оболочке.

Это может быть не самое подходящее решение, но я просто определил псевдоним для git checkout:

 gco(){ git checkout "$@" cd . echo "Now using : " ruby -v } 

Вы можете просто скопировать его в оболочку, чтобы проверить его:

 > gco master Switched to branch 'master' Your branch is up-to-date with 'origin/master'. Now using : ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux] > gco jruby Switched to branch 'jruby' Your branch is up-to-date with 'origin/jruby'. Now using : jruby 9.0.5.0 (2.2.3) 2016-01-26 7bee00d Java HotSpot(TM) 64-Bit Server VM 25.101-b13 on 1.8.0_101-b13 +jit [linux-amd64] 

Если вы довольны этой функцией оболочки, просто вставьте ее в файл ~ / .profile