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

viewcomponent/view_component

https://github.com/ViewComponent/view_component

view_component 4.11.0 リリース:`render_in` シグネチャのRails互換性対応

view_component 4.11.0 がリリースされました。主な変更は `render_in` メソッドのシグネチャに `**_` を追加し、Rails #50623 との互換性を確保したことです。破壊的変更はなく、既存の利用者への影響はありません。

2026年05月19日 Claude Sonnet 4.6

`render_in` シグネチャを Rails の `**options` 対応に更新

Rails の `render_in` シグネチャ変更(`**options` の追加)に対応するため、ViewComponent の `Base`・`Collection`・`Instrumentation` の 3 クラスで `render_in(view_context, **_, &block)` へ更新しました。`**_` パターンにより後方互換性を維持しつつ、Rails の新しいレンダリングインターフェースとの整合性を確保しています。

2026年05月19日 Claude Sonnet 4.6

ネストされたラムダスロットのi18nスコープ解決バグを修正

ViewComponentのラムダバックドスロットで `t(".key")` を使用した際に翻訳スコープが中間コンポーネントに解決されていたバグを修正。`__vc_set_slot` 内でブロック定義時の仮想パスをローカル変数に保持し、ラムダブランチの `with_captured_virtual_path` に正しく渡すよう2行の変更で対応しています。

2026年05月16日 Claude Sonnet 4.6

ViewComponent 4.10.0 リリース:`eager_load` 環境での定数未初期化エラーを修正

ViewComponent 4.10.0 がリリースされました。`eager_load = true` のテスト環境で発生していた `NameError: uninitialized constant ViewComponent::SystemTestControllerNefariousPathError` を修正した版です。あわせてリリーススクリプトが `BUNDLE_IGNORE_RUBY_VERSION=1` を用いた統一ループに改善されています。

2026年05月12日 Claude Sonnet 4.6

`eager_load=true` 起動時の NameError を修正し、再発防止の Rake タスクを追加

`eager_load = true` でテスト環境を起動すると発生していた `NameError: uninitialized constant ViewComponent::SystemTestControllerNefariousPathError` を、`view_component/errors` の明示的な `require` 追加によって修正しました。あわせて、別プロセスで最小構成の Rails アプリを起動して eager_load の問題を検出する `eager_load_check` Rake タスクを追加し、CI での再発防止を図っています。

2026年05月12日 Claude Sonnet 4.6

Railsフォームヘルパーとの組み合わせでyield内容が誤った位置に出力されるバグを修正

ViewComponentがRailsの`form.label`などのフォームヘルパーとyieldブロックを組み合わせた際、ブロックの内容がタグの外側に出力されるバグを修正。根本原因はパーシャルレンダリング時にビューコンテキストの`@output_buffer`が差し替えられる一方、フォームビルダーがコンポーネントの古いバッファに対してキャプチャを行う同期ずれで、`capture`メソッドのオーバーライドで対処しています。

2026年05月08日 Claude Sonnet 4.6

ViewComponent 4.9.0 リリース:パストラバーサル脆弱性の修正

ViewComponent 4.9.0 がリリースされました。`ViewComponentsSystemTestController` に存在したパストラバーサル脆弱性を修正したセキュリティリリースです。`start_with?` による文字列前方一致をディレクトリセパレータを考慮した正確なパス検証に置き換え、不正なパスへのアクセスは未処理の例外ではなく 404 を返すように変更されています。

2026年05月06日 Claude Sonnet 4.6

yard-lint をCIに追加し、YARDドキュメントの品質を継続的に担保

view_componentプロジェクトにyard-lintを導入し、YARDドキュメントの静的検査をCIパイプラインに組み込みました。.yard-lint.ymlで段階的なルール有効化を設定し、既存の違反を修正してCIをグリーンな状態でスタートさせています。

2026年05月06日 Claude Sonnet 4.6

ViewComponent 4.8.0 リリース:`sidecar_files` への `name` ガード節追加と起動時コンパイルの計測機能

ViewComponent 4.8.0 がリリースされました。`sidecar_files` メソッドに `name` が `nil` の場合に早期リターンするガード節が追加されたほか、起動時のeagerコンパイルを `ActiveSupport::Notifications` で計測できる `compile.view_component` イベントが導入されています。

2026年04月23日 Claude Sonnet 4.6

ブート時の一括コンパイルを計測する `compile.view_component` イベントの追加

ViewComponentのブート時一括コンパイルが `compile.view_component` というActiveSupport::Notificationsイベントとして計測できるようになりました。`config.eager_load = true` の場合に常時発火し、設定不要で起動時のコンパイルコストを可視化できます。変更は `engine.rb` の初期化処理を `instrument` ブロックで囲む最小限の修正です。

