Forum: Ruby Help on a loop EACH

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
6219fe13b441e60321ed53e1ef462ae7?d=identicon&s=25 Damien Frutiger (frutix)
on 2017-03-08 10:25
Hi everybody,

I work on a PLM and I must modify a RubyScript. After 4 days, I need
help for you on this develop language. I hope you can help me but
I think, is not too difficult for a developer.

My goal: Delete a lock when my script left the loop.

My error: The file create well (teamcenter.lock) in the correct folder
but where I must write the command line:
File.delete(teamcenter_lock_file, 'w')

The code:

        #teamcenter_lock_file = File.join(@options.output_dir,
    teamcenter_lock_file = @baan_options['tc_lock_file']
        #"Creating Teamcenter lock file at
        tclock =, 'w'), 'w')

        files.each do |f|

          src = File.join(@env.srcdir(), f)
          next if not File.exist?(src)

          pf = "1" if f =~ /tiedm010.txt/i
          pf = "2" if f =~ /tiedm010txt.txt/i
          pf = "3" if f =~ /tiedm100.txt/i
          pf = "4" if f =~ /tiedm100txt.txt/i
          pf = "5" if f =~ /tiedm110.txt/i
          # KST -> Smaller filenames!  dst =
File.join(@options.output_dir, sprintf("%s_%s_%s_%s", @job_tag,
@job_date, pf, f))
          dst = File.join(@options.output_dir, sprintf("%s_%s_%s_%s",
@job_tag, @job_date[0,12], pf, f))

      if not File.exist?(dst)
   "Copy '#{src}' to '#{dst}'"
            begin, 'w') {|out|
          out.puts header[f]
          out.write(, 'r').read())

              #FileUtils.cp src, dst, :verbose => true
            rescue => error
              @log.error "Failed to copy '#{src}' to '#{dst}'
   "Appending '#{src}' to '#{dst}'"
    , 'a') {|f|
        f.puts ''
        f.write(, 'r').read())
        #File.delete(teamcenter_lock_file, 'w')

            rescue => error
              @log.error "Failed to append '#{src}' to '#{dst}'


        #"Removing Teamcenter lock file at
           File.delete(teamcenter_lock_file, 'w')
       #FileUtils.rm_f teamcenter_lock_file

Thank you for your help, if you have questions, contact me. :)
0fa73332c8e4a3b06ea439fd3f034322?d=identicon&s=25 Ronald Fischer (rovf)
on 2017-03-14 06:58
Basically, you need to "erase the lock file" after you left the critical
region, i.e. the commands which need to be protected by the lock.

Having said this, I would like to point out however, that your program
doesn't safely protect (locks) anything. Simply creating a lock file
which then is (probably) tested by another application, does not
guarantee any locking.

If all application competing for the critical region, run on the same
host, you would need File#flock to manage lock files. See the Ruby Docs
for an example.
This topic is locked and can not be replied to.