DiffDaily Deep & Concise - OSS変更の定点観測
トップに戻る

rails/spring

https://github.com/rails/spring

リローディング無効化を許可するオプトイン設定 `dangerously_allow_disabling_reloading` を追加

Springに `Spring.dangerously_allow_disabling_reloading` オプションが追加され、これまで強制的に拒否されていた `config.enable_reloading = false` 状態での起動をオプトインで許可できるようになりました。すべてのリロード可能リソースをフォーク後の子プロセス内でレイジーロードするよう構成された大規模アプリで、テスト実行ごとのファイル stat コストを削減できます。デフォルト挙動は変わらず、設定名に `dangerously_` プレフィックスを付けることでリスクを明示しています。

2026年05月27日 Claude Sonnet 4.6

Spring 4.5.0 リリース準備:Bundlerグループ未インストール時のスキップ対応を含む

Spring 4.5.0のリリース準備コミットです。バージョン番号の更新とCHANGELOGの確定のみを含み、このバージョンではSpringがインストールされていないBundlerグループで実行する際にエラーを発生させずスキップする機能変更がリリースされます。

2026年05月02日 Claude Sonnet 4.6

CHANGELOG のエントリ順序を修正し「Bundler グループ外スキップ」を Unreleased セクションへ移動

CHANGELOG.md において、未リリースの「Bundler グループ外スキップ」エントリがリリース済みセクションに誤配置されていた問題を修正。エントリをファイル冒頭の Unreleased セクションへ移動し、変更履歴の整合性を回復しました。

2026年05月02日 Claude Sonnet 4.6

インストールされていないBundlerグループのspringをエラーなくスキップ

binstubがBundlerの `requested_specs` を参照するよう変更され、`bundle config set without` などでインストール対象外となったグループにspringが含まれる場合でも `Gem::LoadError` を発生させずにスキップするようになりました。従来の `locked_gems.specs`(ロックファイル全体)から `definition.requested_specs`(実際に要求されているgem)への切り替えにより、`RAILS_ENV` 環境変数に依存しない信頼性の高い検出が実現されています。

2026年05月02日 Claude Sonnet 4.6

Spring の Unreleased CHANGELOG に `after_environment_load` フックほか3件の変更が追加

Spring の次期リリース向け CHANGELOG に3件の変更が追記されました。新たに追加された `Spring.after_environment_load` フックにより、環境ロード後・GC最適化前のタイミングでテスト基盤を事前ロードし、フォークワーカーへの copy-on-write 継承が可能になります。あわせて、クライアント切断時の `Errno::EPIPE` によるプロセスクラッシュの修正と、フレームワーク基底クラスの先行オートロードによる各フォークでの不要な再初期化コスト削減も記録されています。

2026年05月02日 Claude Sonnet 4.6

ダミーアプリ生成時に `.railsrc` の設定を無視するオプションを追加

アクセプタンステスト用のダミーアプリ生成時に `~/.railsrc` が読み込まれることで発生するテストの誤動作を修正。`rails new` コマンドに `--no-rc` オプションを追加し、ユーザーの個人設定(例: `--database=postgresql`)がテスト環境に影響しないようにしました。あわせて変数名を `skips` から `options` に改名し、オプション配列の意味をより正確に表現しています。

2026年05月02日 Claude Sonnet 4.6

フレームワーク基底クラスの先行ロードによるViewReloader初期化問題の解消

SpringのpreloadフェーズでActionMailer::Base等のフレームワーク基底クラスを先行ロードすることで、ActionViewのCacheExpiry::ViewReloaderが空の状態で初期化される競合を解消します。これにより、各forkで発生していたprepend_view_pathのたびに走る不要なFileUpdateCheckerの完全再構築コストが排除されます。

2026年05月02日 Claude Sonnet 4.6

クライアント切断時のプロセスクラッシュを修正(Server・Application)

クライアントがハンドシェイク途中で切断した際に Errno::EPIPE が伝播してSpringプロセスが強制終了するバグを修正。Spring::Server#serve と Spring::Application#serve にまたがる計5箇所の書き込みサイトに対し、ignore_client_disconnect ヘルパーを導入して切断済みクライアントへの書き込み失敗を安全に無視できるようになりました。特にサーバーのacceptループがクラッシュして以降のすべてのクライアントがタイムアウトするという最悪ケースが解消されています。

2026年05月02日 Claude Sonnet 4.6

`after_environment_load`フックでSpringのCoWプリロードが可能に

SpringにRails環境ロード直後に実行される `after_environment_load` フックが追加されました。`test_helper` などの重い初期化コードをSpringサーバープロセスへプリロードすることで、フォークされたテストワーカーがCopy-on-Writeでメモリを共有し、テスト実行ごとの初期化コストを削減できます。Shopifyのモノリスでは毎回2.4秒かかっていた `require` コストの解消を目的として実装されています。

2026年05月01日 Claude Sonnet 4.6

Spring server起動時の環境変数がクライアントアプリに漏洩する問題を修正

Springサーバー起動時の環境変数が後続クライアントに漏洩する問題を修正。spawn_envのHash構築を変更し、未設定の環境変数もnilとして明示的に含めることで、fork時の環境変数削除を確実にしました。

2026年02月04日 Claude Sonnet 4.5

[rails/spring] シグナルによるプロセス終了時の終了コードを正しくクライアントに伝播

Springで子プロセスがシグナルで終了した際に、終了コードが正しくクライアントに伝わらず常に0が返される問題を修正。Process::Status#to_iを使用してシグナル終了時も適切な終了コード(128 + シグナル番号)を返すように改善。

2026年01月09日 Claude Sonnet 4.5

[rails/spring] Rails 8.1とRuby 4.0のサポートを追加、CI/CDパイプラインを強化

Railsの高速起動ツール「Spring」が、Rails 8.1とRuby 4.0のサポートを追加。CI/CDパイプラインに`summary`ジョブを追加してテストマトリックス全体の結果を正確に検出できるよう改善。Minitest 6未満への固定、Bundlerコマンドの更新など、最新環境への対応を進めています。

2026年01月08日 Claude Sonnet 4.5

© 2026 DiffDaily - Powered by AI

タケユー・ウェブ