diff options
author | Jeremy Evans <code@jeremyevans.net> | 2019-07-31 12:57:21 -0700 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2019-09-27 11:39:02 +0900 |
commit | 9494ef8b2de3a7224eb85800606e7c046964cbd2 (patch) | |
tree | d7a0a42148a614f23fcdd4a18b6bd2e96b77149d /lib | |
parent | 02cd42050515b3af67396a25e78d948adcac6cdf (diff) | |
download | ruby-9494ef8b2de3a7224eb85800606e7c046964cbd2.tar.gz |
[ruby/fileutils] Do not break in verbose mode if using FileUtils with a frozen object
If FileUtils is included into another object, and verbose mode is
used, a FrozenError is currently raised unless the object has the
@fileutils_output and @fileutils_label instance variables.
This fixes things so that it does not attempt to set the instance
variables, but it still uses them if they are present.
https://github.com/ruby/fileutils/commit/689cb9c56a
Diffstat (limited to 'lib')
-rw-r--r-- | lib/fileutils.rb | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/lib/fileutils.rb b/lib/fileutils.rb index bc4fd70bf2..3c23ffc0e6 100644 --- a/lib/fileutils.rb +++ b/lib/fileutils.rb @@ -1608,13 +1608,13 @@ module FileUtils end private_module_function :fu_same? - @fileutils_output = $stderr - @fileutils_label = '' - def fu_output_message(msg) #:nodoc: - @fileutils_output ||= $stderr - @fileutils_label ||= '' - @fileutils_output.puts @fileutils_label + msg + output = @fileutils_output if defined?(@fileutils_output) + output ||= $stderr + if defined?(@fileutils_label) + msg = @fileutils_label + msg + end + output.puts msg end private_module_function :fu_output_message @@ -1695,8 +1695,6 @@ module FileUtils # module Verbose include FileUtils - @fileutils_output = $stderr - @fileutils_label = '' names = ::FileUtils.collect_method(:verbose) names.each do |name| module_eval(<<-EOS, __FILE__, __LINE__ + 1) @@ -1720,8 +1718,6 @@ module FileUtils module NoWrite include FileUtils include LowMethods - @fileutils_output = $stderr - @fileutils_label = '' names = ::FileUtils.collect_method(:noop) names.each do |name| module_eval(<<-EOS, __FILE__, __LINE__ + 1) @@ -1746,8 +1742,6 @@ module FileUtils module DryRun include FileUtils include LowMethods - @fileutils_output = $stderr - @fileutils_label = '' names = ::FileUtils.collect_method(:noop) names.each do |name| module_eval(<<-EOS, __FILE__, __LINE__ + 1) |