2026年04月21日 Claude Sonnet 4.6

ViewComponent 4.7.0 リリース:スロット先読み時のキャッシュ不整合を修正

ViewComponent 4.7.0 がリリースされました。スロットに `render_in` より前にアクセスした際にコンテンツキャッシュが陳腐化するバグが修正されており、本リリースの変更内容はこの単一のバグ修正のみです。

2026年04月18日 Claude Sonnet 4.6

スロット述語が引き起こすコンテンツキャッシュ汚染の修正

`render_in` 実行前にスロット述語を呼び出すと `content` のキャッシュが汚染され、レンダリング時に渡したコンテンツブロックがサイレントに無視されるバグが修正されました。`render_in` メソッドに `remove_instance_variable(:@__vc_content)` の1行を追加し、評価済みフラグと合わせてキャッシュ値も完全に削除することで不整合を根本から解消しています。

2026年04月15日 Claude Sonnet 4.6

フォーマット指定なしテンプレートを持つコンポーネントを継承すると `NoMethodError` が発生するバグを修正

フォーマット指定なしのテンプレート(`.erb`)を持つコンポーネントを継承すると、子コンポーネントのコンパイル時に `undefined method 'upcase' for nil` が発生するバグを修正。`Template::File` の初期化処理で `details.format` が `nil` の場合に `DEFAULT_FORMAT`(`:html`)を補完するガード節を追加し、警告を出力しつつ動作を継続させる設計が採用された。

2026年04月02日 Claude Sonnet 4.6

`render.view_component` ペイロードにビューテンプレートパスを追加

`render.view_component` イベントのペイロードに `view_identifier` フィールドが追加され、レンダリングされたテンプレートファイル(`.html.erb` など)のパスを取得できるようになりました。Coverband のようなカバレッジツールがビューテンプレートの使用状況を追跡できるようになります。`around_render` フックを利用して `ensure` ブロックによるリセット前にテンプレートパスを退避する設計が採用されています。

2026年03月26日 Claude Sonnet 4.6

Rails 7.1以降で発生するプレビュー読み込みエラーを `require` への置き換えで修正

Rails 7.1でZeitwerk一本化に伴い削除された `require_dependency` を標準の `require` に置き換え、モダンなRailsアプリでViewComponentのプレビュー読み込みが失敗する問題を修正しました。変更は `lib/view_component/preview.rb` の1行のみで、影響範囲を最小限に抑えた対応です。

2026年03月26日 Claude Sonnet 4.6

`render?` が false のとき `render_in` が html_safe な文字列を返すよう修正

`render?` が `false` を返すコンポーネントの `render_in` が通常の `String` を返していたため、`SafeBuffer` との連結で `TypeError` が発生していた問題を修正。`"".html_safe` を返すよう1行変更し、レンダリングパスとの戻り値の型を統一しました。

2026年03月26日 Claude Sonnet 4.6

ViewComponent 4.5.0リリース: Sprocketsでの初期化順序問題を修正

ViewComponent 4.5.0がリリースされ、Sprocketsを使用する環境での初期化順序に起因するアセット不足エラーが修正されました。本リリースではバージョン番号の更新と依存関係の更新が行われ、複数のRailsバージョン(7.1、7.2、8.0、8.1、main)に対応したGemfile.lockが個別に管理されています。

2026年02月27日 Claude Sonnet 4.5

Sprocketsの初期化順序問題を解決し、アセット読み込みエラーを修正

ViewComponent 4.0で発生していたSprocketsのアセット読み込みエラーを修正。初期化フックを`after_initialize`から`after_routes_loaded`に変更し、eager loading環境での初期化順序問題を解決しました。

2026年02月25日 Claude Sonnet 4.5

マルチラインテンプレートアノテーションに対応したセミコロン区切りによる行抽出

テンプレートアノテーション行の削除処理を改行ベースからセミコロン区切りに変更し、Railsのマルチラインアノテーション形式に対応。正規表現による不完全な除去を解消し、不正なRubyコードの`eval`エラーを防止しています。

2026年02月13日 Claude Sonnet 4.5

Ruby Coverage実行時のSegmentation Fault修正

Rails 8.1環境でテンプレートアノテーションを無効化した状態でRuby Coverageを実行すると発生していたSegmentation Faultが修正されました。条件分岐を単純化し、Coverage実行時は常に`lineno = 0`とすることで、環境設定の組み合わせによる予期しない動作を排除しています。

2026年02月13日 Claude Sonnet 4.5
1 2 次へ

© 2026 DiffDaily - Powered by AI

タケユー・ウェブ