Как взаимодействовать с RVM из ruby? - PullRequest
1 голос
/ 03 июля 2011

Я пытаюсь получить информацию об установленных версиях ruby ​​внутри RVM и связанных с ними наборах гемов и гемах.

Моей первой идеей было использовать системный вызов rvm list для получения установленных Rubies и rvm use #{ruby_version} && rvm gemset list за каждый рубин.Но есть проблема с этим.Кажется, что rvm use #{ruby_version} выполняется и подтверждается RVM (вывод Using #{path_to_ruby), но перечисленные наборы гемов являются теми из версии Ruby, которая выполняет сценарий.

Есть ли способ связи с RVM изRubyscript через CLI или API?

1 Ответ

1 голос
/ 03 июля 2011

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

Но когда вы запускаетеrvm use в подоболочке изменения переменных env не распространяются до родительской оболочки.

Не вдаваясь в подробности, моя первоначальная идея состояла в том, чтобы вы запустили rvm use вещь +, а затем в том же сеансе подоболочки запустили что-то, перечисляющее содержимое всех этих обновленных переменных env (см. Здесьна какие из них вам нужно взглянуть: http://beginrescueend.com/rvm/info/) ... тогда в вашем скрипте ruby ​​вам нужно настроить среду так, чтобы она соответствовала среде в вашей оболочке.

В словах оболочки, что вы обычно делаетев таком случае это «исходный» сценарий, а не его выполнение.Т.е. source "the_script_that_sets_environment_variables".Но когда вы находитесь в сценарии ruby ​​и используете обратные метки для запуска содержимого в подоболочке, вы не можете передать среду обратно родительскому объекту, не сделав это вручную.

Другое решение может состоять в том, чтобы взглянуть на RVM Ruby API .Я еще не нашел много документации по этому вопросу, но она также может помочь вам:
http://www.rubyflow.com/items/4285

...