Comments 20
>>наткнутся на несколько граблей, и копнуть поглубже. И очень ко времени попалась на глаза вот эта статья, перевод которой я на ваше обозрение и предоставляю.
Вы взорвали мой мозг.
Вы взорвали мой мозг.
+1
1. RVM хорош на девелоперской машине, но его поддержка в capistrano — это сплошная боль.
2. Гемсеты нужны для старых приложений на rails 2.x и без bundler (RedMine, например).
3. Чтобы использовать rbenv в capistrano нужно прописать всего лишь одну строчку:
И если на сервере rbenv ещё не установлен, то в capistrano ничего не сломается (в отличии от rvm, который заменяет default_shell).
2. Гемсеты нужны для старых приложений на rails 2.x и без bundler (RedMine, например).
3. Чтобы использовать rbenv в capistrano нужно прописать всего лишь одну строчку:
set :default_environment, { "PATH" => "/usr/local/rbenv/shims:/usr/local/rbenv/bin:$PATH", "RBENV_VERSION" => "1.9.3-p0" }
И если на сервере rbenv ещё не установлен, то в capistrano ничего не сломается (в отличии от rvm, который заменяет default_shell).
+3
у нас production практически весь переезжает на system wide RVM. никаких проблем не отмечено.
0
на мой взгляд rvm c capistrano работает просто прекрасно, вот какая настройка в моем проект:
require 'rvm/capistrano'
set :ruby_version, '1.9.2'
set :rvm_ruby_string, "#{ruby_version}@#{application}"
set :rvm_path, "/usr/local/rvm"
set :rvm_bin_path, "/usr/local/rvm/bin"
set :rvm_type, :system
и это еще много, так как я храню все в /usr/local, если бы я использовал дефолтное положение в $HOME/.rvm то обойтись можно было первыми двумя строчками
require 'rvm/capistrano'
set :ruby_version, '1.9.2'
set :rvm_ruby_string, "#{ruby_version}@#{application}"
set :rvm_path, "/usr/local/rvm"
set :rvm_bin_path, "/usr/local/rvm/bin"
set :rvm_type, :system
и это еще много, так как я храню все в /usr/local, если бы я использовал дефолтное положение в $HOME/.rvm то обойтись можно было первыми двумя строчками
+1
А теперь попробуйте сделать cap deloy:check или cap deploy:setup на сервере без rvm.
0
Ясное дело что rvm с начала нужно поставить. Думаю вы не станете деплоить приложение на сервер на котором, скажем, не установлен ruby. Ну а там где установить возможности нет, например взять всеми любимый Heroku, то потдержка RVM в нем имеется из коробки, чего нельзя сказать о rbenv.
+1
Купили суровые сибирские мужики умную японскую бензопилу. Попробовали суровые сибирские мужики японскую умную пилу на березке стройной.
— Вжик, — сказала умная японская пила.
— Оооо, — сказали суровые сибирские мужики.
Попробовали суровые сибирские мужики умную японскую пилу на дубе вековом.
— Вжжик, — сказала умная японская пила.
— Ооооо, — сказали суровые сибирские мужики.
Попробовали суровые сибирские мужики умную японскую пилу на рельсе железной.
— Хр… хрррр… — сказала умная японская пила.
— Агааа! — воскликнули суровые сибирские мужики.
Это я к тому, что зачем запускать деплой на сервере без RVM, если деплой настроен на RVM? Давайте еще на сервере без руби его запустим.
— Вжик, — сказала умная японская пила.
— Оооо, — сказали суровые сибирские мужики.
Попробовали суровые сибирские мужики умную японскую пилу на дубе вековом.
— Вжжик, — сказала умная японская пила.
— Ооооо, — сказали суровые сибирские мужики.
Попробовали суровые сибирские мужики умную японскую пилу на рельсе железной.
— Хр… хрррр… — сказала умная японская пила.
— Агааа! — воскликнули суровые сибирские мужики.
Это я к тому, что зачем запускать деплой на сервере без RVM, если деплой настроен на RVM? Давайте еще на сервере без руби его запустим.
+6
Проблема в
Недавно наткнулся на это, пытаясь задеплоить с машины с rbenv на сервер с rvm. Поскольку rvm локально не был установлен, require вылетал с ошибкой. Проще было перевести сервер на rbenv, чем пытаться это исправить.
require 'rvm/capistrano'
Недавно наткнулся на это, пытаясь задеплоить с машины с rbenv на сервер с rvm. Поскольку rvm локально не был установлен, require вылетал с ошибкой. Проще было перевести сервер на rbenv, чем пытаться это исправить.
+1
Чтобы добавить rbenv в whenever нужно дописать 3 строчки в config/schedule.rb:
С rvm так не выйдет.
set :rbenv_root, "/usr/local/rbenv" env :PATH, "#{rbenv_root}/shims:#{rbenv_root}/bin:$PATH" env :RBENV_VERSION, "1.9.3-p0"
С rvm так не выйдет.
+1
set :job_template, «rvm-shell 1.9.3-p0 -c ':job'»
+2
Даа, это тяжело:
А в config/schedule.rb у меня вообще не в курсе rvm там или rbenv. Там просто написаны задачи на выполнения :)
set :whenever_command, "bundle exec whenever"
set :whenever_environment, defer { stage }
set :whenever_identifier, defer { "#{application}_#{stage}" }
А в config/schedule.rb у меня вообще не в курсе rvm там или rbenv. Там просто написаны задачи на выполнения :)
+1
Как я понял, основной аргумент против rbenv — лишние 50 мс для запуска обёртки (почему именно 50? сколько раз нужно запускать исполняемые файлы, чтоб это было хоть сколько-то заметно?). Между тем сложность решения с rvm выше.
Кстати, в rvm уже исправили проблему с «висом» mc при переходе в каталог с недоверенным .rvmrc? И исправима ли она в принципе без отключения .rvmrc?
Кстати, в rvm уже исправили проблему с «висом» mc при переходе в каталог с недоверенным .rvmrc? И исправима ли она в принципе без отключения .rvmrc?
+1
2. Перегружает команды оболочки, такие как cd. Это опасно и может привести к ошибкам.
И это регулярно и приводило к проблемам. И закончилось тем что автор выключил фичу про доверие к новым файлам .rvmrc. Вот коммит github.com/wayneeseguin/rvm/commit/9a9fef58731e822b03789445a859fcdb69e57fff и он был сделан примерно через пару дней после релиза первой версии rbenv.
И это регулярно и приводило к проблемам. И закончилось тем что автор выключил фичу про доверие к новым файлам .rvmrc. Вот коммит github.com/wayneeseguin/rvm/commit/9a9fef58731e822b03789445a859fcdb69e57fff и он был сделан примерно через пару дней после релиза первой версии rbenv.
+1
5. Управляет gemset'ами. Bundler — лучший способ управлять зависимостями приложения. Если проект ещё не использует Bundler, есть возможность установить плагин rbenv-gemset. Использование gemset'ов опционально, но рекомендовано, так как оно упрощает процесс разделения. Само существование плагина rbenv-gemset только подтверждает это. Даже могучий Bundler не всегда может разобраться в запутанных отношениях gem'ов. Ко всему прочему, не всегда удобно запускать Rake вызывая 'bundle exec rake'.
Кого не устраивает писать каждый раз bundler exec могут поставить mpapis.github.com/rubygems-bundler/ и писать после только .
Кого не устраивает писать каждый раз bundler exec могут поставить mpapis.github.com/rubygems-bundler/ и писать после только .
+1
Sign up to leave a comment.
Почему всё-таки стоит пользоваться RVM, а не rbenv+ruby-build