Class: LX::File::Class

Inherits:
Object
  • Object
show all
Defined in:
lib/lx.rb

Instance Method Summary collapse

Constructor Details

#initialize(clss) ⇒ Class

Returns a new instance of Class.



455
456
# File 'lib/lx.rb', line 455

def initialize(clss)
end

Instance Method Details

#atomic_write(path_final, content) ⇒ Object

Atomically writes content to the given path. Does so by creating a temp file, writing to it, then renaming the temp file to the final destination.



460
461
462
463
464
465
466
467
468
469
470
# File 'lib/lx.rb', line 460

def atomic_write(path_final, content)
  begin
    path_tmp = path_final + '.' + rand.to_s.sub(/\A.*\./mu, '')
    File.write path_tmp, content
    File.rename path_tmp, path_final
  ensure
    if File.exist?(path_tmp)
      File.delete path_tmp
    end
  end
end

#temp_path(opts = {}) ⇒ Object

Creates a temporary path. Does not create a file. If, after the ‘do` block, a file exists at that path, that file is deleted.



474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
# File 'lib/lx.rb', line 474

def temp_path(opts = {})
  opts = {'delete'=>true}.merge(opts)
  
  # root
  if opts['root']
    root = opts['root'].sub(/\/*\z/mu, '/')
  else
    root = './'
  end
  
  # full path
  path = root + LX.randstr
  
  # add extension
  if opts['ext']
    ext = opts['ext']
    ext = ext.sub(/\A\.*/mu, '.')
    path += ext
  end
  
  if block_given?
    begin
      yield path
    ensure
      if opts['delete'] and File.exist?(path)
        File.delete path
      end
    end
  else
    return path
  end
end