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 廃止予定
Array
、Range
、Date
、DateTime
、Time
、BigDecimal
、Float
、Integer
の#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フォーラムで大歓迎です。