Skip to content

Instantly share code, notes, and snippets.

@JonathonMA
Created May 9, 2017 03:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JonathonMA/7ee4b747500cc70e90f68e329c82c12b to your computer and use it in GitHub Desktop.
Save JonathonMA/7ee4b747500cc70e90f68e329c82c12b to your computer and use it in GitHub Desktop.
# https://github.com/ruby/ruby/blob/202bbda2bf5f25343e286099140fb9282880ecba/lib/uri/generic.rb#L1397
# https://github.com/ruby/ruby/blob/6219b68fb53a77a221f615d47dde83fea0a7e7c8/lib/uri/common.rb#L19
# + Marshal
# = :(
require 'uri'
url = URI("https://example.com")
deserialized = Marshal.load Marshal.dump(url)
p url
p deserialized
p url == deserialized
p url.eql?(deserialized)
puts "Original .parser: #{url.parser.inspect}"
puts "Marshald .parser: #{deserialized.parser.inspect}"
@JonathonMA
Copy link
Author

$ ruby uri_marshal_repro.rb
#<URI::HTTPS https://example.com>
#<URI::HTTPS https://example.com>
true
false
Original .parser: #<URI::RFC3986_Parser:0x007fcf4c0417a8>
Marshald .parser: #<URI::RFC3986_Parser:0x007fcf4d00dd30>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment