Pull to refresh

Используйте бандлер вместо практики rvm gemset per project

Ruby *
Наша команда долгое время использовала известную практику rvm gemset per project. Однако, после работы с пакетным менеджером nodejs мы поняли, что гораздо удобнее складывать зависимости в папку проекта (дефолт для нодовского пакетного менеджера).

Немного покопавшись в документации бандлера я обнаружил, что тоже самое можно сделать и на его основе.
Читать дальше →
Total votes 51: ↑48 and ↓3 +45
Views 7.2K
Comments 32

Связка rvm + Rails + Nginx + Unicorn или деплоим рельсы правильно

Ruby on Rails *
Sandbox
Целью данной заметки я ставлю в подробностях описать организацию сервера для Rails приложений в самой популярной на данный момент связке: rvm + Rails + Nginx + Unicorn. К написанию статьи побудило отсутствие полной пошаговой документации по этой связке, понятной не только ядреным профессионалам этой области. Далее я попытаюсь подробно, шаг за шагом, описать идеологически правильный процесс организации сервера для обслуживания нескольких Rails приложений (на примере одного) — если у вас есть абсолютная уверенность в том, что на подопытной машине никогда не будет работать более одного приложения — настройка может быть существенно короче и проще. Хочу предупредить, что тонкости, касающиеся работы приложения под высокой нагрузкой в статье не описываются, т.к. цель ставилась иная — заставить работать приложение в связке и сократить количество конфликтов с другими приложениями до минимума.
Читать дальше →
Total votes 68: ↑63 and ↓5 +58
Views 54K
Comments 135

RVM — подробно

Ruby *

RVM — Ruby Version Manager
Программа для управления версиями Ruby.

Как быть если один проект использует Ruby 1.8.7, а другой 1.9.2? А что если при этом у вас 2 проекта под версией 1.9.2, но с разными наборами гемов? Хотелось бы вам иметь отдельные наборы gem's для каждого проекта?

Основные задачи:
1. Физическое разделение версий ruby и наборов гемсетов
2. Возможность иметь несколько версий ruby и переключаться между ними
3. Возможность для каждой версии ruby иметь несколько gemsets — наборов gem's и переключаться между ними

Под катом будут описаны:
1. Установка RVM
2. Работа с разными версиями Ruby
3. Работа с gemsets
4. Задание окружения под отдельный проект с помощью .rvmrc
5. Команды RVM которые могут оказаться полезными
6. Шпаргалка по основным командам RVM

Читать дальше →
Total votes 53: ↑48 and ↓5 +43
Views 92K
Comments 44

Видео с конференции RailsClub'Moscow (30 апреля 2011г.)

Ruby *
1. Галинский Дмитрий «Генерация PDF и ODF»
В лекции идёт речь об инструментах для генерации отчётов, счетов и форм для печати в формате PDF. Лектор рассматривает преимущества и недостатки разных инструментов, приводит примеры их использования.

2. Руденко Андрей «Эффективное %s с ZMQ»
ZMQ — что, как и зачем оно вам надо.

3. Моисеев Сергей «Пакетная обработка в RoR»
Пакетная обработка, на примере Сервиса по массовой обработке большого количества книг. Книги из Pdf в SWF, с поддержкой выделения и копирования из полученных книг текста. Очень часто книги были в виде картинок, вставленных в pdf, только для того чтобы соблюсти последовательность страниц.
Система из программ print2flash (для печати нескольких книг сразу). Всё под win окружением.

4. Бараблин Михаил «Rvm и наши серверы»
Как работать с Ruby, gem и не болеть.

5. Лазурейкис Павел «Интеграция RoR-приложений с социальными сетями»
Виджеты для Вконтакта, использование OmniAuth, Devise+OmniAuth

6. Карпунин Дмитрий «Front-end Rails-приложений»
Front-end Rails-приложений основанный на БЭМ (Блок, Элемент, Модификатор), семантическая вёрстка, IE6, Применение БЭМ на практике, Структура стилей.

Приятного просмотра.
Читать дальше →
Total votes 36: ↑35 and ↓1 +34
Views 1.1K
Comments 8

Разворачиваем приложение на чистой Убунте: от A до Z

Ruby on Rails *
Итак, у вас есть чистая Ubuntu, в консоли открыто ssh-соединение с сервером и консоль вас заманчиво приглашает — «root@my-awesome-host:~#» — и больше ничего нет. А хочется запустить и показать всему миру какое-то рельсовое приложение. Поехали от супа до орехов.

Читать дальше →
Total votes 65: ↑48 and ↓17 +31
Views 3.4K
Comments 43

rbenv и ruby-build: лёгкая альтернатива RVM

