summaryrefslogtreecommitdiff
path: root/lib/fileutils.rb
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2019-07-31 12:57:21 -0700
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2019-09-27 11:39:02 +0900
commit9494ef8b2de3a7224eb85800606e7c046964cbd2 (patch)
treed7a0a42148a614f23fcdd4a18b6bd2e96b77149d /lib/fileutils.rb
parent02cd42050515b3af67396a25e78d948adcac6cdf (diff)
[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/fileutils.rb')
-rw-r--r--lib/fileutils.rb18
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)