ݺߣ

ݺߣShare a Scribd company logo
Бараблин Михаил
Mikhail.barablin@gmail.com
Ruby enVironment Manager
● Привет!
● Как работать с версиями Ruby, gem
● ... и не болеть
● mad-box.ru/rvm.odp
2/16
Проблема окружения
● Много версий гемов
● Много наборов гемов
● Разные интерпретаторы
3/16
Что такое RVM
● Автор
● Wayne E. Seguin
● rvm.beginrescueend.com
● Управление
● Окружением
● Запускаемыми файлами
● Исходниками и бинарниками
● Установленными файлами
4/16
Зависимости
● Bash
● Git
● Curl
● ( Subversion )
5/16
Установка
● Root || user
● Скрипт из интернетов
● bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
● Еще немного зависимостей
● build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g
zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev
libxslt-dev autoconf libc6-dev ncurses-dev
● Читайте вывод
6/16
Первые шаги
● rvm info
● rvm list known
● rvm install
● rvm use --default
7/16
Интерпретаторы
● rvm list
● rvm install
● Для каждого набор гемов
8/16
Gemset
● rvm use <ruby>@<gemset>
● rvm gemset
● create
● export → default.gems
● import ← default.gems
● delete
● empty
● copy
Бараблин Михаил
Mikhail.barablin@gmail.com
Gemset 2
● @global – гемы доступные для всех
gemset'ов
● Копируем установленные гемы
● rvm system;
● rvm gemset export system.gems; rvm 1.8.7; rvm
gemset import system
10/16
Продвинутая установка
● Packages
● rvm package install ree_dependencies
● Configuration
● rvm install 1.9.2 –with-openssl-dir $rvm_path/usr
● Compilation
● export optflags="-O0 -ggdb"
● Static
● rvm --static install 1.9.2
11/16
Рабочие настройки
● .rvmrc
● /etc/rvmrc
● ~/.rvmrc
● ~/projects/yet_another_project/.rvmrc
● Гемы, устанавливаемые по умолчанию
● ~/.rvm/gemsets/default.gems
12/16
Интеграция
● Bash/Zsh
● [[ -r $rvm_path/scripts/completion ]] && . $rvm_path/scripts/completion
● rvm-prompt
● Hooks ( ~/.rvm/hooks/[hook name] )
● after_use
● before_install, after_install
● after_do, after_cd
Бараблин Михаил
Mikhail.barablin@gmail.com
●Интеграция 2
● Capistrano
● require "rvm/capistrano"
● set :rvm_ruby_string, 'ree@rails3'
● Emacs, Vim, TextMate
● Passenger, Unicorn...
Бараблин Михаил
Mikhail.barablin@gmail.com
Запуск в разных окружениях
● запуск скриптов
● rvm ruby myscript.rb
● rake задачи
● rvm rake spec
● gem ...
● exec …
● Subshell
● echo $(rvm 1.9.1 ; ruby -v)
15/16
Удаление
● Сбросить магию
● rvm reset
● Удалить только ~/.rvm/rubies/...
● rvm uninstall
● Удалить все
● rvm remove <версия>
● Удалить вообще все
● Implode
16/16
Резюме
● Нет смысла не использовать
● Используйте RVM везде
Mikhail.barablin@gmail.com
Спасибо

More Related Content

What's hot (19)