Ruby *
RVM велик и могуч, здесь тяжело поспорить. Но тому, кто занимается локальной разработкой, возможно хочется иметь что-то менее монструозное. Такой вариант есть, в базовом варианте это набор из двух утилит, а имено rbenv и ruby-build.
Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Views 15K
Comments 18

Почему всё-таки стоит пользоваться RVM, а не rbenv+ruby-build

Ruby *
Translation
В противовес к этой статье. Мне удалось немного покопаться с rbenv, наткнуться на несколько граблей, и решить копнуть поглубже. И очень ко времени попалась на глаза вот эта статья, перевод которой я на ваше обозрение и предоставляю.

На сегодняшний день уже не осталось тех, кто не слышал о RVM или rbenv. Как содействовавший разработке RVM, я подумал, что стоит выяснить, что именно делает rbenv. Чтение исходного кода дало мне представление об rbenv, и, к сожалению, я не нашёл никакого нового трюка для работы в оболочке командной строки. Тем не менее, я понимаю, как обе этих утилиты работают, и могу найти разницу в их работе. Обе утилиты предоставляют возможность переключать активную версию Ruby.

Основная разница состоит в способе переключения Ruby.
Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Views 6.5K
Comments 20

Когда нужен RVM, а когда достаточно rbenv

Ruby *
Sandbox
В данной статье я не буду вдаваться в подробности работы RVM и rbenv. Информации по данным штуковинам хватает на просторах интернета. Здесь же я хочу попытаться раскрыть вопрос: когда стоит использовать rbenv, а когда нет?

Цель


Для этого давайте для начала разберемся для чего же создавался RVM, а для чего rbenv. Для этого достаточно взглянуть на возможности обоих систем.
Читать дальше →
Total votes 26: ↑21 and ↓5 +16
Views 15K
Comments 29

Подготовка rails-окружения для установки Redmine используя RVM

Ruby on Rails *
Для корректной работы многих rails-приложении требуются конкретные версии состовляющих компонент, таких как версия ruby, версия самого rails, а так же rake, rubygems и т.д. И скорее всего в вашем дистрибутиве Linux (в моём случае это Ubuntu 10.04 LTS Server) версии этих компонент будут отличаться. Можно пойти простым путём — поставить ruby нужной версии из исходных кодов, а всё остальное с помощьью rubygems. Но мы же хотим получить надёжный и воспроизводимый результат, а систему, при этом не превратить в свалку.
Читать дальше →
Total votes 15: ↑10 and ↓5 +5
Views 5.5K
Comments 15

Установка ruby в Ubuntu с помощью rbenv-installer

Ruby *
Recovery mode
Sandbox
Tutorial
На хабре уже есть несколько статей о rbenv (раз, два, три), но ни в одной не упомянут очень удобный инструмент rbenv-installer. Этой статьёй я и заполню этот пробел.

Прежде чем начну описывать установку, хочу сказать чем меня порадовал rbenv и почему я перешёл на него с RVM.

В одном из моих проектов мне понадобилось периодически запускать задачи (rake tasks) с помощью cron. Задачи для cron-а я формировал и записывал в crontab с помощью гема whenewer. Тогда я ещё пользовался RVM и cron в лог писал что-то вроде:
bundle: command not found

Искал решение с помощью гугла и нашёл в issues whenewer-а упоминание о такой же проблеме. Тикет был закрытым и упоминалось что в rbenv всё работает. Установил я rbenv и без каких-либо дополнительных настроек мои cron-задачи стали работать так как я и хотел. С того дня в новых проектах я только rbenv использую.
Читать дальше →
Total votes 14: ↑9 and ↓5 +4
Views 12K
Comments 10

Ruby на вашем сервере может работать в 2 раза медленее из-за RVM

Ruby *Ruby on Rails *

Просматривая сегодня «Ruby Inside», наткнулся на статью Justin Kulesza Is Your Application Running with Ruby – Slow?. Статья от 6 ноября, но на Хабре об этой ситуации ни слова. А суть статьи вот в чем: ребята переносили свое приложение с сервера на Solaris на сервер с Ubuntu и использовали RVM для компиляции Ruby. Однако после переноса они заметили, что приложение стало как-будто бы тормознутее. Сначала погрешили на железо, но быстро выяснили, что дело в RVM, а именно в том, что RVM совершенно не использует оптимизацию при компиляции.
Читать дальше →
Total votes 61: ↑59 and ↓2 +57
Views 16K
Comments 34

Срочно обновляем RVM (Ruby Version Manager)

