루비에서는이 DATA
IO 객체를 통해 임의의 사용 __END__
후 정적 텍스트를 저장하기 위해 정말 편리합니다 :클래스 컨텍스트에서 DATA를 참조 할 수없는 이유는 무엇입니까?
puts DATA.read # Prints "This is the stuff!"
__END__
This is the stuff!
그러나, 나는 예기치 않은 오류를 얻을 새로운 클래스의 맥락에서 데이터 객체를 참조 할 때 (Ruby 1.9.3과 2.0에서는 분명히) :
class Foo
STUFF = DATA.read # <class:Foo>: uninitialized constant Foo::DATA (NameError)
end
class Foo
STUFF = ::DATA.read # <class:Foo>: uninitialized constant DATA (NameError)
end
내가 어떻게이 작업을 할 수 있었는지 생각해보십시오.
페이지의
File.read(__FILE__).split("\n__END__\n", 2)[1]
를 사용하는 경향이 : [HEREDOCS] (http://blog.jayfields.com/2006/12/ruby-multiline-strings-here-doc-or. html). – Ajedi32@ Ajedi32 : 네, heredoc을 고려했으나 실제 사용 사례는 후행 데이터로 가장 잘 작동 할 대형 ERB 템플릿을 저장하고 있습니다.heredoc을 사용하여 클래스 정의 범위 내에 맞춰야하지만 어쩌면 별도의 파일에서 읽지 않으려 고하는 댓가로 지불해야 할 수도 있습니다. – maerics
'STUFF = DATA.read'에서 오류를 확인할 수 없습니다 : [snippet] (http://ideone.com/6dbCoE). – steenslag