2013-04-29 3 views
0

Je vérifie un nouveau commit dans un repo qui fonctionne pour tout le monde. J'exécute une tâche rake, qui appelle ce code et génère une erreur undefined, même si Gem.source_index semble être définie.Rake tâche parfois échoue, erreur indéfinie

module Gem 
    puts "in module Gem" 
    def self.source_index=(index) 
    puts "defining the source index" 
    @@source_index = index 
    end 
end 

module Rails 
    class GemDependency < Gem::Dependency 
    attr_accessor :lib, :source, :dep 

    def self.add_frozen_gem_path 
     puts "Oh hi there" 
     puts "the source index is " + Gem.source_index // ERROR HERE 
    end 

La sortie est

in module Gem 
Oh hi there 
rake aborted! 
undefined method `source_index' for Gem:Module 

Qu'est-ce qui ne va pas?

Répondre

1

Gem.source_index a été déprécié dans Ruby 1.9 et supprimé dans Ruby 2.0 *. Je suppose que vous utilisez Ruby 2.0 maintenant, ce qui vous donnerait cette erreur exacte.

Notez que vous définissez un setter pour celui-ci, mais pas un getter.

(* Techniquement, il est probablement lié à une version spécifique de Rubygems plutôt que Ruby. Une installation 1.9.3 avec une installation de mise à niveau rubygems reviendrait à la même chose.)

+1

Cela a fonctionné! J'ai fait 'rvm list' et ensuite' rvm use ree-1.8.7-2012.02' –