Pull to refresh

Comments 44

по поводу джемсетов — желательно использовать bundler.
это безопаснее и удобнее. мы сетапим новый сервак, ставим rvm, нужную версию руби и все. а не ставим все нужные нам джемсеты.
желательно, простите, для кого? и чем безопаснее, и чем удобнее?
для тех кто пишет приложения с использованием Ruby On Rails.
безопаснее тем что у каждого приложения все ему нужные гемы находятся в его папке и подставить модифицированный системный не получится.
удобнее тем что админу всего этого не надо для каждого проекта делать свой жемсет и не ставить все нужные жемы в этот жемсет.
При использовании rvm bundler ставить гемы в текущий gemset
При запуске bundle install под гемсетом 1.9.2@projectname, гемы устанавливаются в директорию /home/user/.rvm/gems/ruby-1.9.2-p180@projectname/gems
Так что никакой директории с гемами под отдельный проект нет. Есть только отдельный gemset
вы капистрано пользуютесь или нет?
нет, я про случай без капистрано
а я вам про капистрано. да и вообще bundler у себя можно настроить так что будет ставить жемы в папку с проектом, что очень удобно.
и тем более вы перестанете использовать rake, rails, etc без bundle exec.
спасибо, не знал. Поэксперементирую с этим
Ну так в гемсетах и нет «модифицированных системных» никаких, просто гемы лежат не в текущей папке, а в системе (в отдельной папке своего гемсета). Про модификацию гема руками я даже не говорю, этим наверняка уже никто не страдает.

по поводу удобства: у меня в каждом проекте лежит .rvmrc, который автоматически создает гемсет. В глобальном гемсете у меня лежит только бандлер и одной простой командой все эти гемы ставятся в новый гемсет: изоляция идеальная.

Нет, я совсем не говорю, что бандлером пользоваться нельзя или не нужно, просто не нужно так категорично заявлять, что гемсеты использовать ну прямо никак нельзя. Разницы, по большому счету, нет совершенно никакой, все делают так, как конкретно им удобнее.
тоесть вы бандлер у себя вообще не используете? или как?
почему же не использую? очень использую!

есть 3 варианта:
— ваш подход (гемы для проекта хранятся внутри проекта, отчего сам проект тяжелеет)
— мой подход (в Gemfile описаны необходимые гемы, при настройке проекта я выполняю bundle install и гемы скачиваются в папку чистого и свежего гемсета)
— устаревший вариант (без rvm: есть некий глобальный гемсет, куда сваливаются все гемы для всех проектов).

я не вижу разницы между первым и вторым вариантом, за исключением того, что я не храню гемы в репозитории с проектом.
ну по поводу третьего варианта я скажу то что бандлер туда как раз очень хорошо и вписываться.
rvm просто средство управления версиями руби в моём варианте.
а по поводу утяжеления проекта, скажу так что при деплое очень даже ускоряеться скорость bundle install, за счет того что нужные жемы у вас уже в папке. Для меня это важно, потому как у меня ноды поднимаются автоматом если нагругка выросла, и как бы чем быстрее она поднимется, тем лучше.
Но зато деплой/пуш занимает больше времени, это тоже не очень круто. Нужно иметь для серверов локальную/распределенную хранилку гемов.
это почему он будет занимать больше времени?
Ну гемы тяжелые, их много. Но это да, мелочь.
хм… помоему больше времени при bundle install занимают запросы на индекс с зеркал rubygems.org.
Ну тогда делать локальный сторадж гемов, откуда все ваши проекты будут забирать гемы: не будет этой задержки. akzhan про это больше рассказать сможет
лишние пару метров с жемами в репе роли не играют.
> за исключением того, что я не храню гемы в репозитории с проектом.

echo 'vendor/bundle' >> .gitignore
В .rvmrc использую комманду с ключом --create. Даже первым делом создаю этот файл echo «rvm 1.9.2@project_name — create >> project_name/.rvmrc И после cd в project_name гемсет сам создается. А уж потом делаю все остальное.
Спасибо за перевод страниц сайтика рвм на русский.

Хотелось бы освещения так же вопросов, которые не обозначенны на сайте, например —

У меня два rails проекта — один на руби 1.8, второй на руби 1.9. Как запустить оба сайта с помощью rvm?

ну и тому подобные…
Устанавливаете две версии руби
rvm install ruby-1.8.7
rvm install ruby-1.9.2
Работаете с одним проектом из под rvm use 1.8.7, с другим rvm use 1.9.2
Чтобы не переключаться вручную можно создать файл .rvmrc в корневой директории каждого проекта.
работать то можно, вот только скажем пассажир так не запустишь.
у меня есть в планах статья про разворачивание ruby проектов на серверах, скорее всего это будет там
а пассажир и не нужен, используйте unicorn.
пассажир как-то ведь попроще, тем более с 1.8.7 EE версия пошустрее будет
ну так спрашивали по поводу разных версий руби и пассажира. Вариант ниже с запуском отдельных пассажиров с RVM не добавляет каких-то упрощений по сравнению с unicorn.
напишите ещё, что бы вы хотели узнать, сделаю седьмой пункт «RVM в жизни»
как в таком случае настраивать проекты если разные версии Ruby 1.8 и 1.9 под Nginx + Passenger, чтобы последний запускал как надо?
blog.phusion.nl/2010/09/21/phusion-passenger-running-multiple-ruby-versions/
Вкратце, они предлагают на системном руби ставить одни проекты (1.8.7), а потом с помощью RVM в стандалон-режиме запускать другие на той версии рубей, какая нужна для каждого проекта. Ну и на эти пессенджеры, отличные от системного заводить юзеров через РеверсПрокси. image
Вот как, интересная идея.
А если через Passenger запускать системный Ruby 1.8, а через Unicorn + RVM пускать 1.9 как вариант обойтись без обратного прокси?
Эм… чето я немного не понимаю что вы хотите сделать? выставлять наружу Passenger или Unicorn? без apache или nginx перед ними? насчет пассенжера незнаю хорошая ли это идея, и вообще как это сделать, а вот насчет Unicorn'а скажу что это плохая идея. Он не расчитан на медленных клиентов, возьмите Rainbows!
Pessenger в чистом виде не выставишь. В случае с апачем он в виде либы, в стандалоне юзает nginx как ядро.
Э… а можете тыкнуть в доку, где написано что Standalone версия использует nginx как ядро?
Хм… спасибо. Но мне такой вариант уже не нравится. мухи отдельно, котлеты отдельно.
Тоже вариант. И не обязательно Unicorn. В этом случае хоть Mongrel, хоть Thin.
Sign up to leave a comment.

Articles