On 2007-05-07 18:16:38 -0700, Tim H. [email protected] said:
I’ve driven myself crazy trying to debug my script, stalled in BBEdit,
so went to Terminal, but after putting in all kinds of puts to figure
out what was going on, tried my demo TextMate and it ran better. In all
cases exactly the same file.
Thanks for any clues.
It would help if you’d post your script, what answers you expected, and
what answers you got.
Thanks for answering. Here it goes:
#!/usr/bin/env ruby
class OrangeTree
MSG_GROW = “Type "year" to grow your tree.”
MSG_PICK = "Type a number to pick some more fruit. "
EXIT_TXT = “Something went wrong.”
def initialize # we have one tree, does it need a name?
@heightInches = 0 # at year zero
@age = 0
@fruit = 0 # inches, work out feet and inches later
puts "Congratulations, you planted an orange tree. In a few years it
will start bearing fruit. #{@age} " # Age only for debugging. Can take
it out.
puts MSG_GROW
end
def ageOneYear
@heightInches = @heightInches +1
puts 'Height: ’ + @height.to_s
@age += 1
# @age = @age + 1
puts “Got to ageOneYear. Age: #{@age}”
case( @age )
when (1…3) : puts(“Your #{@age} year old tree is too young to
bear fruit yet. #{MSG_GROW}” )
when (4…29) : puts(" Age: #{@age}. Place holder until get 1…3
working." )
when (30) : puts(“Your tree was very fruitful, but it
reached
old age and died.”)
else puts( " Something went wrong. #{EXIT_TXT}" )
end
end # def ageOneYear
def height
# returns the height
end
def pick_an_orange
puts ‘Got to pick_an_orange, but haven't defined yet’
# reduce this year count by one
end
end # class OrangeTree
here we go
countLoop = 0
tree = OrangeTree.new # assume we need to initialize it. Does it need a
name?
while countLoop < 100
countLoop += 1
puts “countLoop = #{countLoop}” # debugging.
if gets.to_s==‘year’
puts ‘In the gets.to_s if clause’ # debugging.
tree.ageOneYear
end
gets case
when ‘year’ : tree.ageOneYear # , y as shortcut?
when (1…100) : tree.pick_an_orange
else puts(‘Don't be greedy, don't try to pick more than 100
oranges’)
end
end # while
TextMate response. I answered ‘year’ to each request for input:
RubyMate r6354 running Ruby r1.8.6 (/usr/local/bin/ruby)
OrangeTree.post.rb
Congratulations, you planted an orange tree. In a few years it will
start bearing fruit. 0
Type “year” to grow your tree.
countLoop = 1
Height:
Got to ageOneYear. Age: 1
Your 1 year old tree is too young to bear fruit yet. Type “year” to
grow your tree.
countLoop = 2
Height:
Got to ageOneYear. Age: 2
Your 2 year old tree is too young to bear fruit yet. Type “year” to
grow your tree.
countLoop = 3
Height:
Got to ageOneYear. Age: 3
Your 3 year old tree is too young to bear fruit yet. Type “year” to
grow your tree.
countLoop = 4
Height:
Got to ageOneYear. Age: 4
Age: 4. Place holder until get 1…3 working.
NoMethodError: undefined method `+’ for nil:NilClass
method gets
in stdin_dialog.rb at line 6
method gets
in stdin_dialog.rb at line 13
at top level
in OrangeTree.post.rb at line 58
==END TextMate response
Terminal response. All ‘year’ are my responses. I stopped after two
none reponses.
new-host-2:~ xxxxxx$ ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0) [powerpc-darwin8.9.0]
new-host-2:~ xxxxxx$ ruby
“/Volumes/share/Greg/Ruby++/OrangeTree.post.rb”
Congratulations, you planted an orange tree. In a few years it will
start bearing fruit. 0
Type “year” to grow your tree.
countLoop = 1
year
Height:
Got to ageOneYear. Age: 1
Your 1 year old tree is too young to bear fruit yet. Type “year” to
grow your tree.
year
year
===End Terminal
BBEdit output. I only Cmd-R to run the script. I was never asked for
input.
Congratulations, you planted an orange tree. In a few years it will
start bearing fruit. 0
Type “year” to grow your tree.
countLoop = 1
Height:
Got to ageOneYear. Age: 1
Your 1 year old tree is too young to bear fruit yet. Type “year” to
grow your tree.
countLoop = 2
Height:
Got to ageOneYear. Age: 2
Your 2 year old tree is too young to bear fruit yet. Type “year” to
grow your tree.
countLoop = 3
Height:
Got to ageOneYear. Age: 3
Your 3 year old tree is too young to bear fruit yet. Type “year” to
grow your tree.
countLoop = 4
Height:
Got to ageOneYear. Age: 4
Age: 4. Place holder until get 1…3 working.
countLoop = 5
Height:
Got to ageOneYear. Age: 5
Age: 5. Place holder until get 1…3 working.
countLoop = 100
Height:
Got to ageOneYear. Age: 100
Something went wrong. Something went wrong.
===END BBEdit
TextMate was close, but I expected values for @heightInches to
increase with each iteration.
I would like it to work in BBEdit, but realize BareBones support for
this is weak. But at least Terminal should get it right. I own BBEdit,
so am reluctant to buy TextMate, particularly since it has significant
features I would like missing.
Thanks for any help.
I hope this isn’t a double posting. My original was via Usenet, then I
found the Google G. and tried to post there, but I am not sure I am
a member there. This version may be somewhat different as I had to
recreate it after realizing Google G. wasn’t working for me.