diff --git a/.github/workflows/comments.yml b/.github/workflows/comments.yml
index 2fd2e0b656..f607c07d27 100644
--- a/.github/workflows/comments.yml
+++ b/.github/workflows/comments.yml
@@ -16,7 +16,7 @@ jobs:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: ruby/setup-ruby@e81a8fa391b11a595c1b7ed84177cc0fe02faf83 # v1.328.0
with:
- ruby-version: "4.0.6"
+ ruby-version: "4.0.7"
bundler: none
- name: Install dependencies
run: |
diff --git a/core/rubygems/config_file.rbs b/core/rubygems/config_file.rbs
index 6ee8bed526..6fcbb8fc68 100644
--- a/core/rubygems/config_file.rbs
+++ b/core/rubygems/config_file.rbs
@@ -17,15 +17,48 @@
# :backtrace
# : See #backtrace
#
-# :sources
-# : Sets Gem::sources
+# :bulk_threshold
+# : See #bulk_threshold
#
# :verbose
# : See #verbose
#
+# :update_sources
+# : See #update_sources
+#
# :concurrent_downloads
# : See #concurrent_downloads
#
+# :cert_expiration_length_days
+# : See #cert_expiration_length_days
+#
+# :install_extension_in_lib
+# : See #install_extension_in_lib
+#
+# :ipv4_fallback_enabled
+# : See #ipv4_fallback_enabled
+#
+# :gemhome
+# : See #home
+#
+# :gempath
+# : See #path
+#
+# :sources
+# : Sets Gem::sources
+#
+# :disable_default_gem_server
+# : See #disable_default_gem_server
+#
+# :ssl_verify_mode
+# : See #ssl_verify_mode
+#
+# :ssl_ca_cert
+# : See #ssl_ca_cert
+#
+# :ssl_client_cert
+# : See #ssl_client_cert
+#
#
# gemrc files may exist in various locations and are read and merged in the
# following order:
diff --git a/stdlib/erb/0/erb.rbs b/stdlib/erb/0/erb.rbs
index eee4fd81cf..25c414b1d2 100644
--- a/stdlib/erb/0/erb.rbs
+++ b/stdlib/erb/0/erb.rbs
@@ -10,7 +10,7 @@
# ## In Brief
# Here's how ERB works:
# * You can create a *template*: a plain-text string that includes specially
-# formatted *tags*..
+# formatted *tags*.
# * You can create an ERB object to store the template.
# * You can call instance method ERB#result to get the *result*.
# ERB supports tags of three kinds:
@@ -19,9 +19,9 @@
# contains a Ruby expression;
# in the result, the value of the expression replaces the entire tag:
# template = 'The magic word is <%= magic_word %>.'
-# erb = ERB.new(template)
-# magic_word = 'xyzzy'
-# erb.result(binding) # => "The magic word is xyzzy."
+# erb = ERB.new(template)
+# magic_word = 'xyzzy'
+# erb.result(binding) # => "The magic word is xyzzy."
#
# The above call to #result passes argument `binding`,
# which contains the binding of variable `magic_word` to its string value
@@ -33,16 +33,16 @@
# * [Execution tags](rdoc-ref:ERB@Execution+Tags):
# each begins with '<%', ends with '%>'; contains
# Ruby code to be executed:
-# template = '<% File.write("t.txt", "Some stuff.") %>'
-# ERB.new(template).result
-# File.read('t.txt') # => "Some stuff."
+# template = '<% File.write("t.txt", "Some stuff.") %>'
+# ERB.new(template).result
+# File.read('t.txt') # => "Some stuff."
#
# * [Comment tags](rdoc-ref:ERB@Comment+Tags):
# each begins with '<%#', ends with '%>';
# contains comment text;
# in the result, the entire tag is omitted.
-# template = 'Some stuff;<%# Note to self: figure out what the stuff is. %> more stuff.'
-# ERB.new(template).result # => "Some stuff; more stuff."
+# template = 'Some stuff;<%# Note to self: figure out what the stuff is. %> more stuff.'
+# ERB.new(template).result # => "Some stuff; more stuff."
#
# ## Some Simple Examples
# Here's a simple example of ERB in action:
@@ -59,8 +59,7 @@
# 3. Method call erb.result generates a string that contains the
# run-time value of Time.now,
# as computed at the time of the call.
-# The
-# ERB object may be re-used:
+# The ERB object may be re-used:
# erb.result
# # => "The time is 2025-09-09 10:49:33 -0500."
#
@@ -89,13 +88,13 @@
#
# ## Bindings
# A call to method #result, which produces the formatted result string,
-# requires a [Binding object](https://docs.ruby-lang.org/en/master/Binding.html)
-# as its argument.
+# requires a [`Binding`
+# object](https://docs.ruby-lang.org/en/master/Binding.html) as its argument.
# The binding object provides the bindings for expressions in [expression
# tags](rdoc-ref:ERB@Expression+Tags).
# There are three ways to provide the required binding:
-# * [Default binding](rdoc-ref:ERB@Default+Binding).
-# * [Local binding](rdoc-ref:ERB@Local+Binding).
+# * [Default binding](rdoc-ref:ERB@Default+Binding)
+# * [Local binding](rdoc-ref:ERB@Local+Binding)
# * [Augmented binding](rdoc-ref:ERB@Augmented+Binding)
# ### Default Binding
# When you pass no `binding` argument to method #result,
@@ -111,14 +110,15 @@
# The current process is <%= $0 %>.
# TEMPLATE
# puts ERB.new(template).result
-# The Ruby copyright is "ruby - Copyright (C) 1993-2025 Yukihiro Matsumoto".
+#
+# The Ruby copyright is "ruby - Copyright (C) 1993-2025 Yukihiro Matsumoto".
# The current process is irb.
#
# (The current process is `irb` because that's where we're doing these
# examples!)
# ### Local Binding
# The default binding is *not* sufficient for an expression
-# that refers to a a constant or variable that is not defined there:
+# that refers to a constant or variable that is not defined there:
# Foo = 1 # Defines local constant Foo.
# foo = 2 # Defines local variable foo.
# template = <<%= _expression_ %>,
+# Its syntax is <%= expression %>,
# where *expression* is any valid Ruby expression.
# When you call method #result,
# the method evaluates the expression and replaces the entire expression tag
@@ -206,18 +208,18 @@
#
# ### Execution Tags
# You can embed Ruby executable code in template using an *execution tag*.
-# Its syntax is <% _code_ %>,
+# Its syntax is <% code %>,
# where *code* is any valid Ruby code.
# When you call method #result,
# the method executes the code and removes the entire execution tag
# (generating no text in the result):
-# ERB.new('foo <% Dir.chdir("C:/") %> bar').result # => "foo bar"
+# ERB.new('foo <% Dir.chdir(Dir.pwd) %> bar').result # => "foo bar"
#
# Whitespace before and after the embedded code is optional:
-# ERB.new('foo <%Dir.chdir("C:/")%> bar').result # => "foo bar"
+# ERB.new('foo <%Dir.chdir(Dir.pwd)%> bar').result # => "foo bar"
#
# You can interleave text with execution tags to form a control structure
-# such as a conditional, a loop, or a `case` statements.
+# such as a conditional, a loop, or a `case` statement.
# Conditional:
# template = <
@@ -273,8 +275,8 @@
# #### Shorthand Format for Execution Tags
# You can use keyword argument trim_mode: '%' to enable a shorthand
# format for execution tags;
-# this example uses the shorthand format % _code_ instead of
-# <% _code_ %>:
+# this example uses the shorthand format % code instead of <%
+# code %>:
# template = <
@@ -285,7 +287,8 @@
# 'Document Modules',
# 'Answer Questions on Ruby Talk' ]
# puts erb.result(binding)
-# * Run Ruby Quiz
+#
+# * Run Ruby Quiz
# * Document Modules
# * Answer Questions on Ruby Talk
#
@@ -301,11 +304,12 @@
# <% end %>
# TEMPLATE
# ERB.new(template).result.lines.each {|line| puts line.inspect }
-# "\n"
+#
+# "\n"
# "3.4.5\n"
# "\n"
#
-# You can give trim_mode: '-', you can suppress each blank line
+# If you give trim_mode: '-', you can suppress each blank line
# whose source line ends with -%> (instead of %>):
# template = <
@@ -313,7 +317,8 @@
# <% end -%>
# TEMPLATE
# ERB.new(template, trim_mode: '-').result.lines.each {|line| puts line.inspect }
-# "3.4.5\n"
+#
+# "3.4.5\n"
#
# It is an error to use the trailing '-%>' notation without
# trim_mode: '-':
@@ -330,7 +335,8 @@
#
# With keyword argument `trim_mode` not given, all newlines go into the result:
# ERB.new(template).result.lines.each {|line| puts line.inspect }
-# "\n"
+#
+# "\n"
# "3.4.5\n"
# "foo \n"
# "foo 3.4.5\n"
@@ -338,13 +344,15 @@
# You can give trim_mode: '>' to suppress the trailing newline
# for each line that ends with '%>' (regardless of its beginning):
# ERB.new(template, trim_mode: '>').result.lines.each {|line| puts line.inspect }
-# "3.4.5foo foo 3.4.5"
+#
+# "3.4.5foo foo 3.4.5"
#
# You can give trim_mode: '<>' to suppress the trailing newline
# for each line that both begins with '<%' and ends with
# '%>':
# ERB.new(template, trim_mode: '<>').result.lines.each {|line| puts line.inspect }
-# "3.4.5foo \n"
+#
+# "3.4.5foo \n"
# "foo 3.4.5\n"
#
# #### Combining Trim Modes
@@ -357,7 +365,7 @@
# starting with '<%' and ending with '%>'.
# ### Comment Tags
# You can embed a comment in a template using a *comment tag*;
-# its syntax is <%# _text_ %>,
+# its syntax is <%# text %>,
# where *text* is the text of the comment.
# When you call method #result,
# it removes the entire comment tag
@@ -417,19 +425,19 @@
# erb.filename # => nil
# erb.lineno # => 0
# erb.result
-# (erb):1:in '': undefined local variable or method 'nosuch' for main (NameError)
+# # => (erb):1:in '': undefined local variable or method 'nosuch' for main (NameError)
#
# You can use methods #filename= and #lineno= to assign values
# that are more meaningful in your context:
# erb.filename = 't.txt'
# erb.lineno = 555
# erb.result
-# t.txt:556:in '': undefined local variable or method 'nosuch' for main (NameError)
+# # => t.txt:556:in '': undefined local variable or method 'nosuch' for main (NameError)
#
# You can use method #location= to set both values:
# erb.location = ['u.txt', 999]
# erb.result
-# u.txt:1000:in '': undefined local variable or method 'nosuch' for main (NameError)
+# # => u.txt:1000:in '': undefined local variable or method 'nosuch' for main (NameError)
#
# ## Plain Text with Embedded Ruby
# Here's a plain-text template;
@@ -467,11 +475,11 @@
# 'Document Modules',
# 'Answer Questions on Ruby Talk' ]
#
-# Finally, create the ERB object and get the result
+# Finally, create the ERB object and get the result:
# erb = ERB.new(template, trim_mode: '%<>')
# puts erb.result(binding)
#
-# From: James Edward Gray II
+# From: James Edward Gray II
# To: Community Spokesman
# Subject: Addressing Needs
#
@@ -511,15 +519,13 @@
# def get_binding
# binding
# end
-#
# end
#
# The template below will need these values:
# toy = Product.new('TZ-1002',
# 'Rubysapien',
# "Geek's Best Friend! Responds to Ruby commands...",
-# 999.95
-# )
+# 999.95)
# toy.add_feature('Listens for verbal commands in the Ruby language!')
# toy.add_feature('Ignores Perl, Java, and all C variants.')
# toy.add_feature('Karate-Chop Action!!!')
@@ -552,7 +558,8 @@
# Finally, create the ERB object and get the result (omitting some blank lines):
# erb = ERB.new(template)
# puts erb.result(toy.get_binding)
-#
+#
+#
# Ruby Toys -- Rubysapien
#
# Rubysapien (TZ-1002)
@@ -574,7 +581,7 @@
# Various Ruby projects have their own template processors.
# The Ruby Processing System [RDoc](https://ruby.github.io/rdoc), for example,
# has one that can be used elsewhere.
-# Other popular template processors may found in the [Template
+# Other popular template processors may be found in the [Template
# Engines](https://www.ruby-toolbox.com/categories/template_engines) page
# of the Ruby Toolbox.
#
@@ -591,7 +598,7 @@ class ERB
# rdoc-file=lib/erb.rb
# - ERB.new(template, trim_mode: nil, eoutvar: '_erbout')
# -->
- # Returns a new ERB object containing the given string +template+.
+ # Returns a new ERB object containing the given string `template`.
# For details about `template`, its embedded tags, and generated results, see
# ERB.
# Keyword Argument `trim_mode`
@@ -633,20 +640,22 @@ class ERB
# # => "The time is 2025-09-18 15:58:08 -0500."
#
# In a more readable format:
- # # puts erb.src.split('; ')
- # # #coding:UTF-8
- # # _erbout = +''
- # # _erbout.<< "The time is ".freeze
- # # _erbout.<<(( Time.now ).to_s)
- # # _erbout.<< ".".freeze
- # # _erbout
+ # puts erb.src.split('; ')
+ #
+ # #coding:UTF-8
+ # _erbout = +''
+ # _erbout.<< "The time is ".freeze
+ # _erbout.<<(( Time.now ).to_s)
+ # _erbout.<< ".".freeze
+ # _erbout
#
# Variable `_erbout` is used to store the intermediate results in the code;
# the name `_erbout` is the default in ERB.new,
# and can be changed via keyword argument `eoutvar`:
# erb = ERB.new(template, eoutvar: '_foo')
- # puts template.src.split('; ')
- # #coding:UTF-8
+ # puts erb.src.split('; ')
+ #
+ # #coding:UTF-8
# _foo = +''
# _foo.<< "The time is ".freeze
# _foo.<<(( Time.now ).to_s)
@@ -744,7 +753,8 @@ class ERB
# MyModule = Module.new
# erb.def_method(MyModule, 'render(arg1, arg2)') # => :render
# class MyClass; include MyModule; end
- # MyClass.new.render('foo', 123) # => "foo 123"
+ # MyClass.new.render('foo', 123)
+ # # => "foo 123"
#
def def_method: (Module, String, ?String) -> Symbol
@@ -755,7 +765,7 @@ class ERB
# Returns a new nameless module that has instance method `method_name`.
# template = '<%= arg1 %> <%= arg2 %>'
# erb = ERB.new(template)
- # MyModule = template.def_module('render(arg1, arg2)')
+ # MyModule = erb.def_module('render(arg1, arg2)')
# class MyClass
# include MyModule
# end
@@ -796,7 +806,8 @@ class ERB
#
# Generate the result:
# puts MySubClass.new('foo', 123).render
- #
+ #
+ #
#
# foo
# 123
diff --git a/stdlib/resolv/0/resolv.rbs b/stdlib/resolv/0/resolv.rbs
index 4798ef8f29..6d19ca38dd 100644
--- a/stdlib/resolv/0/resolv.rbs
+++ b/stdlib/resolv/0/resolv.rbs
@@ -286,13 +286,18 @@ class Resolv::DNS
# * Resolv::DNS::Resource::IN::A
# * Resolv::DNS::Resource::IN::AAAA
# * Resolv::DNS::Resource::IN::ANY
+ # * Resolv::DNS::Resource::IN::CAA
# * Resolv::DNS::Resource::IN::CNAME
# * Resolv::DNS::Resource::IN::HINFO
+ # * Resolv::DNS::Resource::IN::HTTPS
+ # * Resolv::DNS::Resource::IN::LOC
# * Resolv::DNS::Resource::IN::MINFO
# * Resolv::DNS::Resource::IN::MX
# * Resolv::DNS::Resource::IN::NS
# * Resolv::DNS::Resource::IN::PTR
# * Resolv::DNS::Resource::IN::SOA
+ # * Resolv::DNS::Resource::IN::SRV
+ # * Resolv::DNS::Resource::IN::SVCB
# * Resolv::DNS::Resource::IN::TXT
# * Resolv::DNS::Resource::IN::WKS
#