Real Beginner Question - (NameError)

C

CSZ

Hi !
I'm going my way through a Ruby online tutorial right now and i have
following problem:

I have two files. File one:

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'
}

makeSwamp.rb

#!/usr/bin/env ruby

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::eek:pen( "idea-" + idea_name + ".txt", "w" ) do |f|
f << idea
end

When i execute the makeSwamp.rb file i can enter a "new idea" but than i
get:

/makeSwamp.rb:8: undefined local variable or method `code_words' for
main:Object (NameError)

(line 8 is: code_words.each do |real, code| )

Why ??? I've run kdiff and its exactly as in the tutorial... Maybe its
just to late for me..
 
H

Harold Hausman

Hi !
I'm going my way through a Ruby online tutorial right now and i have
following problem:

Hello. There is an unfortunate error in the design of that example.
This exact question comes up from time to time on this list. :)

I searched the archives[1] for "Heat-Assisted Living" and came up with
this thread:
http://rubyurl.com/FeV

It looks to have some good answers in it.

Hope that helps,
-Harold

[1]: http://groups.google.com/group/comp.lang.ruby/topics
 
E

Eric I.

When i execute the makeSwamp.rb file i can enter a "new idea" but than i
get:

/makeSwamp.rb:8: undefined local variable or method `code_words' for
main:Object (NameError)

(line 8 is: code_words.each do |real, code| )

Why ??? I've run kdiff and its exactly as in the tutorial... Maybe its
just to late for me..

When you require (or load) a file, the local variables are not brought
in. Try changing code_words to a global variable by making it
"$code_words" (in both files). Or if you think it's more appropriate,
change it to a constant by making it "CodeWords" in both files.

Eric

Are you interested in on-site Ruby training that uses well-designed,
real-world, hands-on exercises? http://LearnRuby.com
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,154
Members
46,702
Latest member
LukasConde

Latest Threads

Top