L
LC Geldenhuys
Hi,
I am new to Ruby. I'm trying to get some Ruby scripts going to manage
or CVS log message emails. (I haven't written them myself, got them
from the web.)
I get:
/home/cvs/repository/CVSROOT/commitinfo.rb:26:in `tr_s!': can't modify
frozen string (TypeError)
from /home/cvs/repository/CVSROOT/commitinfo.rb:26
I've done some reading, and I suspect I understand what the frozen
string issue is about. The problem is, I don't see how/why this string
is frozen? Here is the relevant code snippet:
-----------------------------------
if ARGV.size < 4
puts "Usage: #{$0} CVSROOT USER modulepath file1 [file2...]"
exit 1 # No way!
end
$cvsroot, $cvsuser, $modulepath, *$cvsfiles = *ARGV
$cvsroot.tr_s!('/', '/')
$modulepath.tr_s!('/', '/')
-----------------------------------
The two lines using 'tr_s!' causes the problem, but I don't see
how/why $cvsroot or $modulepath is 'frozen'? Might it be due to the
fact that they are passed to the script, i.e. some global/local scope
issue?
Regards,
Lourens
I am new to Ruby. I'm trying to get some Ruby scripts going to manage
or CVS log message emails. (I haven't written them myself, got them
from the web.)
I get:
/home/cvs/repository/CVSROOT/commitinfo.rb:26:in `tr_s!': can't modify
frozen string (TypeError)
from /home/cvs/repository/CVSROOT/commitinfo.rb:26
I've done some reading, and I suspect I understand what the frozen
string issue is about. The problem is, I don't see how/why this string
is frozen? Here is the relevant code snippet:
-----------------------------------
if ARGV.size < 4
puts "Usage: #{$0} CVSROOT USER modulepath file1 [file2...]"
exit 1 # No way!
end
$cvsroot, $cvsuser, $modulepath, *$cvsfiles = *ARGV
$cvsroot.tr_s!('/', '/')
$modulepath.tr_s!('/', '/')
-----------------------------------
The two lines using 'tr_s!' causes the problem, but I don't see
how/why $cvsroot or $modulepath is 'frozen'? Might it be due to the
fact that they are passed to the script, i.e. some global/local scope
issue?
Regards,
Lourens