🏢 PlaceMaker | 25% off for February including new Google Earth data imports!
Learn more
DATA in Ruby 1.8 working?
-
http://shifteleven.com/articles/2009/02/09/useless-ruby-tricks-data-and-end
<span class="syntaxdefault">puts DATA</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">read<br /><br />__END__<br /><br />Hello World<br /><br />Lorem Ipsum Dolor Sit Amet</span>
I'm just getting
NameError: uninitialized constant DATA
whenever I try to use DATA - whether in SketchUp Ruby or IRB.Anyone got it working?
-
Line 969 of Ruby.c - it's there in Ruby 1.8. So what am I doing wrong?
<span class="syntaxdefault"><br />rb_compile_file</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">fname</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> f</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> line_start</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">script </span><span class="syntaxkeyword">&&</span><span class="syntaxdefault"> ruby__end__seen</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">  rb_define_global_const</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"DATA"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> f</span><span class="syntaxkeyword">);<br />}<br /></span><span class="syntaxdefault">else if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">f </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> rb_stdin</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">  rb_io_close</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">f</span><span class="syntaxkeyword">);<br />}<br /><br /></span><span class="syntaxdefault">if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">ruby_parser_stack_on_heap</span><span class="syntaxkeyword">())</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">  rb_gc</span><span class="syntaxkeyword">();<br />}<br /></span><span class="syntaxdefault"> </span>
-
meh!
Seem to be that DATA isn't per file...
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/16387
http://www.ruby-forum.com/topic/209628Workaround:
data = File.read(__FILE__) =~ /^__END__\n/ && $' || ''
-
So assuming you want some data encapsulated within the script file itself, that will use it.
A Here Doc, or Array or Hash, would seem to be a much easier solution.
Advertisement