From 9494ef8b2de3a7224eb85800606e7c046964cbd2 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Wed, 31 Jul 2019 12:57:21 -0700 Subject: [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 --- lib/fileutils.rb | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'lib/fileutils.rb') 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) -- cgit v1.2.3