LINUX.ORG.RU

Ruby gems и все все все

 ,


0

1

Доброго времени суток.

Вопрос скорее из раздела как делать лучше и что подскажет хайвмайнд ЛОР.

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

Но тут встала задача хостить некоторое количество(пока непонятно сколько будет в итоге) проектиков на ruby, в основном конечно sinatra и rails, но у каждого будут совершенно свои версии gems.

Как правильно организовать такое дело? В rvm есть такая замечательная штука как gemsets те для каждого проекта можно организовать свою версию ruby и gems и никто никому мешать не будет.

Все это будет работать на Debian Wheezy, это если кому интересно.

Собственно вопрос: Есть ли решение лучше, чем это? Кто вообще как организует у себя гемы?


Сколько всего не пробовал, с зоопарком дистров у меня запедалила только rvm.
Собрал что нужно, зарулил ~/.rvm на нужный сервак, скормил этот дело PATH'у, и спокойно работаешь.

Spirit_of_Stallman ★★★
()
Последнее исправление: Spirit_of_Stallman (всего исправлений: 2)

Я некоторое время rvm + gemsets не использовал, но поймав однажды несколько идиотских нелогичных багов, опять вернулся и считаю это самым надёжным методом. Именно для случая «куча проектов с кучей РАЗНЫХ джемов»

Alve ★★★★★
()

Gemfile позволяет указывать конкретные версии библиотек используюемых в проекте. А еще можно делать так:

gem "gem_name", :path => "/path/to/gem_name"

special-k ★★★★
()

Но тут встала задача хостить некоторое количество

troll mode on: используй пхп, проблемы подобной нет, каждый проект свой набор библиотек, классов, композер еще до кучи есть

и не будет никаких проблем с этими вашими gem hell'ами

umren ★★★★★
()

Лучше гемсетов — только бандл + вендоред гемы.

Apple-ch ★★
()

Bundler уже давно справляется с установкой разных версий гемов, rvm как таковой уже и не нужен.

gwinn ★★★★
()
Ответ на: комментарий от special-k

Дома конечно же юзаю rbenv+bundler …
Мне нравится и все такое, но вы знаете … Во многих конторах столкнулся с тем, что везде RVM (+Gemsets) … На мой вопрос: «Почему не rbenv?» … Все говорят, что «нам так удобно / исторически сложилось / все знают rvm и ок» … На мою попытку «революции» – всем пофиг. :)

renya ★★★★★
()
Ответ на: комментарий от special-k

Rbenv в этом плане приятнее, он значительно легче и не заменяет системные утилиты cp, rm, то бишь занимается исключительно управлением версий ruby.

gwinn ★★★★
()

каждому приложению - отдельный юзер, гемы bundler'ом в ~/.gems ... profit

P.S. а при правильных разрешениях еще и немножко сессуриту улучшится

TOXA ★★
()

А этот ваш bundler следит чтобы используемые гемы не обновлялись, а ставились нужные версии?

Поясняю. Вот есть у меня redmine, ruby 1.9.3, rails 3.2.13. Надо захостить нечто ruby 2.0, rails 4.

Bundler сам разберется, что не стоит апгрейдить используемые gems, а скачать и юзать новые, не ломая старое?

C1nde
() автор топика

Кастану еще drakmail. Мне кажется сможет чего дельного посоветовать

C1nde
() автор топика
Ответ на: комментарий от C1nde

Да, можно явно указать версию. Поправьте, если не прав.

anonymous
()
Ответ на: комментарий от C1nde

Конечно, разберется. Апгрейдить без явного человеческого «bundle update» ничего не будет — разные версии gem'а будут просто лежать рядом в ~/.gem/ruby/$RUBY_VERSION/gems. Нужная версия будет определяться по Gemfile.lock проекта. Читайте подробней здесь.

А для управления версиями ruby рекомендую chruby.

Anatolik ★★
()
Ответ на: комментарий от Anatolik

Спасибо большое. После статьи многое прояснилось.

ps дома и использую chruby + ruby-install

C1nde
() автор топика

Я использую для этого chruby + bundler.

drakmail ★★★★
()
Ответ на: комментарий от special-k

rvm ряд вещей сам устанавлявает в своей директории, в частности либы openssl, rbenv занимается только контролем версий руби.

При установке гема, если требуется его сборка, и не хватает библиотек в системе, то сообщение об ошибке довольно информативное, что бы понять, что нужно установить.

gwinn ★★★★
()
Ответ на: комментарий от gwinn

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

special-k ★★★★
()
Ответ на: комментарий от special-k

Ну, тот же rvm, сам по себе, не сильно мне подсказал, что не так, когда у меня не собирался подтянутый по зависимостям libv8, так что не переживайте сильно.

gwinn ★★★★
()
Ответ на: комментарий от C1nde

А этот ваш bundler следит чтобы используемые гемы не обновлялись, а ставились нужные версии?

Дык на основе gemfil'а же версии bundler ставит …

renya ★★★★★
()
Ответ на: комментарий от C1nde

да

руби допускает наличие нескольких версий библиотек одновременно

В отличии от всякой ху^Wшантрапы)

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 1)

Спасибо всем за советы. Буду использовать bundler, посмотрел в его сторону подробнее, весьма годная штука. Очень порадовало bundel exec.

Про версионность руби надо подумать посмотреть, наверное всё таки chruby, вопрос как указывать версию для папки, было бы удобно.

C1nde
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.