Как запустить правильную версию Ruby при запуске через MacVim (! Ruby) - PullRequest
8 голосов
/ 04 августа 2011

Недавно я видел, как Гэри Бернхардт демонстрирует ярлык vim, который он использует для выполнения кода Ruby из vim.Ярлык

:map ,t :w\|:!ruby %<cr>.  

Кажется, что этот метод всегда выполняет системный Ruby, который в моем случае равен 1.8.7.Я не решаюсь его обновить, поскольку слышал, что изменение интерпретатора System Ruby может вызвать некоторые странные проблемы.Есть ли способ заставить эту команду использовать настройку версии для каталога с RVM?

Ответы [ 2 ]

5 голосов
/ 04 августа 2011

Самый прямой способ указать ruby - указать его полный путь в команде :! (вместо того, чтобы полагаться на то, что ruby находится первым в каталогах PATH):

  • Для использования Ruby в /path/to/your/preferred/ruby:

    :!/path/to/your/preferred/ruby %
    
  • Для использования установленного RVM ruby-1.9.2-head:

    :!~/.rvm/bin/ruby-1.9.2-head %
    
  • Для использования установленного RVM ruby-1.9.2-head с вашим rails3-dev набором камней:

    :!~/.rvm/bin/ruby-1.9.2-head@rails3-dev %
    

Таким образом, ваша команда map может выглядеть так:

:map ,t :w\|:!~/.rvm/bin/ruby-1.9.2-head@rails3-dev %<cr>

Также обычно можно отрегулировать эффективное значение переменной среды PATH так, чтобы желаемое ruby было первым найденным, но оно не всегда может быть таким простым, как вам хотелось бы. В частности, команды :! обрабатываются оболочкой, настроенной с помощью опции shell Vim (:set shell?, чтобы увидеть ее значение). Файлы конфигурации для этой оболочки могут изменять значение PATH, которое Vim дает оболочке (сравните PATH Vim (:echo $PATH) с PATH, в котором команды :! в конечном итоге используют (:!echo $PATH), чтобы увидеть, могут ли файлы конфигурации вашей оболочки быть корректировка ПУТИ).

Вы можете попробовать изменить PATH, который использует Vim и его дочерние элементы, следующим образом:

:let $PATH = $HOME . '/.rvm/wrappers/ruby-1.9.2-head@rails3-dev:' . $PATH

Вы должны проверить действующий PATH с помощью :!echo $PATH и :!which ruby, чтобы выяснить, изменяет ли ваша shell дальнейшую PATH (возможно, :set shell=/bin/sh, если у вас есть эта проблема).

Примечание: я никогда не видел такого конкретного использования каталогов оболочки RVM, будущие версии RVM могут сломать его. Обычно используется для создания оболочки и вызова ее непосредственно из ~/.rvm/bin (аналогично первой части этого поста) вместо помещения ~/.rvm/wrapper/whatever в PATH.

1 голос
/ 04 августа 2011

На вашей карте вместо простого ruby (который будет первым в вашем $PATH) используйте полный путь.Допустим, например, что вы хотите использовать установленный MacPorts Ruby:

:map ,t :w\|:!/opt/local/ruby %<cr>.
...