class URI::GID

def parse(uri)

URI::GID.parse('gid://bcx/') # => raises URI::InvalidComponentError
URI.parse('gid://bcx') # => URI::GID instance
URI('gid://bcx') # => URI::GID instance

This differs from URI() and URI.parse which do not check arguments.

URI::GID.parse 'gid://bcx/Person/1?key=value'

Create a new URI::GID by parsing a gid string with argument check.
def parse(uri)
  generic_components = URI.split(uri) << nil << true # nil parser, true arg_check
  new(*generic_components)
end