2009-08-24 8 views
0

J'ai deux fichiers rubis. La première estConstante Ruby non initialisée NameError

require 'www/poster' 

poster = Poster.new() 

Le deuxième ('www/poster.rb') est

require ... 

class Poster ... end 

Le problème est, quand je lance le premier fichier, je reçois une erreur:

in `<main>': uninitialized constant Poster (NameError) 

Mais si je remplace le code d'origine avec juste

require ... 
class Poster 

end 

__END__ 
class Poster #original class here 

c'est bon. Le code a bien fonctionné dans Ruby 1.8.6, les problèmes ont commencé après la mise à niveau vers la version 1.9.1p129 (2009-05-12 révision 23412) [i386-mswin32]. Y a-t-il une solution de contournement?

+1

S'il vous plaît le plus petit * publier * runnable morceau de code qui présente le comportement que vous décrivez. Votre code fonctionne très bien ici après avoir rempli le ... – sepp2k

Répondre

1

Il n'y a absolument rien dans votre code qui le ferait se comporter différemment dans Ruby 1.9 que dans Ruby 1.8. Et en effet, quand je copier & coller le code affiché en deux fichiers, ils fonctionnent exactement comme le sont censés, dans toutes les configurations suivantes:

  • IRM Ruby 1.8.6 (2009-03-31 patchlevel 368) [i386-mingw32]
  • YARV Ruby 1.9.1p129 (2009-05-12 révision 23412) [i386-mingw32]
  • JRuby 1.4.0dev (rubis 1.8.7p174) (24/08/2009 6586) (VM Client HotSpot (TM) 1.6.0_14-ea) [x86-java]
  • JRuby 1.4.0dev (ruby 1.9.1p0) (2009-08-24 6586) (client VM HotSpot (TM) 1.6. 0_14-ea) [x86-java]
+1

bien, dans l'erreur '...' signifie un code ignoré, mais merci pour les efforts, dans mon cas, il y avait une erreur connectée unicode que l'interprète ruby ​​n'a pas ne veut pas rapporter pour une raison quelconque: / – Fluffy

0

J'ai eu cette erreur

`<class:Employee>': uninitialized constant Employee::Datamapper (NameError) 

lors de la compilation. Voici le code

class Employee 
    include Datamapper::Resource 
    property :id,    Serial 
.... 

La raison de l'erreur était que j'orthographié DataMapper avec un minuscule « m »

Questions connexes