Ruby未初始化常量名称错误

Ruby未初始化常量名称错误,ruby,class,Ruby,Class,我有两个ruby文件。首先是 require 'www/poster' poster = Poster.new() 第二个('www/poster.rb')是 问题是,当我运行第一个文件时,我得到一个错误: in `<main>': uninitialized constant Poster (NameError) 没关系。代码在Ruby 1.8.6中运行良好,在升级到1.9.1p129(2009-05-12修订版23412)[i386-mswin32]后开始出现问题。有什么解

我有两个ruby文件。首先是

require 'www/poster'

poster = Poster.new()
第二个('www/poster.rb')是

问题是,当我运行第一个文件时,我得到一个错误:

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

没关系。代码在Ruby 1.8.6中运行良好,在升级到1.9.1p129(2009-05-12修订版23412)[i386-mswin32]后开始出现问题。有什么解决方法吗?

您的代码中绝对没有任何东西会导致Ruby 1.9中的行为与Ruby 1.8中的行为不同。事实上,当我将您发布的代码复制并粘贴到两个文件中时,它们的工作原理与预期的完全相同,在以下所有配置中:

  • MRI Ruby 1.8.6(2009-03-31 patchlevel 368)[i386-mingw32]
  • YARV Ruby 1.9.1p129(2009-05-12修订版23412)[i386-mingw32]
  • JRuby 1.4.0dev(ruby 1.8.7p174)(2009-08-246586)(Java热点(TM)客户端VM 1.6.0_14-ea)[x86 Java]
  • JRuby 1.4.0dev(ruby 1.9.1p0)(2009-08-246586)(Java热点(TM)客户端VM 1.6.0_14-ea)[x86 Java]
    • 我遇到了这个错误

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

      错误的原因是我用小写字母“m”拼写了DataMapper

      请发布显示您描述的行为的最小可运行代码段。在这里,您的代码在填写…之后运行得很好,错误的“…”表示一些跳过的代码,但是感谢您的努力,在我的例子中,有一些unicode连接的错误,ruby解释器由于某种原因不想报告:/
      require ...
      class Poster
      
      end
      
      __END__
      class Poster #original class here
      
      `<class:Employee>': uninitialized constant Employee::Datamapper (NameError)
      
      class Employee
        include Datamapper::Resource
        property :id,             Serial
      ....