výběr nástroje pro správu verzí Ruby často sestává ze dvou hráčů: rbenv a RVM. Ten byl široce přijímán jako norma, a to díky své široké sadě nástrojů. Rbenv se však svým lehkým přístupem stal silným uchazečem.
pod kapotou
jak tedy tyto nástroje provedou práci? To je místo, kde se věci s RVM trochu děsí. RVM přepíše příkaz shellu cd
, aby načetl aktuální proměnné prostředí Ruby. Přepsání může nejen způsobit neočekávané chování, ale také to znamená, že rubíny a drahokamy jsou načteny při přepínání adresářů.
rbenv dělá věci za běhu pomocí podložky k provádění příkazů.
* na přední stranuPATH
je vložen adresář podložek (~/.rbenv/shims
).
* adresář obsahuje podložku pro každý příkaz Ruby.
* operační systém vyhledá shim, který odpovídá názvu příkazu, který jej následně předá rbenv a určí verzi Ruby, která se má spustit.
konfigurace rbenv pro aplikaci je jednoduchá:
# .ruby-version
2.3.0
proměnná RBENV_VERSION
také usnadňuje rychlé zadání verze Ruby pomocí příkazového řádku. Je to první v řadě, když rbenv kontroluje aktuální verzi Ruby.
delegování pracovní zátěže
v RVM je několik funkcí, díky nimž je těžší nástroj. RVM přichází s vlastním instalačním mechanismem Ruby:
rvm install ruby-2.3.0
s rbenv, můžete buď nainstalovat Ruby sami (uložením do ~/.rbenv/versions
) nebo využít ruby-build
, plugin, který bude instalovat verze pro vás. Stejně jako rbenv má ruby-build recept na domácí vaření.
brew install ruby-build
rbenv install 2.3.0
RVM dává možnost oddělit závislosti podle projektu s gemsets. Gemsety, nicméně, jsou spíše minulostí, díky rozšířenému používání Bundler.
s Bundler, jeden může snadno spravovat drahokamy pro projekt.
gem install bundler
# Gemfile in root of application
source 'https://rubygems.org'
gem 'rails'
gem 'rspec'
bundle install
ačkoli většina projektů nyní používá Bundler, plugin rbenv-gemsets
je ekvivalentem gemsetů rbenv.
Light is Might
zatímco univerzálnost RVM může být vynalézavá, pokud jde o správu verzí Ruby, může být přehnaná. Použití rbenv vám umožní udržet věci jednoduché a nechat jiné nástroje zpracovat další aspekty procesu. primární zaměření rbenv na Ruby versioning vede k nastavení a konfiguraci šetrnější k dev. S našimi aplikacemi používáme rbenv již několik let. Ve spolupráci s Capistrano, rbenv-capistrano
dělá Ruby verze údržba pro naše nasaditelné prostředí Jednoduché.