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 ★★★★
()
Ответ на: комментарий от anonymous

и так

gem 'gam_name', :git => 'git@bitbucket.org:special_k/gam_name.git'

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

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

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 ★
() автор топика
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.