Rails7.10にて提案した内容がリリースされた

少し前にはなりますが、RailsのDiscussionに問題提起を行いました。
その後、Discussionで「Issueを作成して良いよ〜」とお許しを頂いたのでIssueを作成した所、修正PRが作成されてマージされるという...とんでもない出来事がありました。

www.okb-shelf.work

とはいえマージされたものの、リリースはされていませんでした。
いつリリースされるのかな...と思い最新のRails7.10のリリースノートを見ていたら、なんと対応がリリースされていました!

変更について

リリースノートを見ながらコードの差分を確認してみました。
Rails7.0.8の時点では、該当箇所のコードは変更前のままでした。

# activesupport/lib/active_support/cache.rb
class Store
  class << self
    private
      def retrieve_pool_options(options)
        {}.tap do |pool_options|
          pool_options[:size] = options.delete(:pool_size) if options[:pool_size]
          pool_options[:timeout] = options.delete(:pool_timeout) if options[:pool_timeout]
        end
      end
  end
end

この箇所が7.10では以下のように変更されていました。
まさに自分が問題提起した内容に対して変更されたコードそのものです。

# activesupport/lib/active_support/cache.rb
class Store
  class << self
    private
      def retrieve_pool_options(options)
        if options.key?(:pool)
          pool_options = options.delete(:pool)
        elsif options.key?(:pool_size) || options.key?(:pool_timeout)
          pool_options = {}

          if options.key?(:pool_size)
            ActiveSupport.deprecator.warn(<<~MSG)
              Using :pool_size is deprecated and will be removed in Rails 7.2.
              Use `pool: { size: #{options[:pool_size].inspect} }` instead.
            MSG
            pool_options[:size] = options.delete(:pool_size)
          end
          :
        pool_options unless pool_options.empty?
      end
  end
end

Eagerly validate pool arguments in Redis and MemCache stores by casperisfine · Pull Request #48381 · rails/rails · GitHub

リリースノートにはこの変更のPRのURLが添付されていませんでしたが、どうやらリリースされたようです。
リリースノートに記載される対応の粒度は不明ですが、パッとみる感じだと以下のIssueに相乗りしているように見えました。

感想

何がともあれ、自分きっかけで提案した内容が取り込まれたというのは感慨深いものがあります。
しかも、それが世界中で使われているRubyOnRailsともなれば、飲みの席でネタの1つにするには十分すぎる事柄です。 (Issueを立てただけで何もやっていない...)

前の記事にも書いたのですが、いつかは自分で問題提起して、コードの対応までやってみたいものです。
今回は簡単ですが、また1つ実績解除されたので共有として記事を書いてみました。

少しでも「ええな〜」と思ったらはてなスター・はてなブックマーク・シェアを頂けると励みになります。