Rbenv: Шайбы для рыбьей раковины

Созданный на 16 февр. 2012  ·  20Комментарии  ·  Источник: rbenv/rbenv

Было бы очень полезно, если бы rbenv предоставила прокладки, которые также были бы совместимы с раковиной рыбы. Это не будет большим изменением, но это будет означать, что rbenv можно использовать в оболочке, отличной от bash / zsh. Синтаксис для fish на самом деле намного разумнее, чем для bash.

Самый полезный комментарий

Похоже, с прокладками все в порядке, нужно доработать руководство по установке. Добавьте это в config.fish для поддержки rbenv:

set PATH $HOME/.rbenv/bin $PATH
set PATH $HOME/.rbenv/shims $PATH
rbenv rehash >/dev/null ^&1

Все 20 Комментарий

Я хотел бы выразить свою поддержку этому.

Похоже, с прокладками все в порядке, нужно доработать руководство по установке. Добавьте это в config.fish для поддержки rbenv:

set PATH $HOME/.rbenv/bin $PATH
set PATH $HOME/.rbenv/shims $PATH
rbenv rehash >/dev/null ^&1

Спасибо, Эд! :)

Работает как шарм.
Вы джентльмен и ученый.

Как @emcmanus отметил, регулировочные шайбы rbenv работают отлично с рыбой или любой другой оболочкой. Для их использования вам нужен только _installed_ Bash - он не обязательно должен быть вашей оболочкой. Прокладки представляют собой сценарии Bash, и вы можете запускать их из Fish так же, как вы можете запускать скрипты Ruby или Python из Fish.

Добавление rbenv в ваш PATH - это все, что необходимо для его работы. Я бы согласился с патчем, который добавляет совместимость с Fish для rbenv init поэтому вам не нужно вручную создавать пути.

Похоже, что этого недостаточно, поскольку rbenv shell не сработает.

rbenv shell - это просто ярлык для установки переменной окружения RBENV_VERSION . Без него вы не потеряете никакой функциональности.

Я использовал это, чтобы заставить оболочку rbenv работать с рыбой: https://coderwall.com/p/6hja1w

При вызове rbenv из оболочки fish не передаются никакие переменные среды, установленные в вашей оболочке. Более того, ни ~/.bashrc ни ~/.bash_profile не читаются. Если вы хотите настроить rbenv, см. # 375.

@espen упомянул мой Protip Coderwall, но есть обновленная версия, которая разрешает частичное имя Ruby (по умолчанию будет выбрана самая новая версия, но без завершения). Gist можно найти здесь https://gist.github.com/5631243 (дайте ему немного любви, если можете).

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

Я также понимаю, что @sstephenson, возможно, не захочет активно поддерживать рыбную оболочку, но, возможно, мы могли бы попытаться реализовать экспериментальную совместимость вначале, и я уверен, что сможем получить поддержку от самого сообщества рыбных панцирей (они кажутся довольно дружелюбными и довольно отзывчивый).

Предположительно, нам нужно изменить файл https://github.com/sstephenson/rbenv/blob/master/libexec/rbenv-init.
Я прав? Я не волшебник сценариев оболочки, но я бы предпочел попытаться сделать это правильно в сотрудничестве с кем-нибудь, если он сделает это правильно.

Ваше здоровье

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

Проблема в том, что fish не является оболочкой POSIX, и будет сложно реализовать rbenv init правильным способом, чтобы обеспечить поддержку fish (я предполагаю, что тогда некоторым понадобится поддержка для csh или tcsh ). Я думаю, что следует отметить, что если кто-то использует оболочку, отличную от POSIX, он может использовать одну из функций сообщества (и давать ссылки) или (-ы) он должен написать ее сам.

@hauleth Я думаю, что вы ошибаетесь. Основываясь на комментариях @emcmanus и @sstephenson, все, что нам нужно сделать, это получить rbenv init для создания синтаксиса, совместимого с рыбой, чтобы он мог быть eval d by fish. Оболочка, совместимая с POSIX (например, bash в этом случае), просто должна быть установлена ​​и не обязательно должна быть выбранной вами оболочкой. См. Комментарии @sstephenson выше.

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

Исходная команда rbenv shell вызывает rbenv sh-shell , которая возвращает строку, которая также является eval d. Мы могли бы обойти это и проанализировать код возврата этого вызова вместо исключения возвращаемой строки. Было бы хорошо? Если да, я мог бы создать что-нибудь, что бы это делало.

@bitboxer Fish shell должен полностью поддерживаться мастером rbenv. Если вы обнаружите, что это не так, откройте новый выпуск. Спасибо!

Спасибо "emcmanus"
Пользуюсь рыбой и искал ответ.

Как упомянул emcmanus, если вы используете рыбную раковину, то у меня сработало следующее.

ИСПЫТАНА В

  • Debain
  • Ubuntu
  • Кубунту
  • Fedora
  • CentOS
  • RedHat Enterprise
 vi ~ / .config / fish / config.fish
 установить PATH $ HOME / .rbenv / bin $ PATH
 установить PATH $ HOME / .rbenv / shims $ PATH
 rbenv rehash> / dev / null ^ & 1

Затем выйдите из рыбы и перезагрузите рыбу или просто выйдите из системы и снова включите. Если не можете найти файл, это означает, что вы только что установили Fish и ни разу не запускали его. Просто запустите fish, и эта папка будет создана (файл может и не быть).

Это рыба, а не рыба.
http://fishshell.com/

Спасибо @emcmanus и @sstephenson.

По-видимому, в будущем синтаксис ^ будет устаревшим и в некоторых версиях не работает ( см. Эту проблему здесь ).

Поэтому лучше использовать следующий синтаксис: rbenv rehash >/dev/null >2&1 .

Поэтому лучше использовать следующий синтаксис: rbenv rehash> / dev / null> 2 & 1.

Там опечатка 2 и > нужно поменять местами:

rbenv rehash >/dev/null 2>&1
Была ли эта страница полезной?
0 / 5 - 0 рейтинги