Issue #7246 has been reported by wedesoft (Jan Wedekind).

----------------------------------------
Bug #7246: FileUtils.cp_r does not preserve attributes of directories
https://bugs.ruby-lang.org/issues/7246

Author: wedesoft (Jan Wedekind)
Status: Open
Priority: Normal
Assignee: 
Category: lib
Target version: 
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.3.0]


(({FileUtils.cp_r})) does not preserve the file attributes of directories because the attributes are set before copying to the directory.
The following monkey patch fixes this behaviour. However the monkey patch relies on the contents of the source directory not changing during the copy operation.

(({require 'fileutils'

  def copy_entry(src, dest, preserve = false, dereference_root = false, remove_destination = false)
    Entry_.new(src, nil, dereference_root).traverse do |ent|
      destent = Entry_.new(dest, ent.rel, false)
      File.unlink destent.path if remove_destination && File.file?(destent.path)
      ent.copy destent.path
    end
    Entry_.new(src, nil, dereference_root).postorder_traverse do |ent|
      destent = Entry_.new(dest, ent.rel, false)
      ent.copy_metadata destent.path if preserve
    end
  end
  module_function :copy_entry

end}))


-- 
http://bugs.ruby-lang.org/