Avete iniziato a usare rbenv, magari a partire da questo articolo qui e sembrava tutto chiaro, ma poi è successo.
Non avete aggiornato, avete installato gemme varie, tutto filava liscio ma poi un qualcosa (un progetto, un lavoro) ha fatto si che il vostro ecosistema ruby andasse in conflitto con quello che dovevate fare dopo. E adesso?
Per rimediare, approfondiamo i concetti di base dell’altra volta. Partiamo da due concetti base (facciamo tre): rbenv è uno script autocontenuto nella vostra home, rbenv l’avete installato via git, rbenv è fatto di plugin.
Quello che vi capita, lasciando abbandonato il tutto per un po’ è quella sensazione “funzionava all’installazione ma poi”. Bene. In questo caso, può non essere vero.
rbenv si aggiorna!
Sembra incredibile ma provenendo da un git, se fate rbenv update lui si aggiorna. Da solo. L’avete fatto ma non pare che cambi nulla, la lista dei ruby possibili da installare è carente/ferma a versioni vecchie… che succede?
rbenv funziona a plugin
E proprio per questa ragione non basta aggiornare il “solo” rbenv ma anche il plugin che tiene traccia delle versioni di ruby. Il plugin (l’unico) che avete installato se non avete mai approfondito oltre è ruby-build che va aggiornato a mano. Per fare questo ci sono due opzioni andare a mano nella directory di ruby-build e lanciare un git pull:
mizio@thaumiel:~$ cd .rbenv/plugins/ruby-build/
mizio@thaumiel:~/.rbenv/plugins/ruby-build$ git pull
Already up to date.
O meglio ancora, installare un plugin! tra i plugin interessanti c’è l’ottimo rbenv-update che (indovina) aggiunge il comando update al vostro rbenv in modo che si occupi LUI di aggiornare tutto. Installarlo è facile, basta digitare:
git clone https://github.com/rkh/rbenv-update.git "$(rbenv root)/plugins/rbenv-update"
Quindi poi è possibile fare semplicemente rbenv update:
mizio@thaumiel:~$ rbenv update
Updating rbenv
Updating rbenv-gem-migrate
Updating rbenv-update
Updating ruby-build
Reloading rbenv
| done
il gem caos
I più attenti avranno visto che nella lista dei plugin che stavo aggiornando ce ne è uno che non hanno. quel rbenv-gem-migrate infatti è sospetto. Semplicemente il plugin in questione fa una cosa molto comoda: vi permette di installare in una botta sola (ovvero con un comando) le gem che avete in una versione a un’altra versione (di solito appena installata). Es rbenv migrate 1.9.1 2.4.5. L’unica volta che l’ho usato ha funzionato ed è molto comodo se, come me, non sempre fate progetti strutturati con bundler e gemfile. Volete installarlo? Semplice:
git clone https://github.com/nabeo/rbenv-gem-migrate.git "$(rbenv root)/plugins/rbenv-gem-migrate"
Quindi poi potete usare la sua sintassi come da “help” in linea:
mizio@thaumiel:~$ rbenv migrate --help
Usage: rbenv migrate
Usage : rbenv migrate <from_version> <to_version> <gem command options>
Piccolo reminder, non ricordi le versioni? ecco:
mizio@thaumiel:~$ rbenv versions
system
2.0.0-p648
2.4.5 (set by /home/mizio/.rbenv/version)
mizio@thaumiel:~$ rbenv migrate 2.0.0-p648 2.4.5
(ci mette un po’ a seconda di quante gem avete installato…)