edge
詳細はrubyonrails.orgで: もっとRuby on Rails

Ruby on Rails 7.0 リリースノート

Rails 7.0 のハイライト:

1 Rails 7.0 へのアップグレード

既存のアプリケーションをアップグレードする場合、アップグレードする前に十分なテストカバレッジを持っていることが重要です。また、まだ行っていない場合は、まず Rails 6.1 にアップグレードし、アプリケーションが予想どおりに動作することを確認してから、Rails 7.0 への更新を試みてください。アップグレード時に注意するべき事項のリストは、Ruby on Rails のアップグレードガイドで利用できます。

2 主な機能

3 Railties

詳細な変更点については、Changelog を参照してください。

3.1 削除

  • dbconsole 内の config が非推奨となりました。

3.2 廃止予定

3.3 注目すべき変更点

  • Sprockets はオプションの依存関係となりました

    rails ジェムはもはや sprockets-rails に依存しません。アプリケーションがまだ Sprockets を使用する必要がある場合は、Gemfile に sprockets-rails を追加してください。

    gem "sprockets-rails"
    

4 Action Cable

詳細な変更点については、Changelog を参照してください。

4.1 削除

4.2 廃止予定

4.3 注目すべき変更点

5 Action Pack

詳細な変更点については、Changelog を参照してください。

5.1 削除

  • ActionDispatch::Response.return_only_media_type_on_content_type が非推奨となりました。

  • Rails.config.action_dispatch.hosts_response_app が非推奨となりました。

  • ActionDispatch::SystemTestCase#host! が非推奨となりました。

  • fixture_path を基準とした fixture_file_upload への相対パスのサポートが非推奨となりました。

5.2 廃止予定

5.3 注目すべき変更点

6 Action View

詳細な変更点については、Changelog を参照してください。

6.1 削除

  • Rails.config.action_view.raise_on_missing_translations が非推奨となりました。

6.2 廃止予定

6.3 注目すべき変更点

  • button_to は、URL の構築にオブジェクトが使用される場合、HTTP メソッド [method] を推測します。

    button_to("Do a POST", [:do_post_action, Workshop.find(1)])
    # Before
    #=>   <input type="hidden" name="_method" value="post" autocomplete="off" />
    # After
    #=>   <input type="hidden" name="_method" value="patch" autocomplete="off" />
    

7 Action Mailer

詳細な変更点については、Changelog を参照してください。

7.1 削除

  • ActionMailer::DeliveryJob および ActionMailer::Parameterized::DeliveryJob が非推奨となり、ActionMailer::MailDeliveryJob に置き換えられました。

7.2 廃止予定

7.3 注目すべき変更点

8 Active Record

詳細な変更点については、Changelog を参照してください。

8.1 削除

  • connected_to から database キーワード引数が削除されました。

  • ActiveRecord::Base.allow_unsafe_raw_sql が非推奨となりました。

  • configs_for メソッドのオプション :spec_name が非推奨となりました。

  • Rails 4.2 および 4.1 の形式で ActiveRecord::Base インスタンスを YAML でロードするサポートが非推奨となりました。

  • PostgreSQL データベースで :interval カラムが使用されている場合の非推奨警告が削除されました。

    現在、interval カラムは文字列の代わりに ActiveSupport::Duration オブジェクトを返します。

    古い動作を維持するには、モデルに次の行を追加できます。

    attribute :column, :string
    
  • 接続の解決に "primary" を接続仕様名として使用するサポートが非推奨となりました。

  • ActiveRecord::Base オブジェクトをクォートするサポートが非推奨となりました。

  • データベース値への型キャストを行う ActiveRecord::Base オブジェクトへのサポートが非推奨となりました。

  • type_cast にカラムを渡すサポートが非推奨となりました。

  • DatabaseConfig#config メソッドが非推奨となりました。

  • 次の rake タスクが非推奨となりました:

    • db:schema:load_if_ruby
    • db:structure:dump
    • db:structure:load
    • db:structure:load_if_sql
    • db:structure:dump:#{name}
    • db:structure:load:#{name}
    • db:test:load_structure
    • db:test:load_structure:#{name}
  • 非決定的な順序で検索するための Model.reorder(nil).first の非推奨サポートが削除されました。

  • Tasks::DatabaseTasks.schema_up_to_date?environment 引数と name 引数が非推奨となりました。

  • Tasks::DatabaseTasks.dump_filename が非推奨となりました。

  • Tasks::DatabaseTasks.schema_file が非推奨となりました。

  • Tasks::DatabaseTasks.spec が非推奨となりました。

  • Tasks::DatabaseTasks.current_config が非推奨となりました。

  • ActiveRecord::Connection#allowed_index_name_length が非推奨となりました。

  • ActiveRecord::Connection#in_clause_length が非推奨となりました。

  • ActiveRecord::DatabaseConfigurations::DatabaseConfig#spec_name が非推奨となりました。

  • ActiveRecord::Base.connection_config が非推奨となりました。

  • ActiveRecord::Base.arel_attribute が非推奨となりました。

  • ActiveRecord::Base.configurations.default_hash が非推奨となりました。

  • ActiveRecord::Base.configurations.to_h が非推奨となりました。

  • ActiveRecord::Result#map! および ActiveRecord::Result#collect! が非推奨となりました。

  • ActiveRecord::Base#remove_connection が非推奨となりました。

