2009-08-24 204 views
0

我有兩個ruby文件。首先是Ruby未初始化的常量NameError

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]後開始出現問題。有什麼解決方法嗎?

+1

請張貼最小的*可運行*片表現出您所描述的行爲的代碼。在填入... – sepp2k 2009-08-24 08:41:17

回答

1

你的代碼中絕對沒有任何東西會導致它在Ruby 1.9中的行爲與在Ruby 1.8中的行爲不同。事實上,當我複製粘貼&你貼到兩個文件的代碼,他們工作完全一樣都應該在以下所有配置:

  • MRI的Ruby 1.8.6(2009-03-31 PATCHLEVEL 368)[I386-的mingw32]
  • YARV紅寶石1.9.1p129(2009-05-12的修訂23412)[I386-的mingw32]
  • 的JRuby 1.4.0dev(紅寶石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

之後,你的代碼運行得很好,在錯誤的'...'中意味着一些跳過的代碼,但是感謝努力,在我的情況下有一些unicode連接的錯誤,ruby解釋器沒有不想出於某種原因報告:/ – Fluffy 2009-08-24 18:00:51

0

我編譯時得到這個錯誤

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

。下面是代碼

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

的原因錯誤是我拼寫的DataMapper以一個小寫的「m」

相關問題