Ruby未初始化的常量NameError

时间:2009-08-24 08:29:50

标签: ruby class

我有两个ruby文件。第一个是

require 'www/poster'

poster = Poster.new()

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

require ...

class Poster ... end

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

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

如果我用

替换原始代码
require ...
class Poster

end

__END__
class Poster #original class here

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

2 个答案:

答案 0 :(得分:1)

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

  • 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-24 6586)(Java HotSpot(TM)Client VM 1.6.0_14-ea)[x86-java]
  • JRuby 1.4.0dev(ruby 1.9.1p0)(2009-08-24 6586)(Java HotSpot(TM)Client VM 1.6.0_14-ea)[x86-java]

答案 1 :(得分:0)

我收到了这个错误

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

编译时。这是代码

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

错误的原因是我使用小写的'm'

拼写了DataMapper