2015-11-16 14 views
6

Dal nulla, e senza modificare nulla, ho iniziato a ricevere questo errore (e così anche altre persone nel team).NoMethodError: metodo undefined `spec 'per nil: NilClass - active_utils, factory_girl e altre gemme non riuscite

Questo sta accadendo per alcune gemme (quelle che specificano un ramo git) e sta accadendo solo quando ricreamo l'ambiente (in vagabondo). Non abbiamo cambiato nulla.

Qualche idea? Maggiori informazioni segue:

Using active_utils (2.0.0) from git://github.com/Shopify/active_utils.git (at v2.0.0) 
NoMethodError: undefined method `spec' for nil:NilClass 
An error occurred while installing active_utils (2.0.0), and Bundler cannot continue. 
Make sure that `gem install active_utils -v '2.0.0'` succeeds before bundling. 

Using factory_girl (2.6.5) from https://github.com/thoughtbot/factory_girl (at 2.6.x) 
NoMethodError: undefined method `spec' for nil:NilClass 
An error occurred while installing factory_girl (2.6.5), and Bundler cannot continue. 
Make sure that `gem install factory_girl -v '2.6.5'` succeeds before bundling. 
  • Running "install gioiello active_utils -v '2.0.0'" funziona, ma il paniere sempre fallisce.
  • cache di gemma Azzerato, ma non ha aiutato

sembra che sia tutte le voci in Gemfile specificando un ramo che ha iniziato in mancanza.

gem 'active_utils', :git => 'git://github.com/Shopify/active_utils.git', :branch => 'v2.0.0' 
gem "will_paginate", :git => "git://github.com/mislav/will_paginate.git", :branch => "2-3-stable" 

risposta

13

Quindi, risulta che questo è stato causato da un recente aggiornamento a RubyGems. Forzare una versione precedente ha funzionato.

gem update --system 2.4.8 
1

Mentre c'è già una risposta accettata, ho incontrato lo stesso problema.

Alla fine, stavo usando una versione obsoleta del bundler e l'aggiornamento all'ultima versione l'ho risolto. Maggiori informazioni sul bug da qui: https://github.com/bundler/bundler/issues/3560

Il bug si verifica prima della versione 1.9.3 di bundler.

È possibile aggiornare bundler eseguendo gem install bundler e quindi eliminando la versione più vecchia Bundler via gem uninstall bundler -v old.bundler.version

Se stai usando rvm, vi consiglio di installare questo sul GemSET globale della versione ruby ​​corrente eseguendo rvm use @global prima di fare l'installazione.