2010-08-27 14 views
28

Ruby Version Manager ci consente di utilizzare un file .rvmrc in ogni progetto per impostare la versione di ruby ​​e il set di gemme da caricare. Questo file dovrebbe essere archiviato al controllo del codice sorgente? O questo presume troppo sull'ambiente di lavoro degli altri sviluppatori?Accedete al vostro file rvmrc?

risposta

31

Source Control Management è principalmente circa riproducibilità: sei in grado di riprodurre una versione di uno sforzo di sviluppo basato su ciò che hai memorizzato nel tuo SCM?

Se il file .rvmrc è necessario per consentire a qualsiasi sviluppatore del progetto di essere in grado di lavorare (con le risorse utente corrette), quindi sì, è necessario eseguirne la versione.

Come menzionato in RVM Best Practices:

No. 2 - Controllare il rvmrc nel controllo del codice sorgente.

Selezionando la rvmrc citato in controllo del codice sorgente a fianco la vostra applicazione, il gioco è garantire a tutti gli utenti dispongono di un ambiente coerente quando si sta utilizzando rvm.

Automatizzando anche le installazioni gemset e simili (ad esempio, controlla il file rvmrc nel repository del sito rvm o il rvmrc del repostory TEDxPerth), inoltre, puoi iniziare con la semplice modifica della directory.

Oltre a questo, è anche possibile effettuare automaticamente le installazioni in modo da configurare l'ambiente specifico dell'applicazione.

Altri sviluppatori possono trasformare di uso di gemsets sul loro RVM con:

echo rvm_ignore_gemsets_flag=1 >> ~/.rvmrc 

Questo li renderà usano GemSET predefinita sempre.

+0

punto interessante. Tengo il mio rvmrc nella mia home directory, dovrò considerare di fare altrimenti. –

+4

Questo non costringe altri sviluppatori del tuo team a utilizzare un gemset con lo stesso nome del creatore .rvmrc? – ybakos

+3

In genere non includo un gemset in rvmrc se il progetto utilizza bundler. Se non usa bundler, dagli un nome gemset che corrisponde al progetto con un flag --create in modo che venga creato automaticamente. –

11

In realtà vorrei sconsigliare di mantenere .rvmrc in SCM. Due ragioni specifiche:

  1. Se si utilizza gemsets a far valere altri sviluppatori di utilizzare lo stesso GemSET (mentre alcuni potrebbero preferire di avere tutte le loro gemme nel GemSET globale).

  2. È difficile per gli altri sviluppatori eseguire il progetto su una diversa versione di Ruby. Certo, in produzione potrebbe essere eseguito su 1.9.2-p290, ma perché non dovrei essere autorizzato a eseguire l'app localmente su 1.9.3-p0?

Generalmente si fa rispettare troppo su ogni sviluppatore (stessa storia come database.yml, che pure non dovrebbe essere tenuto in SCM). Una nota nel README del progetto della versione Ruby "production running" è abbastanza imo.

+0

Penso che dipenda anche dal progetto.Ho una situazione in cui gli sviluppatori eseguono diverse versioni in rubino dello stesso progetto (piattaforme diverse, requisiti) dalla produzione alla progettazione. I nostri * test * ci dicono che tutto funziona correttamente. La libertà di cambiare i rubini ci consente di diagnosticare problemi specifici della versione e di eseguire benchmark. – foz

Problemi correlati