2016-08-25 5 views
0

Я только коммутируемые от лет развития с РВМ к rbenv и Eсть один аспект rbenv, что я не могу обернуть мою голову вокруг:сохранение драгоценных камней в течение долгого времени с rbenv и несколькими проектами

Когда я работаю над несколькими проектами (каждый со своими зависимостями) под одной и той же версией Ruby, а затем перестаю работать над одним из проектов, как я могу легко обновить все свои зависимости от моего gempath (что, по-видимому, /Users/meltemi/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0)?

С RVM каждый проект имел gemset, поэтому его было легко удалить.

С rbenv казалось бы, что каждая версия каждого драгоценного камня попадает в тот же каталог, где bundler может управлять им. Большой! Но скажу, что я прохожу через bundle outdated и bundle update, а затем bundle clean цикл в ProjectA, не будет ли удалять все драгоценные камни, которые он не распознает из ProjectB, что мне может понадобиться работать позже в тот же день?

Или сказать, что я больше не хочу работать над ProjectA и хочу удалить проект и все связанные с ним драгоценные камни?

Возможно, я приближаюсь к этому неправильно?!? Надеясь, что кто-то может установить меня прямо, потому что все остальное о rbenv кажется простым & имеет большой смысл!

ответ

0

Я не уверен в механизме bundle clean, но похоже, что он вводит возможность удаления драгоценных камней, связанных с другими проектами.

У вас есть несколько вариантов:

1. Вы можете позволить все версии гем жить в ~/.rbenv/... и пусть Bundler управлять ими для вас. Старые/устаревшие драгоценные камни будут существовать. (я в настоящее время сделать это.)

2. Вы можете использовать плагин как rbenv-gemset для дополнительной изоляции. (. Или переключиться обратно в РВМ)

3. Bundler также позволяет указать путь, куда установить драгоценные камни, вы можете установить их в директории проекта (например:/MyApp/поставщика /).

# Per project 
bundle config --local path vendor 
bundle install 
# Saves configuration to /myapp/.bundle/config 

# Global 
bundle config --global path vendor 
bundle install 
# Saves configuration to ~/.bundle/config 

Могут быть альтернативные способы борьбы с этим, но это все методы, с которыми я знаком.

+0

Я думаю, что мое беспокойство с № 1 заключается в том, что со временем '~/.rbenv/...' станет раздутым беспорядком устаревших драгоценных камней. Но я думаю, что, поскольку проекты, которые все еще активны, в конечном итоге переносятся на новые версии Ruby, их пакеты будут перемещаться так же, как только все (или достаточно) проекты перейдут от старой версии Ruby, все эти драгоценные камни могут быть уничтожены ... это разумно? Не много разработчиков * Я * работаю с использованием '/ vendor', хотя это может работать, если вы добавите его в' .gitignore' ... – Meltemi