Re: Anyone know why __END__ and DATA don''t work in Rails?

pharrington
2009-09-11T18:33:02Z

On Sep 11, 12:12 pm, Gavin
<ga...-YMj/zd8x6QpKMzDMP321V2ksYUyLi9NM@public.gmane.org>
wrote:
> When writing Ruby you have the option to end the file early with
> __END__. Anything after the __END__ is assigned to a constant called
> DATA which is available within the file.
>
> I recently tried using this in Rails and it didn''t work. Instead I
get
> an uninitialized constant exception. Anyone know why?
>
> Has it been disabled in Rails?
>
> thanks
>
> Gavin

The DATA constant is only created for the running script. Thus,
require''d files do not get the DATA constant.

see the following:

xeno@amrita:~  $ cat data.rb
puts DATA.read
__END__
helloooooo
xeno@amrita:~  $ cat d2.rb
require ''data''
xeno@amrita:~  $ ruby data.rb
helloooooo
xeno@amrita:~  $ ruby d2.rb
/home/xeno/data.rb:1:in `<top (required)>'': uninitialized
constant
DATA (NameError)
        from d2.rb:1:in `require''
from d2.rb:1:in ` ''
xeno@amrita:~  $