Method: Webruby.create_file_if_different

Defined in:
lib/webruby/utility.rb

.create_file_if_different(filename) {|f| ... } ⇒ Object

Yields:

  • (f)


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/webruby/utility.rb', line 5

def create_file_if_different(filename)
  tmp_filename = "#{filename}.tmp"

  # TODO: add support for case where block is not given,
  # maybe using monkey patching on File#close?
  f = File.open(tmp_filename, 'w')
  yield f
  f.close

  if (!File.exists?(filename)) ||
      (!FileUtils.compare_file(filename, tmp_filename))
    puts "Creating new file: #{filename}!"
    FileUtils.cp(tmp_filename, filename)
  end
  FileUtils.rm(tmp_filename)
end