summaryrefslogtreecommitdiff
path: root/lib/uri.rb
diff options
context:
space:
mode:
authorBenoit Daloze <eregontp@gmail.com>2021-06-25 13:38:01 +0200
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2021-07-27 16:54:27 +0900
commit1cf111774f03c6d1ddba735cb8cc79483f16f699 (patch)
treeb90249839fb24c0d350544eda50666e95c5d968b /lib/uri.rb
parent090d799c2496f4c0e1f25c9970f4015fc693ff0e (diff)
[ruby/uri] Add proper Ractor support to URI
* Using a module to map scheme name to scheme class, which also works with Ractor. * No constant redefinition, no ObjectSpace, still fast lookup for initial schemes. https://github.com/ruby/uri/commit/883567fd81
Diffstat (limited to 'lib/uri.rb')
-rw-r--r--lib/uri.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/uri.rb b/lib/uri.rb
index 5e820f46c3..282e82c32c 100644
--- a/lib/uri.rb
+++ b/lib/uri.rb
@@ -30,7 +30,7 @@
# class RSYNC < Generic
# DEFAULT_PORT = 873
# end
-# @@schemes['RSYNC'] = RSYNC
+# register_scheme 'RSYNC', RSYNC
# end
# #=> URI::RSYNC
#
@@ -100,3 +100,9 @@ require_relative 'uri/https'
require_relative 'uri/ldap'
require_relative 'uri/ldaps'
require_relative 'uri/mailto'
+
+module URI
+ INITIAL_SCHEMES = scheme_list
+ private_constant :INITIAL_SCHEMES
+ Ractor.make_shareable(INITIAL_SCHEMES) if defined?(Ractor)
+end