Съвет за използването на rvm

  1. Когато се работи по даден проект е добра практика да се прави отделен gemset за дадения проект. Gemset е folder, където се инсталират различните gem-ове, когато човек изпълни gem install gemname. Нов gemset се съсздава с rvm gemset create gemset_name. След като се създаде, трябва изрично да се каже на rvm да го ползва с rvm gemset use gemset_name. За да укажем на rvm да ползва дадена версия на Руби (примерно 2.1.0), ползваме команда rvm use 2.1.0. Понякога обаче е досадно всеки път когато започнете нова работна сесия по даден проект да изпълнявате двете use команди. Затова човек може да направи следното (за примера примеам, че папката ми се казва fmi и gemset-а, който съм създал също съм кръстил fmi):

    • в директорията, в която е проекта, човек създава файл с име .ruby-version и съдържание ruby-2.1.0
    • втори файл с име .ruby-gemset и съдържание fmi

    Това е всичко. Сега всеки път когато от конзолата влезете в дадената папка (cd ~/Documents/fmi примерно) rvm автоматично ще ползва правилната версия и gemsest. Можете да проверите това като изпълните следните команди в конзолата:

    • cd ~/Documents/fmi
    • ruby -v
    • rvm gemset name

    Накрая - удобно е човек да изпълни кода директно в Sublime Text 2 с cmd+b / ctrl + b. За да накарате ST2 да ползва версията на Руби, която rvm избира, отворете файл ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/Ruby/Ruby.sublime-build на OS X или ~/.config/sublime-text-2/Packages/Ruby/Ruby.sublime-build на Linux и му сложете това съдържание (като сложите съответното потребителско име вместо frank):

    {
      "cmd": [ "/Users/frank/.rvm/bin/rvm-auto-ruby", "$file" ],
      "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
      "selector": "source.ruby"
    }
    
  2. В момента повече се предпочита Bundler, вместо rvm + gemset-и. Bundler може да се ползва с всякакви проекти и не ви налага нуждата да ползвате какъвто и да е Ruby version manager (каквото е rvm или rbenv).

    Аз лично ползвам rbenv в комбинация с Bundler.

    Ако се чудите кое от двете да изберете, ви давам гледната точка на rbenv, Защо да ползваме rbenv вместо rvm?

  3. Аз лично предпочитам да ползвам RVM с gemset. Имам три причини за това:

    • Поддържам проекти без Bundler.
    • RVM ми е по-приятен за workstation. Може да прави магия, но аз харесвам тази магия. rbenv ми е приемлив само за сървъри.
    • Ако всеки проект си има gemset, няма нужда от bundle exec пред разни команди като rspec, cucumber и прочее. Последното е от огромна важност когато ползвате spork, понеже bundle exec може да отнеме повече време от самия тест, което е тъпо.

    Допълнително, Bundler все още е controversial в Rubygems екипа, така че ако нямате лукса да сте единствено в Bundler проекти, gemset-овете и помагат.

Трябва да сте влезли в системата, за да може да отговаряте на теми.