[Rails] Queue Classic Active Jobアダプターの非推奨化

rails/rails

背景

RailsのActive Jobは、さまざまなバックエンドキューシステムに対応するためのアダプターを提供してきました。しかし、保守性とコードベースの健全性を保つため、Rails 7以降、組み込みアダプターを段階的にgemとして分離する方針が進められています(#52929)。

今回、最後の分離対象としてqueue_classicアダプターが非推奨化されました。queue_classicは2年以上活発な開発が行われておらず、アップストリームへの統合提案(QueueClassic/queue_classic#354)も応答がない状態が続いていました。

技術的な変更内容

非推奨化の実装

Queue Classicアダプターにcheck_adapterメソッドが追加され、アダプター使用時に非推奨警告が表示されるようになりました。

変更後:

def check_adapter
  ActiveJob.deprecator.warn <<~MSG.squish
    The built-in `queue_classic` adapter is deprecated and will be removed in Rails 9.0.
  MSG
end

このcheck_adapterメソッドは、アダプターが設定される際に自動的に呼び出され、Rails 9.0での完全削除を予告する警告を出力します。

テストの追加

非推奨警告が正しく動作することを確認するテストケースが追加されました。

if adapter_is?(:queue_classic)
  test "queue classic adapter should be deprecated" do
    before_adapter = ActiveJob::Base.queue_adapter

    msg = <<~MSG.squish
      The built-in `queue_classic` adapter is deprecated and will be removed in Rails 9.0.
    MSG
    assert_deprecated(msg, ActiveJob.deprecator) do
      ActiveJob::Base.queue_adapter = :queue_classic
    end

  ensure
    ActiveJob::Base.queue_adapter = before_adapter
  end
end

影響と移行パス

現在queue_classicを使用しているプロジェクトは、Rails 9.0までに以下のいずれかの対応が必要です:

  1. 別のアダプターへの移行: Sidekiq、Resque、Delayed Jobなど、活発にメンテナンスされているアダプターへの移行
  2. 独立したgemとしての使用: 将来的にqueue_classic側でアダプターがgemとして提供される可能性に期待

非推奨期間はRails 8系全体を通して継続し、Rails 9.0で完全に削除される予定です。この猶予期間中に移行を完了することが推奨されます。

まとめ

この変更により、Railsのコア機能として組み込まれていたすべてのActive Jobアダプターの分離が完了しました。Railsチームは保守性の高いコアを維持しつつ、活発なエコシステムによるアダプター開発を促進する方針を明確にしています。Queue Classicユーザーは早期の移行計画立案が推奨されます。

記事メタデータ

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

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

記事で引用されているコードブロックは、PRのDiff内容と完全に一致しています。ファイルパスも正確です。使用されている技術用語(Active Job, アダプター, 非推奨化など)は適切であり、変更内容に関する技術的な説明も正確かつ論理的です。

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

元のPR情報との一致度

記事の主張の大部分はPRのDescriptionやコード変更で裏付けられています。しかし、「非推奨期間はRails 8系全体を通して継続し」という部分は、PRに明記されていない妥当な推測です。ハルシネーションとは言えないものの、事実と推測の区別が必要です。

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