なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2023/12/31)

2023/12/31分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

railties/CHANGELOG.md

actionpack/CHANGELOG.md


Add rubocop-rails-omakase to new Rails applications (#50486)

railtiesの修正です。

rails newで新規にアプリケーション作成時に、rails/rubocop-rails-omakase gemの設定を含むよう修正しています。gemの設定を含みたくない場合、--skip-rubocopオプションを指定すれば良いようになっています。


Fix calculation of Active Record :db_runtime metric

activerecord/lib/active_record/runtime_registry.rbの修正です。

Active Recordの:db_runtimeのmetricが正しく計算されないバグがあったのを修正しています。


Fix load_async to work with query cache

activerecord/lib/active_record/future_result.rbの修正です。

query cacheに対してload_asyncメソッドを実行するとエラーになってしまうバグがあったのを修正しています。


Document --skip-rubocop rails command

rails guideのThe Rails Command Lineの修正です。

rails newのオプションについて説明している箇所に、--skip-rubocopオプションについての説明を追加しています。


Document Cache::WriteOptions

activesupport/lib/active_support/cache.rbのdocの修正です。

ActiveSUpport::Cache::WriteOptions配下のメソッドにdocを追加しています。


Merge pull request #50496 from skipkayhil/hm-doc-cache

Active Supportのdocの修正です。

ActiveSUpport::Cache::Store関連のdocについて、不要なリンクを削除、フォーマットの修正等を行っています。


Document .rubocop.yml in rails default file folder structure

rails guideのGetting Started with Railsの修正です。

.rubocop.ymlファイルについての説明を追加しています。


Merge pull request #50488 from wjessop/main

activejob/lib/active_job/serializers/object_serializer.rbactivesupport/lib/active_support/deprecation.rbの修正です。

singletonのrequireを実際に使用しているファイルでのみ行うよう修正しています。


Merge pull request #50491 from byroot/bump-required-ruby

required Ruby versionを2.7.0から3.1.0に更新しています。EOLになった(なる)Rubyはサポートしないようにしよう、という方針になり、次のRailsのバージョンがリリースされるころにはEOLになっているはずのRuby 3.0(来年3月にEOL予定)までをサポートの対象から外すよう変更が行われています。


Fix a couple of typos [ci skip]

actionpack/lib/action_dispatch/middleware/assume_ssl.rbのdoc、 及び、rails guideのConfiguring Rails Applicationsの修正です。

doc内のタイポを修正しています。


Add rate limiting to Action Controller via the Kredis limiter type (#50490)

Action Packの修正です。

Action ControllerにRate Limiting用のAPIを追加しています。

class SessionsController < ApplicationController
  rate_limit to: 10, within: 3.minutes, only: :create
end

class SignupsController < ApplicationController
  rate_limit to: 1000, within: 10.seconds,
    by: -> { request.domain }, with: -> { redirect_to busy_controller_url, alert: "Too many signups!" }, only: :new
end

limitの条件や、同一リクエストとみなす情報、limitになった場合の挙動はrate_limitメソッドの引数で指定出来るようになっています。アクセス数はKredis limiter typeを使用して保持されるようになっています。そのため、この機能を使用するには、kredis gemが必要になっています。