Open source

Open Source

Contributions to the Ruby ecosystem: pull requests to projects I use and libraries I maintain.

Merged into Ruby
ruby/ruby

Contributions to Ruby

Patches merged into the language and the standard library that ships with it.

Ruby
  1. Fix link_local_multicast? mask for IPv4-mapped addresses

    ruby/ipaddr

    September 2026 · IPAddr · +8 −1

    Merged

    IPAddr.new('224.0.1.1').link_local_multicast? returned false while ::ffff:224.0.1.1 returned true — the same address, answered differently depending on the form it arrived in. The IPv4 branch masked the documented /24, the IPv4-mapped branch a /16, and a dual-stack AF_INET6 socket hands out the mapped form. Every other predicate in the family already used the same mask on both branches.

    RubyIPAddrNetworking
  2. [DOC] Pathname#rmtree returns self, not 0

    September 2026 · Pathname · +4 −2

    Merged

    The docs promised a 0 return value in both the call-seq and the prose, but the method has returned self since mkpath and rmtree were made chainable — and test_rmtree asserts exactly that. The call-seq also dropped the keyword arguments, which are now documented alongside a pointer to FileUtils.rm_rf, where they are forwarded.

    RubyPathnameDocumentation
Merged into Rails
rails/rails

Contributions to Ruby on Rails

Patches merged into Rails itself, reviewed and shipped by the core team.

Ruby on Rails
  1. Check PATCH and QUERY in routing assertions with method: :all

    September 2026 · Action Pack · +42 −1

    Merged

    assert_routing with method: :all claims to check every verb but only iterated over GET, POST, PUT and DELETE, so a route that rejects PATCH or QUERY still passed. The list predated PATCH becoming the default verb for updates in Rails 4. Both verbs are now checked, and the option finally has documentation.

    Action PackRoutingTesting
  2. Fix encrypted fixtures for JSON columns

    August 2026 · Active Record · +34 −8

    Merged

    With encrypt_fixtures enabled, a fixture for an encrypts attribute on a json or jsonb column raised a decryption error on read: the payload was serialized twice, so the database stored "{\"p\":...}" instead of the JSON object. Fixtures now hand the payload back in the column's cast form, so it is written exactly once. Fixes a bug open since 2023.

    Active RecordEncryptionFixtures

Add Array#intersection for core typed arrays (int/sym/str/float)

Merged · April 2026

Implements Array#intersection for Spinel's typed arrays, reusing the existing include? runtime functions and keeping NaN semantics consistent with Ruby for float_array. Includes tests for duplicates, empty arrays and no-match cases.

RubySpinelCompiler

rails_tracepoint_stack

v0.5.0 · 4.8k downloads · 35 stars

Runtime call tree for Rails: which of your methods ran, with what params, and what they returned, with gems and the framework filtered out. Built on top of Ruby's TracePoint.

RubyRailsTracePointObservability