High performance *Ruby *Ruby on Rails *
Sandbox
Совсем недавно во многих ruby-блогах, сообществах, да и на хабре, было написано немало постов о том что RVM дурно влияет на производительность MRI-версии ruby (официальный интерпретатор языка) по причине того что установщик не учитывает оптимизации компилятора GCC. Конечно для этого недуга были «лекарства», но применять их приходилось ручками, причем довольно-таки прямыми. Так вот, спешу всех обрадовать что в последних версиях RVM (начиная с версии 1.17.0) ситуация изменилась, и конечно же в лучшую сторону, теперь Вы снова можете полностью положится на менеджера версий ruby. Все что Вам нужно сделать — это обновиться до последней версии.
Читать дальше →
Total votes 37: ↑34 and ↓3 +31
Views 17K
Comments 30

Ускоряем запуск Ruby on Rails используя набор патчей RVM railsexpress

Ruby on Rails *
Sandbox
Эта статья для тех, кто хочет ускорить запуск рельс, а заодно ускорить работу интерпретатора ruby.
О том как установить RVM (Ruby version manager) уже написано много статей, поэтому я перейду сразу к делу.
Список патчей в RailsExpress для Ruby 1.9.3-p362
(это последняя версия руби на момент написания статьи)
Applying patch railsexpress/01-fix-make-clean.patch
Applying patch railsexpress/02-railsbench-gc.patch
Applying patch railsexpress/03-display-more-detailed-stack-trace.patch
Applying patch railsexpress/04-fork-support-for-gc-logging.patch
Applying patch railsexpress/05-track-live-dataset-size.patch
Applying patch railsexpress/06-webrick_204_304_keep_alive_fix.patch
Applying patch railsexpress/07-export-a-few-more-symbols-for-ruby-prof.patch
Applying patch railsexpress/08-thread-variables.patch
Applying patch railsexpress/09-faster-loading.patch
Applying patch railsexpress/10-falcon-st-opt.patch
Applying patch railsexpress/11-falcon-sparse-array.patch
Applying patch railsexpress/12-falcon-array-queue.patch

Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Views 7.1K
Comments 14

Автозапуск rails+rvm+unicorn+nginx на FreeBSD

Ruby on Rails *
Sandbox
Во-первых, нужно сказать «спасибо» автору этого руководства. Без него я бы долго ещё не сел за написание сего поста: кучу проблем пришлось бы решать самостоятельно. Однако в моём случае ситуация была чуть другая (не Debian, а FreeBSD), да и вопрос с автозапуском unicorn остался открытым. Встречавшиеся мне на просторах интернета решения на изящество тоже не претендовали: делать по службе на веб-приложение — моветон. Во FreeBSD эта проблема решается на первый взгляд просто — созданием «метаслужб», позволяющих запускать более одного экземпляра (в качестве примера — FreeBSD jails). Однако, как это часто бывает, есть нюансы…
Читать дальше →
Total votes 5: ↑4 and ↓1 +3
Views 5K
Comments 3

RVM Autolibs: Автоматическое управление зависимостями и Ruby 2.0

Engine Yard corporate blog Ruby *Ruby on Rails *
Translation

Прошлый месяц ознаменован началом новой вехи для рубистов — релиз Ruby 2.0.0. Вместе с ним обновлённый RubyGems и новые зависимости, включая OpenSSL. Ранее RVM почти ничего не предпринимала для разрешения зависимостей, устанавливая вместо этого LibYAML, так как он был нужен для функционирования RubyGemsк. Ситуация изменилась с появлением OpenSSL, так как это является бОльшей зависимостью. Раньше для Ruby 2.0.0-rc RVM устанавливал OpenSSL. Однако компилирование OpenSSL не лёгкая задача, используя LibYAML.
Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Views 4.5K
Comments 0

Установка «Redmine» на «Linux Ubuntu» с прозрачной аутентификацией в домене (Apache, Passenger, RVM, MySQL)

Монастырёв и Ко corporate blog
Tutorial
Данным постом хотелось бы начать цикл статей о том, как мы адаптировали под свои нужды трекер задач «Redmine».

Около 2-х лет назад мне пришлось достаточно сильно изменить профиль своей деятельности, и от системного администрирования уйти в разработку на фреймворке «Ruby on Rails». Нужно было адаптировать «Redmine» под нужды достаточно большого IT-отдела, а потом и под нужды компании в целом. Тогда, я столкнулся, с относительной не простотой установки «Redmine». И комплексной статьи для новичков очень не хватало!

Есть несколько способов установки ROR-приложения, которым является «Redmine». В данной статье речь пойдет об установки на web-сервер «Apache», с использованием «Passenger» и «RVM». В качестве сервера баз данных, мы до сих пор используем «MySQL» (вернее MariaDB), хотя и подумываем о переезде на «PostgreSQL».
Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Views 77K
Comments 14

