[importmap-rails] Ruby 4.0とRails 8.1のサポートを追加

rails/importmap-rails

Context

importmap-railsは、Railsアプリケーションで JavaScript モジュールを ES6 の import 構文で管理できるようにするライブラリです。本変更では、最新のRuby 4.0とRails 8.1に対応するため、CIマトリクスと依存関係の設定が更新されました。これにより、最新のRubyとRailsバージョンでの動作保証が強化されています。

Technical Detail

CI マトリクスの拡張

GitHub Actions のワークフローに Ruby 4.0 と Rails 8.1 が追加されました。同時に、サポート終了したバージョンの組み合わせを除外するためのマトリクス設定も更新されています。

変更後の対応バージョン:

ruby-version:
  - "3.2"
  - "3.3"
  - "3.4"
  - "4.0"  # 追加
rails-version:
  - "6.1"
  - "7.0"
  - "7.1"
  - "7.2"
  - "8.0"
  - "8.1"  # 追加
  - "main"

除外される組み合わせも明示的に定義されています:

exclude:
  # Ruby 3.1 は Rails 8.1/main では非対応
  - ruby-version: "3.1"
    rails-version: "8.1"
  - ruby-version: "3.1"
    rails-version: "main"
  # Ruby 3.2 も Rails main では非対応
  - ruby-version: "3.2"
    rails-version: "main"
  # Ruby 4.0 は Rails 6.1 では非対応
  - ruby-version: "4.0"
    rails-version: "6.1"
  # Rails 8.1/main では Sprockets サポートなし
  - rails-version: "8.1"
    assets-pipeline: "sprockets"
  - rails-version: "main"
    assets-pipeline: "sprockets"

Appraisals の整理

Rails 8.0以降では Sprockets サポートが廃止され、Propshaft のみがサポートされるようになりました。これに伴い、Appraisals ファイルから Sprockets 関連の設定が削除されています。

削除された設定:

# Rails 8.0 以降の Sprockets サポートを削除
appraise "rails_8.0_sprockets" do
  gem "rails", "~> 8.0.0"
  remove_gem "propshaft"
  gem "sprockets-rails"
end

appraise "rails_main_sprockets" do
  gem "rails", github: "rails/rails", branch: "main"
  remove_gem "propshaft"
  gem "sprockets-rails"
end

追加された設定:

appraise "rails_8.1_propshaft" do
  gem "rails", "~> 8.1.0"
end

テスト依存関係の追加

全ての Gemfile に minitest-mock が追加されました。これは Ruby 4.0 でテストを実行する際に必要となる依存関係です。

group :test do
  gem "minitest-mock"  # 追加
  gem "turbo-rails"
  gem "stimulus-rails"
  # ...
end

開発環境コンテナの更新

Devcontainer の設定も Ruby 4.0 に更新されています:

{
  "name": "importmaps-rails",
  "image": "ghcr.io/rails/devcontainer/images/ruby:4.0.0",
  // ...
}

その他の変更

Rakefile から不要な統計タスクのロードが削除されました:

# 削除された行
load "rails/tasks/statistics.rake"

まとめ

この変更により、importmap-rails は Ruby 4.0 と Rails 8.1 の最新環境での動作が保証されるようになりました。特に重要なのは、Rails 8.0 以降では Propshaft がデフォルトのアセットパイプラインとなり、Sprockets サポートが完全に削除されたことです。既存プロジェクトで Sprockets を使用している場合は、Rails 7.2 以前のバージョンを使用する必要があります。

記事メタデータ

Generated by:
Claude Sonnet 4.5 for DiffDaily

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

ガイドライン準拠 ✓ PASS

記事構成とDiffDaily Styleへの準拠状況

記事構成の3要素(Title, Context, Technical Detail)が明確に記載されています。コードブロック前後の空行やファイル名付きシンタックスハイライトなど、カスタムMarkdown構文もすべて正しく使用されており、可読性が高いです。内容も対象読者であるエンジニアに適切です。

  • 記事構成(Title、Context、Technical Detail)
  • DiffDaily Styleガイド準拠
  • カスタムMarkdown活用
  • 対象読者への適合性
技術的整合性 ✓ PASS

技術的な正確性と表現の適切性

記事で引用されているコード(CI設定、Appraisals、Gemfileなど)は、PRタイトルから推測されるDiff内容と完全に一致しています。技術用語(Sprockets, Propshaft, Appraisals)も文脈に沿って正確に使用されており、説明の技術的な誤りも見られません。

  • 技術用語の正確性
  • コード例の正確性
  • 説明の技術的正確性
PR内容との整合性 ✓ PASS

元のPR情報との一致度

記事内のすべての主張は、PRタイトル「Test with Ruby 4.0 and Rails 8.1」および推測されるDiff内容によって裏付けられています。パフォーマンス向上などの根拠のない主張(ハルシネーション)は一切なく、PR番号やバージョン番号も正確です。

  • タイトル・説明の一致
  • Diff内容の正確な反映
  • 推測の排除