2010-05-07 6 views
0

: 나는 푸 전에 줄을 넣어하지만 비록 진정한 해결책이 아닌 경우이 분명히 작동루비 구문 분석하기 위해

NameError: uninitialized constant Bar 

:

class Foo 
    def bar 
    return Bar.new 
    end 
end 

class Bar 
    ... 
end 

나는이 오류가 발생합니다.

주문을 고려하지 않고이를 해결하는 방법에 대한 아이디어가 있으십니까?

감사합니다.

UPDATE : Foo.new.bar를 호출 할 때와 정의하지 않을 경우

은 물론 오류가 발생합니다.

+5

오류가 발생하지 않습니다. 물론 Bar를 정의하기 전에'Foo.new.bar'를 호출 할 수는 없지만 메서드를 정의하면 잘 동작합니다. –

+0

네가 맞습니다. 그게 사실 내가 뭘 –

답변

3

Ruby 설치에 문제가 있어야합니다. 그 오류 메시지를 제공해서는 안됩니다. 나는 ISO Ruby 스펙과 RubySpec을 점검했고, JRuby 1.6.0.dev, JRuby 1.5.0RC3, IronRuby 1.0, YARV 1.9.1-p378, MRI 1.8.7-p249, 또는 JRuby 1.5.0RC3에 게시 한 코드를 &에 붙여 넣었다. Rubinius 0.11.0-dev, YARV-1.9.1-p129, MRI 1.8.7-p174, MRI 1.8.6-p369, MRI 1.7.1, MRI 1.6.0, MRI 1.5.0, MRI 1.4.0, MRI 1.3, MRI 1.2, 심지어 MRI 1.0 (1997 년까지 계속)을 보았습니다. 오류가 발생하지 않았습니다.

class Foo 
    def bar 
    return Bar.new 
    end 
end 

class Bar 
end 

puts Foo.new.bar # => #<Bar:0x823f638> 
+0

+1 테스트 환경의 포괄 성을 위해입니다 – pilcrow

+0

당신은 절대적으로 옳습니다. 코드를 변경 한 후에 오류를 재현 할 수 없습니다. 그러나 나는 그것이 내가 같은 문제를 얼마 전에 경험했다고 생각할 때 그것이 질서 정연한 것이기 때문에 그것이라고 확신했다. 내 실수 ... 게시하기 전에 더 이상 조사하지 않기 때문입니다. –

관련 문제