Рубин на рельсах: продакшен и деплой для чайников

Website development *Ruby on Rails *
Tutorial
Год назад я довел свое первое рельсовое приложение до приемлемого вида. Вопрос использования готового кода в продакшене ранее меня не заинтересовал. С чего вдруг? Несложный язык, лаконичный фреймворк — уж деплой-то явно не сложнее, чем преодоление ментального тормоза после PHP.

Команда разработчиков Rails рекомендует использовать Phusion Passenger, он что-то вроде mod_php — установил, разместил файлы и полетел. На момент изучения вопроса на форумах хватало баталий о производительности решений; Passenger в них фаворитом не значился.

Совета относительно альтернативы я спросил у техдиректора сайта с миллионом уников в сутки — тот отправил меня гуглить на тему Nginx и Unicorn. Инструкция по настройке продакшена, найденная на Хабре, датировалась 2009 годом. Помимо прочего, ее просто переполняли изъяны уроков «Как нарисовать сову».

Отдельные составляющие процесса кое-где разжеваны по-английский, но монолитный tutorial на глаза так и не попался. В традициях рельсового сообщества лежит принцип, предписывающий делиться результатами и опытом решения проблем.
Делюсь
Total votes 38: ↑30 and ↓8 +22
Views 31K
Comments 81

Настройка сервера и деплоя: rvm, rails, puma, nginx, mina

Ruby on Rails *
Sandbox

Предыстория


На создание этой статьи меня толкнула недавняя публикация о деплое. В приведённой статье описан способ разворачивания проекта на основе rbenv, я же опишу ситуацию с rvm и настройкой upstart.

Задачи и требования


Итак, дано: простейшее RubyOnRails-приложение. В случае разворачивания своего проекта я ставил перед собой следующие задачи:
  • ОС Ubuntu LTS 14.04;
  • Веб-сервер Nginx;
  • Сервер приложения Puma;
  • Использование RVM для установки ruby требуемой версии;
  • Автоматический запуск приложения при запуске VPS-сервера, возможность управлять приложением как службой;
  • Автоматизация процесса деплоя с помощью mina;

Почему Ubuntu?
Просто я к ней привык (точнее к её производной — Linux Mint).

Почему puma, а не unicorn или passenger?
О пуме я слышал неплохие отзывы, а у unicron страшненький сайт. Passenger, на мой взгляд, нарушает принцип единственной обязанности — я хочу иметь веб-сервер и приложение-сервер.

Почему RVM?
Я к нему привык — у меня он установлен на локальной машине, хочу его видеть и на production.

Почему mina?
Она действительно проще чем capistrano и при этом быстрее. Скорость достигается за счёт того, что для каждой задачи capistrano создаёт отдельное ssh-соединение. Mina же формирует shell-скрипт и выполняет его в рамках одного соединения.

В данном случае задача легко разбивается на 3 этапа:
  1. Убедиться, что приложение корректно запускается (пока без автоматизации);
  2. Настроить сервер так, чтобы наше rails-приложение работало как полноценная служба;
  3. На основе этого настроить автоматизированное разворачивание с помощью mina.

Читать дальше →
Total votes 20: ↑16 and ↓4 +12
Views 11K
Comments 7

RubyMine 2017.1: Docker, RuboCop, автогенерация Rails-тестов, улучшения для Puppet

JetBrains corporate blog Ruby *Ruby on Rails *Puppet *
Привет, Хабр! Недавно мы выпустили RubyMine 2017.1, новую версию нашей IDE для Ruby и Rails, и уже обновили её до более стабильной версии 2017.1.1. Пора рассказать о том, что в ней нового.


  • Docker
  • Создание RVM-гемсетов
  • RuboCop
  • Мгновенное создание Rails-тестов
  • Улучшения для разработки модулей Puppet
  • Структура проекта Puppet
  • Улучшения для JavaScript
  • Обновленный поиск в VCS
Total votes 23: ↑21 and ↓2 +19
Views 4K
Comments 3

Установка Redmine за 15 минут (RVM + RoR + Unicorn + Nginx)

PostgreSQL *SQL *Nginx *

В общем задача звучала такустановить Redmine на сервер, где веб-сервер на nginx.

Так как Redmine написан на RoR, то необходимо иметь RoR среду, но проблема в том, что разные RoR приложения могут требовать разные версии окружения. В моем случае необходимо было предусмотреть возможность установки RoR приложений с разным окружением, а значит нужен менеджер версий, который будет разворачивать нужную среду в нужном месте.

Читать далее
Total votes 4: ↑0 and ↓4 -4
Views 13K
Comments 4