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 DATAwhenever 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.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register LoginAdvertisement