Work around encoding issue in Pathname#inspect on Ruby 2.0
Pathname#inspect on Ruby 2.0 throws away the encoding of the object's underlying string and returns a string tagged as ASCII-8BIT. If you simply write puts Pathname.new("some string with non-ascii bytes").inspect no error will be raised, because the implementation of Pathname#inspect does not call into Object#inspect. However, if you wrap that pathname object in an array first, then puts [Pathname.new("some string with non-ascii bytes")].inspect will raise Encoding::CompatibilityError: "inspected result must be ASCII only or use the same encoding with default external". Raising an error in this codepath is new in Ruby 2.0, and this specific bug is fixed in Ruby 2.1. I've opened a bug upstream: https://bugs.ruby-lang.org/issues/9915 Fixes Homebrew/homebrew#29947.
This commit is contained in:
parent
6d0f0cb195
commit
d27dc1d02f
@ -424,6 +424,13 @@ class Pathname
|
||||
end
|
||||
end
|
||||
private :prepend_prefix
|
||||
elsif RUBY_VERSION == "2.0.0"
|
||||
# https://bugs.ruby-lang.org/issues/9915
|
||||
prepend Module.new {
|
||||
def inspect
|
||||
super.force_encoding(instance_variable_get(:@path).encoding)
|
||||
end
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user