Newbie question - undefined method `replace_session_timeout' for main:Object (NoMethodError)

Hi,

I'm a newbie to ruby, and programming really...

I'm trying to write a simple script that will make a small change to a
text file.

Here's the code:

#script for changing the sessionState timeout to 30 minutes

f = File.open('C:\Inetpub\wwwroot\GT\web.config', 'r+')
f.each do |line|
  if /sessionState/ =~line
    offset=line.length
    line=replace_session_timeout line
    f.seek(-offset, IO::SEEK_CUR)
    f.print line
  end
end
f.close

def replace_session_timeout line
  int = /</=~line
  spacer = line[0..int-1]
  result=line.replace spacer + "<sessionState timeout=\"30\"/>\r\n"
end

When I run this script I get the following error:

ruby GT_SessionTimeout_1.rb

GT_SessionTimeout_1.rb:7: undefined method `replace_session_timeout'
for main:Object (NoMethodError)
  from GT_SessionTimeout_1.rb:4:in `each'
  from GT_SessionTimeout_1.rb:4

Exit code: 1

I guess there is something wrong with my method call, but it looks
syntactically correct to me.

I've paged through the pickaxe book and online but, to be honest, I
don't think I understand the problem enough to search well for a
solution.

Any ideas?

Thanks much,
Warren

The Ruby interpreter needs to see the definition of replace_session_timeout before it is called for the first time. Just move the definition above the body of the script.

Regards, Morton

···

On Jun 21, 2007, at 10:35 PM, warrene33@gmail.com wrote:

#script for changing the sessionState timeout to 30 minutes

f = File.open('C:\Inetpub\wwwroot\GT\web.config', 'r+')
f.each do |line|
  if /sessionState/ =~line
    offset=line.length
    line=replace_session_timeout line
    f.seek(-offset, IO::SEEK_CUR)
    f.print line
  end
end
f.close

def replace_session_timeout line
  int = /</=~line
  spacer = line[0..int-1]
  result=line.replace spacer + "<sessionState timeout=\"30\"/>\r\n"
end

When I run this script I get the following error:

ruby GT_SessionTimeout_1.rb

GT_SessionTimeout_1.rb:7: undefined method `replace_session_timeout'
for main:Object (NoMethodError)
  from GT_SessionTimeout_1.rb:4:in `each'
  from GT_SessionTimeout_1.rb:4

Exit code: 1

I guess there is something wrong with my method call, but it looks
syntactically correct to me.

Wow. That simple. Thanks
Warren

···

On Jun 21, 10:58 pm, Morton Goldberg <m_goldb...@ameritech.net> wrote:

On Jun 21, 2007, at 10:35 PM, warren...@gmail.com wrote:

> #script for changing the sessionState timeout to 30 minutes

> f = File.open('C:\Inetpub\wwwroot\GT\web.config', 'r+')
> f.each do |line|
> if /sessionState/ =~line
> offset=line.length
> line=replace_session_timeout line
> f.seek(-offset, IO::SEEK_CUR)
> f.print line
> end
> end
> f.close

> def replace_session_timeout line
> int = /</=~line
> spacer = line[0..int-1]
> result=line.replace spacer + "<sessionState timeout=\"30\"/>\r\n"
> end

> When I run this script I get the following error:
>> ruby GT_SessionTimeout_1.rb
> GT_SessionTimeout_1.rb:7: undefined method `replace_session_timeout'
> for main:Object (NoMethodError)
> from GT_SessionTimeout_1.rb:4:in `each'
> from GT_SessionTimeout_1.rb:4
>> Exit code: 1

> I guess there is something wrong with my method call, but it looks
> syntactically correct to me.

The Ruby interpreter needs to see the definition of
replace_session_timeout before it is called for the first time. Just
move the definition above the body of the script.

Regards, Morton