On 19/10/05, eoghan <ruby / redry.net> wrote:
> Brian Schröäer wrote:
> > On 19/10/05, eoghan <ruby / redry.net> wrote:
> >> Hello
> >> Im doing a simple test. I have 2 files:
> >> mouse.rb
> >> ---------
> >> my_string = 'blah'
> >>
> >> rabbit.rb
> >> ---------
> >> require 'foo'
> >>
> >> print my_string
> >>
> >> eoghanj$ /opt/local/bin/ruby bar.rb
> >> bar.rb:3: undefined local variable or method `my_string' for
> >> main:Object (NameError)
> >>
> >> Im simplified my example down to this; and I cant see what im doing
> >> wrong... hope its not too stupid.
> >> I read this part about irb restrictions, but im not sure it applies?
> >> http://www.rubycentral.com/book/irb.html
> >> Thanks
> >> Eoghan
> >>
> >>
> >
> > Unlike in php or c require and load do not simply replace the
> > statement with the file, but are carefull not to introduce any local
> > variables. Try the following.
> >
> > mouse.rb
> > ---
> > module AnimalConstants
> >   MOUSE_NAME = "Mickey Mouse"
> > end
> >
> > rabbit.rb
> > ---s
> > require 'mouse'
> >
> > p AnimalConstants::MOUSE_NAME
> >
> > Constants and Globals are imported. (Note that you do not need to
> > structure your constants using a module, it was just to show this
> > effekt.)
> >
> > regards,
> >
> > Brian
>
> Thanks I understand what you are saying... however consider the
> following example from whys guide (and maybe im missing something here
> again...)
> http://www.poignantguide.net/ruby/chapter-4.html#section3
>
> wordlist.rb
> ===========================================================
>   code_words = {
>     'starmonkeys' => 'Phil and Pete, those prickly chancellors of the
> New Reich',
>     'catapult' => 'chucky go-go', 'firebomb' => 'Heat-Assisted Living',
>     'Nigeria' => "Ny and Jerry's Dry Cleaning (with Donuts)",
>     'Put the kabosh on' => 'Put the cable box on'
>   }
> ===========================================================
>
> i assume this should be saved to a file too...?
> ===========================================================
>   require 'wordlist'
>
>   # Get evil idea and swap in code words
>   print "Enter your new idea: "
>   idea = gets
>   code_words.each do |real, code|
>     idea.gsub!( real, code )
>   end
>
>   # Save the jibberish to a new file
>   print "File encoded.  Please enter a name for this idea: "
>   idea_name = gets.strip
>   File::open( "idea-" + idea_name + ".txt", "w" ) do |f|
>     f << idea
>   end
>
> This doesnt work either. For me at least. Any ideas?
> Eoghan
>
>

Hello Eoghan,

this is a known bug in _why's tutorial. It would be a good idea if it
were fixed in the tutorial, as this question comes up from time to
time on this mailing list. Change code_words to CODE_WORDS and it
works.

regards,

Brian

--
http://ruby.brian-schroeder.de/

Stringed instrument chords: http://chordlist.brian-schroeder.de/