2013-03-07 26 views
7

Sto cercando un approccio più snello e robusto per mantenere intatto il mio ambiente rvm dopo un aggiornamento del sistema operativo. Sto usando Mountain Lion, rvm 1.18.16 e homebrew, che ha readline, gettext, libxml2, libxslt, qt, gtk + - le gemme che di solito rompono per me sono nokogiri e capybara-webkitIl modo migliore per aggiornare tutti i rubini e le gemme RVM dopo l'aggiornamento del sistema?

Due volte ora dopo l'aggiornamento Mountain Lion e XCode, le mie gemme di estensione nativa e Ruby hanno subito una rottura e devo passare del tempo a far funzionare di nuovo tutto. Devo chiedermi se sto seguendo le migliori pratiche per ottenere tutti i componenti rvm aggiornati dopo tale aggiornamento di sistema.

Ciò che accade di solito è che le gemme con estensioni native si collegano alle vecchie librerie che non sono più disponibili, specialmente con i problemi di libxml che circondano Mountain Lion. Ecco i passaggi fondamentali che faccio per riportare il mio sistema online su tutti i progetti (ho circa 8 versioni di Ruby installate sotto rvm, quindi è noioso!).

Innanzitutto, aggiornare Mountain Lion e XCode tramite l'App Store.

In secondo luogo, Aggiornamento homebrew con:

brew update 
brew upgrade 

quindi elencare i tuoi rubini e iniziare la ricompilazione ognuna con ...

rvm list 
rvm reinstall ruby-1.9.2-p290 
rvm reinstall ruby-1.9.3-p392 
... 

NOTA: ho provato:

rvm all do reinstall 

ma questo mi ha dato questo errore: "reinstallare: comando non trovato"

Next up, passo attraverso ogni rubino ed eseguire incontaminata delle gemme (questo ha effetto collaterale di ricompilazione tutte le gemme estensione nativa):

rvm use ruby-1.9.3-p392 
gem pristine --all 

Infine, vai a ciascun progetto ed eseguire il seguente:

bundle install 

Non sono sicuro che l'ultimo passaggio sia strettamente necessario - alcuni progetti sembravano essere ok, altri no, ma l'esecuzione di questo sembrava chiarire gli ultimi problemi rimasti.

Sicuramente c'è un modo più semplice per gestire questo processo !? Ho usato solo Mountain Lion e RVM per un paio di mesi, ma in quel momento, due aggiornamenti di sistema hanno ucciso la maggior parte del mio ambiente di lavoro in Ruby. Ho un sacco di versioni di Ruby installate a causa del mio lavoro come consulente e ho incontrato molti ambienti di sviluppo, quindi mi piacerebbe davvero riportarlo a un processo facilmente ripetibile.

Qualche idea? Quanto sopra può essere ulteriormente migliorato?

+0

Da mpapis su IRC#rvm: Se non si utilizzano le opzioni di comando --path o --deployment con bundle, quindi rvm reinstall all risolverà anche i problemi relativi alle gemme in bundle di ciascun progetto. –

risposta

11

si può fare:

rvm reinstall all 

accodamento --force di saltare le domande.

Nota che eseguirà la reinstallazione completa incluso gem pristine di ogni gemma, è necessario prestare attenzione all'output in quanto verrà notificato all'utente le gemme che non sono riuscite a eseguire l'azione pristine.

+1

Interessante! Questo non è nemmeno elencato come azione quando si esegue rvm senza argomenti. È anche apparentemente non un comando documentato sulla pagina https://rvm.io/rubies/installing/ (né su altri che ho controllato) ... così che si pone la domanda ... dove è documentata? –

+1

sì, era una funzione sperimentale e ho perso la documentazione, cercherò di aggiungerlo per aiutare – mpapis

+1

Grazie per il tuo contributo su #irc. Ho presentato il biglietto per questo –

Problemi correlati