https://github.com/ViewComponent/view_component
ViewComponent 4.5.0がリリースされ、Sprocketsを使用する環境での初期化順序に起因するアセット不足エラーが修正されました。本リリースではバージョン番号の更新と依存関係の更新が行われ、複数のRailsバージョン(7.1、7.2、8.0、8.1、main)に対応したGemfile.lockが個別に管理されています。
ViewComponent 4.0で発生していたSprocketsのアセット読み込みエラーを修正。初期化フックを`after_initialize`から`after_routes_loaded`に変更し、eager loading環境での初期化順序問題を解決しました。
テンプレートアノテーション行の削除処理を改行ベースからセミコロン区切りに変更し、Railsのマルチラインアノテーション形式に対応。正規表現による不完全な除去を解消し、不正なRubyコードの`eval`エラーを防止しています。
Rails 8.1環境でテンプレートアノテーションを無効化した状態でRuby Coverageを実行すると発生していたSegmentation Faultが修正されました。条件分岐を単純化し、Coverage実行時は常に`lineno = 0`とすることで、環境設定の組み合わせによる予期しない動作を排除しています。
ViewComponentの`with_request_url`テストヘルパーに`protocol:`パラメータが追加され、HTTPSプロトコルのテストが容易になりました。環境変数を直接操作することなく、`:http`や`:https`のシンボルで宣言的にプロトコルを指定できます。
ViewComponent 4.3.0では、サードパーティのテンプレートハンドラのロード順序問題と、Rails 8.1でのERBテンプレート使用時のセグメンテーションフォールトが修正されました。多様なテンプレートエンジンとの統合性と、最新のRails環境での安定性が向上しています。
Rails 8.1以降でRubyのCoverageモジュール有効時に発生するセグメンテーション違反を修正。負のlineno値によるクラッシュを、カバレッジ実行時にアノテーション行を削除する方式で解決し、すべての環境で正確な行番号を維持できるようになりました。
ViewComponent 4.0でActionView::Baseの継承を削除した影響で、Slimなどのテンプレートハンドラのロード順が変わり、一部のコンポーネントでテンプレートが認識されない問題が発生。ActionView::Baseを明示的にrequireすることで、ロードフックのタイミングを制御し、従来の動作を復元した。
ViewComponentのローカル開発環境で発生していた警告を解消するため、Rubyバージョンの更新、minitest-mockの明示的な追加、非推奨設定の削除、テストコードの整理が行われました。