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/