Как выполнить системный вызов Ruby в контексте текущей оболочки - PullRequest
0 голосов
/ 08 апреля 2019

Я выполняю вызов rvm use ... из сценария Ruby:

system "rvm use 2.5.5"

Когда вышеописанное выполняется, я получаю

RVM is not a function, selecting rubies with 'rvm use ...' will not work.  

You need to change your terminal emulator preferences to allow login shell.

Я вполне уверен, что я вошел как оболочка для входа. Там нет проблем с использованием обычных команд RVM в терминале, который у меня открыт. Команда system подхватывает текущую оболочку или использует что-то еще по умолчанию? Если он использует что-то еще, каков наилучший способ заставить Ruby запустить команду в контексте текущей оболочки?

1 Ответ

1 голос
/ 09 апреля 2019

Эти вещи могут быть хитрыми с RVM. Попробуйте это:

"/bin/bash -c -l 'rvm use 2.5.5 && <add your system commands here>'"

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

...