RVM vs rbenv - jakie jest wasze zdanie?

Co sądzicie o RVM i czemu lepiej przejść na rbenv jak piszą na wielu stronach. W mojej opnii:
RVM - za

  • krótkie komędy - łatwe do zapamiętania
  • izolowane środowiska gemsety

RVM - przeciw

  • wiele osób uważa, że nadpianie cd przez co wydłużenie czasu jego wykonania to minus, ja uważam, niech RVM nadpisuje co chce a dłuższu czas wykonania na o pare ms na maszynie developerskiej to i chyba nikomu nie robi różnicy

rbenv - za

  • nie znalazłem

rbenv - przeciw

  • za długie komendy instalacyjne
  • brak izolacji gemów -> do normlanej pracy trzeba uzywać bundle lub stworzyc ręcznie 3 aliasy

A teraz jakie jest wasze zdanie ?

RVM działa, znam składnie, jest dobrze udokumentowane. Nie przekonują mnie argumenty o nadpisywaniu cd (nie obchodzi mnie to). Nie miałem okazji używać rbenv i na razie nie zamierzam (a z tego co widzę, nie jest jakoś specjalnie bardziej przyjazne niż rbenv). Zostaję przy RVM.

u mnie rvm działa.

cd jest nadpisywane dla basha. Na zsh są użyte dostępne tam hooki.

Also: http://tenderlovemaking.com/2011/11/30/psa-the-number-of-gems-installed-on-your-system-can-impact-rails-boot-time/

rbenv po dołożeniu kilku pluginów potrafi być równie funkcjonalne co RVM. Niestety nawet z nimi jest upierdliwe w użyciu.
A wyjątkowo bucerski sposób, w jaki Stephenson “wypromował” rbenv (long story short: kosztem RVM, oraz w taki sposób, że Wayne postanowił porzucić dalsze rozwijanie RVM) wywołuje u mnie niesmak na samo przypomnienie. Jeśli mogę, staram się trzymać z dala od dzieł buców.
Tutaj decyzję mam o tyle łatwiejszą, że rbenv nie tylko jest napisany przez buca, ale też kiepsko próbuje zastąpić narzędzie które świetnie mi działa.

rbenv bo jest mniej intruzywny i mniejszy. Jestem wyjątkowo wrażliwy na monkey patchowanie podstaw działania systemu (choć przyznaję, że z tym cd nigdy nie miałem problemu, ale chodzi o zasady). Poza tym RVM promował kiedyś instalację przez sudo zdalnego skryptu (WTF?). Generalnie, RVM to fantastyczny, ale bardzo odważny hack i po prostu trochę się go boję :wink:

rbenv po dołożeniu kilku pluginów potrafi być równie funkcjonalne co RVM. Niestety nawet z nimi jest upierdliwe w użyciu.
A wyjątkowo bucerski sposób, w jaki Stephenson “wypromował” rbenv (long story short: kosztem RVM, oraz w taki sposób, że Wayne postanowił porzucić dalsze rozwijanie RVM) wywołuje u mnie niesmak na samo przypomnienie. Jeśli mogę, staram się trzymać z dala od dzieł buców.
Tutaj decyzję mam o tyle łatwiejszą, że rbenv nie tylko jest napisany przez buca, ale też kiepsko próbuje zastąpić narzędzie które świetnie mi działa.[/quote]
Co jest takiego upierdliwego w rbenv?

Krzyż na drogę, ale…

RVM to trojan w bashu DDoS’ujący systemy :stuck_out_tongue_winking_eye: (https://github.com/wayneeseguin/rvm/tree/master/scripts/functions) naprawde wydaje ci się że do pracy potrzebujesz tych wszystkich funkcji ? Działa dopóki przestaje działać, od kilku tygodni head jest uszkodzone, rvm + non-interactive mode w powłoce = fork bomb i zabetonowanie całego systemu. Nie jest to pierwszy fork bomb w RVM, w przeszłości było ich już kilka (nawet nie mam zamiaru tego zgłaszać im szybciej te narzędzie zniknie z wyobraźni progrmaistów Ruby tym lepiej)

Przez lata można było wszystko poinstalować przez ./configure --program-suffix=19 a odkąd rubygems dodało API w gemspec do poprawnego tworzenia bin executables i odkąd jest bundler można rozwiązać każdy problem pracy w hybrydobywm środowisku.

Moje zdanie jest takie, próba przeforsowania rbenv i rvm jako rozwiązania problemów kontroli wersji ruby to objaw niekompetencji i lenistwa. To że można wszystko obejść ln -s nie znaczy że powinno się to robić, zwłaszcza na produkcyjnych systemach :wink:

Dostaniesz projekt w rails 1.2.6 do utrzymania i drobnych poprawek (bez mowy o rewrite) to wrócimy do tej rozmowy. To, że Ty nie widzisz zakresu stosowalności pewnego rozwiązania, nie znaczy że jest ono nikomu niepotrzebne.

Jak dostaniesz projekt w Rails 1.2.6, to prawdopodobnie i RVM nie pomoże bo będziesz musiał sobie jakiegoś starego Linuxa postawić w maszynie wirtualnej żeby chciało ruszyć (stare wersje gemów mogą wymagać starych bibliotek systemowych, patrz RMagick)

@hubertlepicki - RVM pomoże - istnieją problemy, których nie rozwiąże, co nie zmienia faktu, że rvm i bundler pomagają rozwiązać większość :wink:

Interesujące porównanie obu systemów: http://niczsoft.com/2011/11/what-you-should-know-about-rbenv-and-rvm/

Ależ miałem dokładnie taką sytuację. Projekt w Rails 1.2.6 pełniący funkcję menedżera obrazków (taki Dragonfly na sterydach). Po pierwsze RMagick nie zmieniał API (oraz w 1.2.6 nie było sposobu na określenie wersji wymaganego gema), więc banglało na najnowszym. A dla eksperymentu spróbowałem też zainstalować starszą wersję RMagicka i, jeśli dobrze pamiętam (to było ponad pół roku temu), bez marudzenia się zlinkował z najnowszym libmagick.

+1 rbenv 100% subiektywnie. Podoba mi się, że gemami zarządza bezpośrednio bundler i leżą w vendor/bundle. Prosta instalacja, brak problemów z kompilacją. Przeszedłem po kilkugodzinnym boju z rvm o readline.

Ale to RVM tak zassysa na bashu jak i na zsh?

Przez kilka ostatnich dni w wolnej chwili próbowałem utworzyć jakiś nowy projekt (sam szkielet), i wykorzystując opisy w internecie stwierdzam, że w rbenv jest to poprostu niewykonalne. Żadna z opisanych metod, które znalazłem nie zadziałała, więc tutaj duży minus dla rbenv.

ostatnio robiłem porządki w sprawach około konsolowych, co stanowiło idealny pretekst do przetestowania rbenv. Wywaliłem po dwóch dniach, stwierdzając, że w imię jakiejś chorej “czystości” pozbawiam się wielu fajnych ficzerow (przy rbenvie wszystko trzeba wywoływać przez bundle exec) - wróciłem do rvma, dziękuję, dobranoc.

Np co nie działa?

Jakich ficzerów na przykład?

wszystkich, które ma rvm, a nie ma rbenv. Pierwsze dwa z brzegu: Gemsety(ok, jest bundler, ale przypadek Tomasha pokazuje, że czasem zdarza się nie mieć możliwości wykorzystania bundlera) i aliasy. Plus wspomniany wcześniej bundle exec foo vs foo.

do rbenv jest też plugin do gemsetów skoro ktoś tego bardzo potrzebuje.