Как мога да накарам RVM да спазва настройките на моя пакетиращ къде да поставя скъпоценни камъни?

Конфигурирал съм моя пакет за инсталиране на скъпоценни камъни в директория .bundle/ във всеки проект.

$ cat ~/.bundle/config
---
BUNDLE_PATH: ".bundle"
BUNDLE_BIN: ".bundle/bin"

Как мога да накарам RVM да спазва тази настройка и да не задавам $GEM_HOME в друга директория (вътре в ~/.rvm/), когато влизам cd в моя проект?

Досега имах малък скрипт, който задаваше $GEM_HOME ( и $PATH и $GEM_PATH) всеки път, когато бих cd в директорията на моя проект, но с последните версии на rvm той спря да работи и сега RVM основно деактивира версията на Ruby, когато ръчно променя $GEM_HOME и нямам представа как да я накарам да работи отново.


person Paweł Gościcki    schedule 02.10.2014    source източник
comment
Какъв е проблемът с инсталирането на скъпоценни камъни в .bundle и стартирането на изпълним файл от папка bin/? Например, след това мога да стартирам изпълним файл с bundle exec bin/exec   -  person Малъ Скрылевъ    schedule 05.10.2014
comment
Проблемът е, че RVM задава $GEM_HOME на нещо в ~/.rvm/, така че не мога да правя неща като gem cleanup или gem install, защото скъпоценните камъни са на друго място.   -  person Paweł Gościcki    schedule 06.10.2014
comment
можете да стартирате gem чрез самия пакет, така че: bundle exec gem ..., така че дори да добавите псевдоним alias gem=bundle exec gem или да получите функция, за да проверите дали пакетът контролира папка gem/project и да стартирате gem или bundle exec gem за избран случай.   -  person Малъ Скрылевъ    schedule 07.10.2014
comment
Не мисля, че разбираш. Използвам горната настройка за всички мои проекти. Никога повече не пускам bundle exec.   -  person Paweł Gościcki    schedule 07.10.2014
comment
Какво използвате тогава? bundle install, и какво още?   -  person Малъ Скрылевъ    schedule 07.10.2014
comment
Добавям ~/bin и ~/bundle/bin към моя път, така че имам директен достъп до всички бинарни файлове на gem за всеки проект.   -  person Paweł Gościcki    schedule 07.10.2014


Отговори (1)


Първо трябва да посочите, че искате да използвате много отделния gemset за вашия проект (имете предвид, че името му е myproject42):

$ cd myproject42 && rvm --rvmrc --create use 2.1.0@myproject42 --ignore-gemsets

Опцията rvmrc ще създаде конфигурационния файл във вашата папка. Вече сте наполовина отделени от Вселената. Сега искате да промените малко този файл, като зададете каквото искате:

...
unset __hook

# my exports
export GEM_PATH=`pwd`
export GEM_HOME=`pwd`
...

cd навън и обратно в тази директория. Това ще доведе до предупреждението:

You are using '.rvmrc', it requires trusting, it is slower and ...
[LINES SKIPPED]
************************
y[es], n[o], v[iew], c[ancel]> y
Using: /tmp/myproject42

След като потвърдите, че сте наясно с тази модификация, скъпоценният набор е зададен на това, което сте искали (/tmp/myproject42 в този случай.) Можете да проверите, че:

$ rvm gemset dir
Warning! PATH is not properly set up, '/tmp/myproject42/bin' is not available,
[LINES SKIPPED]
/tmp/myproject42

Може да искате да направите малко почистване, като например да потиснете тези предупреждения. „Инструкциите“ са отпечатани в тези предупреждения, те са доста ясни, така че оставих описанието на първоначалния процес „мръсно“, за да покажа как точно ще се изпълнява на вашата машина.

Надявам се това да помогне.

person Aleksei Matiushkin    schedule 06.10.2014
comment
Не съм го пробвал, но дори и да работи, трябва да се направи твърде много ръчна работа за настройване на всеки нов проект (т.е. това решение е твърде тромаво; не се мащабира). - person Paweł Gościcki; 07.10.2014
comment
echo 'export GEM_PATH=.bundler' > .rvmrc върши работа, ако търсите хакове, като предишното ви решение само за zsh. Описах процеса как се предвижда да се направи с rvm. - person Aleksei Matiushkin; 07.10.2014
comment
mudasobwa предостави отговора, който поискахте. Ако това е твърде много работа, тогава го скриптирайте или променете RVM. Това обаче беше добър, информативен отговор. Това също беше добър въпрос. Гласове за двете :) - person Ethan Barron; 09.10.2014
comment
Опитах „трудния“ начин, описан в отговора, и за съжаление не работи. Коментирах моите zsh скриптове, но RVM няма да зададе правилния Ruby, ако GEM_HOME/GEM_PATH е променен в rvmrc, както е описано, и ако използвам rvm use 2.1.2 в .rvmrc, той задава GEM_HOME/GEM_PATH обратно към нещо в ~. Опитах и ​​бързия хак, но не работи по същия начин. - person Paweł Gościcki; 12.10.2014