13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
HappyDev-lite
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworks
sigmaray
Константин Заикин "Как начать разработку под WP7"
Константин Заикин "Как начать разработку под WP7"Константин Заикин "Как начать разработку под WP7"
Константин Заикин "Как начать разработку под WP7"
Yandex
Python & Web: От простого к сложному
Python & Web: От простого к сложномуPython & Web: От простого к сложному
Python & Web: От простого к сложному
Ilya Bolkhovsky
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Dev_Party
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
Kirill Danilov
HBase on Dev{Highload}
HBase on Dev{Highload}HBase on Dev{Highload}
HBase on Dev{Highload}
Alex Chistyakov
Web performance 101 [GDG nsk webdev meetup #3]
Web performance 101 [GDG nsk webdev meetup #3]Web performance 101 [GDG nsk webdev meetup #3]
Web performance 101 [GDG nsk webdev meetup #3]
Eugene Chekan
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
endeveit
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
SerVal site monitoring presentation - Презентация SerVal
SerVal site monitoring presentation - Презентация SerValSerVal site monitoring presentation - Презентация SerVal
SerVal site monitoring presentation - Презентация SerVal
Elitesru
What do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptWhat do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScript
Vasiliy Teliatnikov
State of the Standardized Web. YaC 2014
State of theStandardized Web. YaC 2014State of theStandardized Web. YaC 2014
State of the Standardized Web. YaC 2014
Yandex
Ci на базе docker
Ci на базе dockerCi на базе docker
Ci на базе docker
Ivan Grishaev
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ..."nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
MoscowJS
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
HappyDev-lite
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworks
sigmaray
Константин Заикин "Как начать разработку под WP7"
Константин Заикин "Как начать разработку под WP7"Константин Заикин "Как начать разработку под WP7"
Константин Заикин "Как начать разработку под WP7"
Yandex
Python & Web: От простого к сложному
Python & Web: От простого к сложномуPython & Web: От простого к сложному
Python & Web: От простого к сложному
Ilya Bolkhovsky
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Dev_Party
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
Kirill Danilov
Web performance 101 [GDG nsk webdev meetup #3]
Web performance 101 [GDG nsk webdev meetup #3]Web performance 101 [GDG nsk webdev meetup #3]
Web performance 101 [GDG nsk webdev meetup #3]
Eugene Chekan
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
endeveit
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
SerVal site monitoring presentation - Презентация SerVal
SerVal site monitoring presentation - Презентация SerValSerVal site monitoring presentation - Презентация SerVal
SerVal site monitoring presentation - Презентация SerVal
Elitesru
What do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptWhat do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScript
Vasiliy Teliatnikov
State of the Standardized Web. YaC 2014
State of theStandardized Web. YaC 2014State of theStandardized Web. YaC 2014
State of the Standardized Web. YaC 2014
Yandex
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ..."nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
MoscowJS

Viewers also liked (11)

Lily Character Mirrored Presentation
Lily Character Mirrored PresentationLily Character Mirrored Presentation
Lily Character Mirrored Presentation
Benjamin Pope
620-HCD-2016 Proyecto de Decreto: campaña de prevención incorporada a la paut...620-HCD-2016 Proyecto de Decreto: campaña de prevención incorporada a la paut...
620-HCD-2016 Proyecto de Decreto: campaña de prevención incorporada a la paut...
Brest Fabian Dario
Biography personnel of linkin park
Biography personnel of linkin parkBiography personnel of linkin park
Biography personnel of linkin park
Dietho Richi Tkj
KW Proposal
KW ProposalKW Proposal
KW Proposal
Bill Ireland
Partnership at Life-Book
Partnership at Life-BookPartnership at Life-Book
Partnership at Life-Book
Life-Book
Impacto de las ticImpacto de las tic
Impacto de las tic
dioxanafiorella
Digital printing machinery
Digital printing machineryDigital printing machinery
Digital printing machinery
badar masbadar
Mapa conceptual de ProteínasMapa conceptual de Proteínas
Mapa conceptual de Proteínas
Bioquimicagassos
Lab Report #2
Lab Report #2Lab Report #2
Lab Report #2
Dylan Ryan
Senior_Network_Engineer
Senior_Network_EngineerSenior_Network_Engineer
Senior_Network_Engineer
Shivkumar Swami
Función del lenguaje que practico: AmistadFunción del lenguaje que practico: Amistad
Función del lenguaje que practico: Amistad
Anahi Valenzuela
Lily Character Mirrored Presentation
Lily Character Mirrored PresentationLily Character Mirrored Presentation
Lily Character Mirrored Presentation
Benjamin Pope
620-HCD-2016 Proyecto de Decreto: campaña de prevención incorporada a la paut...620-HCD-2016 Proyecto de Decreto: campaña de prevención incorporada a la paut...
620-HCD-2016 Proyecto de Decreto: campaña de prevención incorporada a la paut...
Brest Fabian Dario
Biography personnel of linkin park
Biography personnel of linkin parkBiography personnel of linkin park
Biography personnel of linkin park
Dietho Richi Tkj
Partnership at Life-Book
Partnership at Life-BookPartnership at Life-Book
Partnership at Life-Book
Life-Book
Impacto de las ticImpacto de las tic
Impacto de las tic
dioxanafiorella
Mapa conceptual de ProteínasMapa conceptual de Proteínas
Mapa conceptual de Proteínas
Bioquimicagassos
Función del lenguaje que practico: AmistadFunción del lenguaje que practico: Amistad
Función del lenguaje que practico: Amistad
Anahi Valenzuela

Similar to Проблемы при работе с разными версиями Ruby и разными gem (16)

CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest
Docker-контейнеризация: от local до production
Docker-контейнеризация: от local до productionDocker-контейнеризация: от local до production
Docker-контейнеризация: от local до production
Roman Kudlay
Vagrant puppet
Vagrant puppetVagrant puppet
Vagrant puppet
Peri Innovations
Migrate!
Migrate!Migrate!
Migrate!
sergeymoiseev
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на Rust
Michael Pankov
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
IT-Portfolio
Varnish and Drupal.
Varnish and Drupal.Varnish and Drupal.
Varnish and Drupal.
Vlad Savitsky
Изоморфные react-приложения
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложения
Denis Izmaylov
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Roman Pavlushko
My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014
Alex Chistyakov
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Ontico
Тестирование серверной конфигурации
Тестирование серверной конфигурацииТестирование серверной конфигурации
Тестирование серверной конфигурации
Timur Batyrshin
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
Provectus
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
Alex Chistyakov
SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013
Alex Chistyakov
CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest
Docker-контейнеризация: от local до production
Docker-контейнеризация: от local до productionDocker-контейнеризация: от local до production
Docker-контейнеризация: от local до production
Roman Kudlay
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на Rust
Michael Pankov
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
IT-Portfolio
Изоморфные react-приложения
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложения
Denis Izmaylov
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Roman Pavlushko
My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014
Alex Chistyakov
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Практическое применение WebWorkers / Алексей Фомкин (Data Monsters)
Ontico
Тестирование серверной конфигурации
Тестирование серверной конфигурацииТестирование серверной конфигурации
Тестирование серверной конфигурации
Timur Batyrshin
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
Provectus
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
Alex Chistyakov
SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013
Alex Chistyakov

More from Александр Ежов (20)

Кеширование данных в БД
Кеширование данных в БДКеширование данных в БД
Кеширование данных в БД
Александр Ежов
Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015
Александр Ежов
Rails 5: awesome features and breaking changes
Rails 5: awesome features and breaking changesRails 5: awesome features and breaking changes
Rails 5: awesome features and breaking changes
Александр Ежов
Big Data и Ruby
Big Data и RubyBig Data и Ruby
Big Data и Ruby
Александр Ежов
Abstract machines for great good
Abstract machines for great goodAbstract machines for great good
Abstract machines for great good
Александр Ежов
Rubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секундуRubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секунду
Александр Ежов
Liquor, Liquid и другие безопасные языки разметки в RoR
Liquor, Liquid и другие безопасные языки разметки в RoRLiquor, Liquid и другие безопасные языки разметки в RoR
Liquor, Liquid и другие безопасные языки разметки в RoR
Александр Ежов
Vim or die
Vim or dieVim or die
Vim or die
Александр Ежов
Capistrano Rails
Capistrano RailsCapistrano Rails
Capistrano Rails
Александр Ежов
Умное кэширование в Rails
Умное кэширование в RailsУмное кэширование в Rails
Умное кэширование в Rails
Александр Ежов
Sphinx как база данных
Sphinx как база данныхSphinx как база данных
Sphinx как база данных
Александр Ежов
Emacs и Rails
Emacs и RailsEmacs и Rails
Emacs и Rails
Александр Ежов
Антикризисная презентация
Антикризисная презентацияАнтикризисная презентация
Антикризисная презентация
Александр Ежов
Eventmachine: структура evented-приложений
Eventmachine: структура evented-приложенийEventmachine: структура evented-приложений
Eventmachine: структура evented-приложений
Александр Ежов
Дэдлоки
ДэдлокиДэдлоки
Дэдлоки
Александр Ежов
Обзорное сравнение серверов приложений для Rails
Обзорное сравнение серверов приложений для RailsОбзорное сравнение серверов приложений для Rails
Обзорное сравнение серверов приложений для Rails
Александр Ежов
Приложения в плагинах
Приложения в плагинахПриложения в плагинах
Приложения в плагинах
Александр Ежов
Использования PgQ и Londste в rails-приложении
Использования PgQ и Londste в rails-приложенииИспользования PgQ и Londste в rails-приложении
Использования PgQ и Londste в rails-приложении
Александр Ежов
Масштабирование в Rails
Масштабирование в RailsМасштабирование в Rails
Масштабирование в Rails
Александр Ежов
Интернационализация и локализация Ruby on Rails. gem russian
Интернационализация и локализация Ruby on Rails. gem russianИнтернационализация и локализация Ruby on Rails. gem russian
Интернационализация и локализация Ruby on Rails. gem russian
Александр Ежов
Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015
Александр Ежов
Rubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секундуRubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секунду
Александр Ежов
Liquor, Liquid и другие безопасные языки разметки в RoR
Liquor, Liquid и другие безопасные языки разметки в RoRLiquor, Liquid и другие безопасные языки разметки в RoR
Liquor, Liquid и другие безопасные языки разметки в RoR
Александр Ежов
Eventmachine: структура evented-приложений
Eventmachine: структура evented-приложенийEventmachine: структура evented-приложений
Eventmachine: структура evented-приложений
Александр Ежов
Обзорное сравнение серверов приложений для Rails
Обзорное сравнение серверов приложений для RailsОбзорное сравнение серверов приложений для Rails
Обзорное сравнение серверов приложений для Rails
Александр Ежов
Использования PgQ и Londste в rails-приложении
Использования PgQ и Londste в rails-приложенииИспользования PgQ и Londste в rails-приложении
Использования PgQ и Londste в rails-приложении
Александр Ежов
Интернационализация и локализация Ruby on Rails. gem russian
Интернационализация и локализация Ruby on Rails. gem russianИнтернационализация и локализация Ruby on Rails. gem russian
Интернационализация и локализация Ruby on Rails. gem russian
Александр Ежов

Проблемы при работе с разными версиями Ruby и разными gem