2010-12-12 6 views
1

application utilise des rails 2.2.2 obtenir l'erreur suivante sur gem râteau installerméthode non définie carte » pour nil: NilClass

merci!

D:\web>rake gems:install --trace 
(in D:/web) 
rake aborted! 
undefined method `map' for nil:NilClass 
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems.rb:223:in `activate' 
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:35:in `require' 
D:/web/vendor/rails/activesupport/lib/active_support.rb:56 
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' 
D:/web/vendor/rails/railties/lib/tasks/misc.rake:18 
D:/web/vendor/rails/railties/lib/tasks/rails.rb:4:in `load' 
D:/web/vendor/rails/railties/lib/tasks/rails.rb:4 
D:/web/vendor/rails/railties/lib/tasks/rails.rb:4:in `each' 
D:/web/vendor/rails/railties/lib/tasks/rails.rb:4 
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' 
D:/web/Rakefile:10 
C:/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2383:in `load' 
C:/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2383:in `raw_load_rakefile' 
C:/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2017:in `load_rakefile' 
C:/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling' 
C:/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2016:in `load_rakefile' 
C:/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2000:in `run' 
C:/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling' 
C:/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run' 
C:/Ruby/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:31 
C:/Ruby/bin/rake:19:in `load' 
C:/Ruby/bin/rake:19 

D:\web> 
+0

pouvez-vous reformater votre question, en faisant la piletrace entière formatée en code (sélectionnez-la et appuyez sur le bouton "101010")? Merci – iain

Répondre

3

Vous ne devez pas utiliser les gemmes rake: installez avec la version old rails. Problème principal Il est possible que la version gem installée ne soit pas prise en charge avec la version actuelle de l'application (si la version n'est pas définie)

Mais maintenant, le problème est avec les rails de connexion. Vous devez donc renommer le répertoire du fournisseur et essayer rake gems: installer (ou mieux essayer d'installer chaque gemme séparément avec la version minimale requise par gem install somegem -v =)

+0

Merci Alex! Oublié ... face à cela avant. Tu as raison. – Jay

0

Ce n'est pas rake gem install --trace mais rake gems:install --trace.

gem install est la commande pour installer manuellement gems. gems:install est la tâche de rake que Rails fournit pour installer les gemmes mentionnées dans votre configuration.

+0

même résultat exact: =] – Jay

1

J'ai déjà vu ce problème, et ça descend à "quelle gemme est en train de gâcher les choses?". Je viens de voir cela avec une gemme vendue qui avait un fichier .specification qui a verrouillé rails = 2.3.8 (et je passais à la version 2.3.9)

Je suis sur rubygems 1.3.7 (donc peut-être que cela aurait été plus facile à comprendre dans une version plus récente)

je me suis dit qu'il en allant dans mes railties locales .../fichier gem_dependency.rb et la modification de cette méthode:

def add_load_paths 
     self.class.add_frozen_gem_path 
     return if @loaded || @load_paths_added 
     if framework_gem? 
     @load_paths_added = @loaded = @frozen = true 
     return 
     end 
     gem self 
     @spec = Gem.loaded_specs[name] 
     @frozen = @spec.loaded_from.include?(self.class.unpacked_path) if @spec 
     @load_paths_added = true 
    rescue Gem::LoadError 
    end 

pour remplacer Gem :: ChargeErreur avec l'exception ....

rescue Exception 
    puts "problem with gem #{name}" 
    end 

Ensuite, j'ai couru rake gems (un test simple pour voir que les choses sont bien chargées) et il m'a montré les deux gems qui étaient verrouillés à des versions spécifiques, et j'ai été capable de modifier leurs fichiers .specification pour lever les restrictions .

Questions connexes