Issue #7958 has been updated by trans (Thomas Sawyer).

File fileutils.patch added

Here is a patch with the fix the r34669 code. 

Sorry, I do not know what you mean by "I cannot determine what user-facing feature r34669 added to FileUtils as define_command was private".

If it helps to clarify, the define_command "dsl" method was added and `extend self` used instead of `module_function` to facilitate clean extension of FileUtils. The old code made doing so properly cumbersome.

The code passes all the tests, so I do not see why it would need to be reverted. In so far as the tests are lacking, we are never going to know until people put the code to use. Which would be preferable in the Ruby 2.0.0 preview releases rather than later on.


----------------------------------------
Bug #7958: include FileUtils::Verbose gives NoMethodError when installing files with a different mode
https://bugs.ruby-lang.org/issues/7958#change-37217

Author: drbrain (Eric Hodel)
Status: Closed
Priority: Normal
Assignee: drbrain (Eric Hodel)
Category: lib
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev (2013-02-26 trunk 39490) [x86_64-darwin12.2.1]


=begin
Seems like (({fu_stream_blksize})) isn't included when (({FileUtils::Verbose})) is.  Changing to plain FileUtils works, though.

  $ cat test.rb 
  require 'fileutils'
  require 'tmpdir'
  
  include FileUtils::Verbose
  
  Dir.mktmpdir 'test' do |dir|
    install __FILE__, dir, mode: 0600
    install __FILE__, dir, mode: 0640
  end
  
  $ ~/.rubies/trunk/bin/ruby -v test.rb 
  ruby 2.1.0dev (2013-02-26 trunk 39490) [x86_64-darwin12.2.1]
  install -c -m 0600 test.rb /var/folders/87/twjsm89x01161gp5d9qwlx2m0000gn/T/test20130225-53176-197q6me
  install -c -m 0640 test.rb /var/folders/87/twjsm89x01161gp5d9qwlx2m0000gn/T/test20130225-53176-197q6me
  /Users/drbrain/.rubies/trunk/lib/ruby/2.1.0/fileutils.rb:898:in `compare_stream': undefined method `fu_stream_blksize' for main:Object (NoMethodError)
  	from /Users/drbrain/.rubies/trunk/lib/ruby/2.1.0/fileutils.rb:882:in `block (2 levels) in compare_file'
  	from /Users/drbrain/.rubies/trunk/lib/ruby/2.1.0/fileutils.rb:881:in `open'
  	from /Users/drbrain/.rubies/trunk/lib/ruby/2.1.0/fileutils.rb:881:in `block in compare_file'
  	from /Users/drbrain/.rubies/trunk/lib/ruby/2.1.0/fileutils.rb:880:in `open'
  	from /Users/drbrain/.rubies/trunk/lib/ruby/2.1.0/fileutils.rb:880:in `compare_file'
  	from /Users/drbrain/.rubies/trunk/lib/ruby/2.1.0/fileutils.rb:926:in `block in install'
  	from /Users/drbrain/.rubies/trunk/lib/ruby/2.1.0/fileutils.rb:1620:in `block in fu_each_src_dest'
  	from /Users/drbrain/.rubies/trunk/lib/ruby/2.1.0/fileutils.rb:1633:in `fu_each_src_dest0'
  	from /Users/drbrain/.rubies/trunk/lib/ruby/2.1.0/fileutils.rb:1618:in `fu_each_src_dest'
  	from /Users/drbrain/.rubies/trunk/lib/ruby/2.1.0/fileutils.rb:925:in `install'
  	from /Users/drbrain/.rubies/trunk/lib/ruby/2.1.0/fileutils.rb:137:in `install'
  	from test.rb:8:in `block in <main>'
  	from /Users/drbrain/.rubies/trunk/lib/ruby/2.1.0/tmpdir.rb:88:in `mktmpdir'
  	from test.rb:6:in `<main>'
=end



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