2011-11-30 10 views
11

Ho un Gemfile con un repo git privata nel seguente formato:Bundler: utilizzare sempre ultima revisione del ramo git in Gemfile

gem 'magic_beans', :git => "[email protected]:magic_beans.git', :branch => 'super_beans'

Quando ho bundle install, il Gemfile.lock lo blocca a uno specifico Revisione SHA.

Posso chiedere a bundler di controllare e utilizzare sempre l'ultimo commit SHA e/o aggiornare Gemfile.lock? Notare che quando spingo gli aggiornamenti sul ramo super_beans non sto modificando la versione gem.

Idealmente, ogni volta che eseguo bundle esso controlla il repository git upstream per una nuova revisione SHA del ramo.

risposta

19

Non è così che funziona il bundler. Il punto è consentire il versioning senza soluzione di continuità delle dipendenze. (in particolare in modo da sapere esattamente quale versione del codice è distribuita in un dato momento).

Se si desidera l'ultima versione, è necessario eseguire.

bundle update magic_beans 

Questo è esattamente la stessa funzionalità se hai appena detto

gem "rails" 

Io suggerirei però, se si dispone di una serie di cose specifiche che si desidera aggiornare quindi aggiungere un binario personalizzato (dire un file eseguibile denominato bundle_update)

#!/usr/bin/env bash 
bundle install 
bundle update magic_beans 

Poi basta fare una ./bundle_update quando si desidera aggiornare queste cose.

+0

Se cambio ': git' per usare un': percorso', invece, 'bundle install' usa ogni volta il SHA più recente. Continuerò a usare 'bundle update', ma non penso che sia necessariamente la soluzione ideale. Dopotutto, nel mio Gemfile non sto esaminando un ': revision' ma un': branch'. Grazie per l'input! – pithyless

+1

So che questo è molto vecchio, ma l'impostazione di ': path' si aggiorna sempre perché viene caricata da una directory, non da un repository git o da una gemma remota. ': path' è ottimo per lo sviluppo di due progetti insieme a livello locale, ma si interrompe non appena si inizia a collaborare. –

1

È possibile eseguire bundle update per aggiornare tutti o gems specifici alla loro versione più recente disponibile, come indicato nello docs.

Sarebbe di aiuto?

+1

Immagino che se l'app e il gem repos si appartengano entrambi, e la gemma subisca molte piccole modifiche, è doloroso anche fare un commit sull'app principale per puntare all'ultima commit in ogni momento. – lulalala

1

Dopo la ricerca attraverso i documenti che ho finalmente trovato il modo magico per fare questo:

bundle update magic_beans --source magic_beans

Che è quello di aggiornare solo il magic_beans gemma, ma non toccare altre gemme bloccate. Il doc su questo è: http://bundler.io/man/bundle-update.1.html

+0

Il primo 'magic_beans' non è necessario. Puoi semplicemente fare il 'bundle update - source magic_beans'. – lukeasrodgers

Problemi correlati