filelocking

D

Derek Smith

Hi All,

I have posted the same code b4, but could not find my original post,
however this is a different question. I am a newb, so here I go.
Thank you!


This is my error:

$ ruby test.rb
test.rb:46: undefined method `flock' for main:Object (NoMethodError)
from test.rb:45:in `open'
from test.rb:45
from test.rb:42:in `each'
from test.rb:42

Here is my code:

#!/usr/bin/ruby -w

require 'ftools'
array1 = Dir.glob("*.log")
if ( array1.length >= 1 )
array1.each { |file|
File.copy(file, "#{file}.orig")
if (File.size?(file) > FSIZE)
File.open(file, 'r+') do |f|
flock(f, File::LOCK_SH) do |f|
f << "i got a lock"
end
end
end
}
else
raise StandardError, "Array 'array1' has no values, logs will not be
rolled!"
end
 
J

Joel VanderWerf

Derek said:
test.rb:46: undefined method `flock' for main:Object (NoMethodError) ...
File.open(file, 'r+') do |f|
flock(f, File::LOCK_SH) do |f|

That should be File.flock.
 
D

Derek Smith

Joel said:
That should be File.flock.


OK tried that...thx!, but now I am seeing

__STDERR__

test.rb:46: undefined method `flock' for File:Class (NoMethodError)
from test.rb:45:in `open'
from test.rb:45
from test.rb:42:in `each'
from test.rb:42

__CODE__

if ( array1.length >= 1 )
array1.each { |file|
File.copy(file, "#{file}.orig")
if (File.size?(file) > FSIZE)
File.open(file, 'r+') do |f|
File.flock(f, File::LOCK_SH) do |f|
f << "i got a lock"
end
end
end
}
else
raise StandardError, "Array 'array1' has no values, logs will not be
rolled!"
end
 
J

Joel VanderWerf

sorry, my fault... should be

f.flock(File::LOCK_SH) do
...
end

Take a look at `ri flock` for details.
 
M

Michael Malone

OK tried that...thx!, but now I am seeing

__STDERR__

test.rb:46: undefined method `flock' for File:Class (NoMethodError)
from test.rb:45:in `open'
from test.rb:45
from test.rb:42:in `each'
from test.rb:42
File#flock => f.flock

=======================================================================
This email, including any attachments, is only for the intended
addressee. It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
altered or corrupted during transmission.
=======================================================================
 

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

No members online now.

Forum statistics

Threads
473,982
Messages
2,570,186
Members
46,740
Latest member
JudsonFrie

Latest Threads

Top