8.2 廃止予定

  • Tasks::DatabaseTasks.schema_file_type が廃止予定となりました。

8.3 注目すべき変更点

  • ブロックが予想よりも早く返された場合、トランザクションをロールバックします。

    この変更前では、トランザクションブロックが早期に返された場合、トランザクションはコミットされてしまいました。

    問題は、トランザクションブロック内でタイムアウトが発生した場合も不完全なトランザクションがコミットされてしまうことです。この誤りを避けるために、トランザクションブロックはロールバックされます。

  • 同じカラムに対する条件のマージは、もはや両方の条件を維持せず、常に後の条件で置き換えられるようになりました。

    # Rails 6.1 (IN 句はマージ先側の等値条件に置き換えられます)
    Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob]
    # Rails 6.1 (両方の競合する条件が存在し、非推奨)
    Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => []
    # Rails 6.1 から Rails 7.0 の動作に移行するための rewhere
    Author.where(id: david.id..mary.id).merge(Author.where(id: bob), rewhere: true) # => [bob]
    # Rails 7.0 (IN 句と同じ動作で、マージ先側の条件が一貫して置き換えられます)
    Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob]
    Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => [bob]
    

    Active Storage

詳細な変更については、Changelogを参照してください。

8.4 削除

8.5 廃止予定

8.6 注目すべき変更点

9 Active Model

詳細な変更については、Changelogを参照してください。

9.1 削除

  • ActiveModel::Errorsインスタンスの非推奨な列挙をハッシュとして削除しました。

  • 非推奨なActiveModel::Errors#to_hを削除しました。

  • 非推奨なActiveModel::Errors#slice!を削除しました。

  • 非推奨なActiveModel::Errors#valuesを削除しました。

  • 非推奨なActiveModel::Errors#keysを削除しました。

  • 非推奨なActiveModel::Errors#to_xmlを削除しました。

  • ActiveModel::Errors#messagesへのエラーの連結をサポートする機能を削除しました。

  • ActiveModel::Errors#messagesからエラーをクリアする機能を削除しました。

  • ActiveModel::Errors#messagesからエラーを削除する機能を削除しました。

  • ActiveModel::Errors#messages[]=を使用するサポートを削除しました。

  • Rails 5.xのエラーフォーマットをMarshalおよびYAMLでロードするサポートを削除しました。

  • Rails 5.xのActiveModel::AttributeSetフォーマットをMarshalでロードするサポートを削除しました。

9.2 廃止予定

9.3 注目すべき変更点

10 Active Support

詳細な変更については、Changelogを参照してください。

10.1 削除

  • 非推奨なconfig.active_support.use_sha1_digestsを削除しました。

  • 非推奨なURI.parserを削除しました。

  • 日時範囲内の値の包含をチェックするためにRange#include?を使用するサポートを非推奨にしました。

  • 非推奨なActiveSupport::Multibyte::Unicode.default_normalization_formを削除しました。

10.2 廃止予定

  • ArrayRangeDateDateTimeTimeBigDecimalFloatInteger#to_sにフォーマットを渡すことを非推奨にし、#to_fsを使用することを推奨しました。

    この非推奨は、RailsアプリケーションがRuby 3.1の最適化を利用できるようにするためのもので、一部のオブジェクトの補間を高速化します。

    新しいアプリケーションでは、これらのクラスの#to_sメソッドはオーバーライドされません。既存のアプリケーションでは、config.active_support.disable_to_s_conversionを使用できます。

10.3 注目すべき変更点

11 Active Job

詳細な変更については、Changelogを参照してください。

11.1 削除

  • 前のコールバックがthrow :abortで中断された場合に、after_enqueue/after_performコールバックを停止しなかった非推奨な動作を削除しました。

  • 非推奨な:return_false_on_aborted_enqueueオプションを削除しました。

11.2 廃止予定

  • Rails.config.active_job.skip_after_callbacks_if_terminatedを廃止しました。

11.3 注目すべき変更点

12 Action Text

詳細な変更については、Changelogを参照してください。

12.1 削除

12.2 廃止予定

12.3 注目すべき変更点

13 Action Mailbox

詳細な変更については、Changelogを参照してください。

13.1 削除

  • 非推奨なRails.application.credentials.action_mailbox.mailgun_api_keyを削除しました。

  • 非推奨な環境変数MAILGUN_INGRESS_API_KEYを削除しました。

13.2 廃止予定

13.3 注目すべき変更点

14 Ruby on Rails Guides

詳細な変更については、Changelogを参照してください。

14.1 注目すべき変更点

15 Credits

Railsに多くの時間を費やし、安定かつ堅牢なフレームワークにした多くの人々に感謝します。 Railsへの貢献者の完全なリストを参照して、彼ら全員に賞賛を送りましょう。

フィードバック

このガイドの品質向上にご協力ください。

タイポや事実の誤りを見つけた場合は、ぜひ貢献してください。 開始するには、ドキュメントへの貢献セクションを読んでください。

不完全なコンテンツや最新でない情報も見つかるかもしれません。 メインのドキュメントに不足しているドキュメントを追加してください。 修正済みかどうかは、まずEdge Guidesを確認してください。 スタイルと規約については、Ruby on Rails Guides Guidelinesを確認してください。

修正すべき点を見つけたが、自分で修正できない場合は、 問題を報告してください

そして最後に、Ruby on Railsのドキュメントに関するあらゆる議論は、公式のRuby on Railsフォーラムで大歓迎です。