Ruby on Rails 6.0 リリースノート

Rails 6.0の注目ポイント:

本リリースノートでは、主要な変更についてのみ説明します。多数のバグ修正および変更点については、GithubのRailsリポジトリにある各コミットのchangelogを参照してください。

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

既存のアプリケーションをアップグレードするのであれば、その前に質のよいテストカバレッジを用意するのはよい考えです。アプリケーションがRails 5.2までアップグレードされていない場合は先にそれを完了し、アプリケーションが正常に動作することを十分確認してからRails 6.0にアップデートしてください。アップグレードの注意点などについてはRailsアップグレードガイドを参照してください。

2 主要な機能

2.1 Action Mailbox

Pull Request

Action Mailboxは、受信メールをコントローラ的なメールボックスにルーティングできます。Action Mailboxの詳細はAction Mailboxの基礎を参照してください。

2.2 Action Text

Pull Request

Action Textは、リッチテキストコンテンツと編集機能をRailsで使えるようにします。Trixエディタは、リンク/引用/リスト/画像埋め込み/ギャラリーなどあらゆるものを扱えます。Trixエディタで生成されるリッチテキストコンテンツは独自のRichTextモデルに保存され、アプリ内にある既存のActive Recordモデルに関連付けられます。 埋め込み画像などの添付ファイルは自動的にActive Storageを用いて保存され、RichTextモデルに関連付けられます。

Action Textについて詳しくはガイドのAction Text の概要を参照してください。

2.3 並列テスト

Pull Request

並列テスト(parallel testing)機能によってテストスイートを並列化できます。デフォルトではプロセスをforkしますが、スレッド(threading)もサポートされます。テストを並列実行することで、テストスイート全体の実行時間を削減できます。

2.4 Action Cableのテスト支援

Pull Request

Action Cableテストツールを用いて、Action Cableの機能を任意のレベル(接続レベル/チャネルレベル/ブロードキャストレベル)でテストできます。

3 Railties

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

3.1 削除されたもの

  • プラグインテンプレートの非推奨化after_bundleヘルパーを削除 (Commit)

  • config.ruでアプリケーションクラスをrunの引数として用いる非推奨サポートを削除 (Commit)

  • railsコマンドから非推奨environment引数を削除 (Commit)

  • ジェネレータとテンプレートから非推奨のcapify!メソッドを削除 (Commit)

  • 非推奨のconfig.secret_token設定を削除 (Commit)

3.2 非推奨化

  • Rackサーバー名を正規の引数としてrails serverに渡すことを非推奨化 (Pull Request)

  • サーバーIPの指定にHOST環境変数を使えるようにするサポートを非推奨化 (Pull Request)

  • config_forから返されるハッシュにシンボルでないキーでアクセスすることを非推奨化 (Pull Request)

3.3 主な変更

  • rails serverコマンドでサーバーを指定する明示的な--using(または-u)オプションを追加 (Pull Request)

  • rails routes出力を拡張フォーマットで表示できる機能を追加 (Pull Request)

  • インラインのActive Jobアダプタを用いてデータベースseedタスクを実行 (Pull Request)

  • アプリケーションのデータベースを切り替えるrails db:system:changeコマンドを追加 (Pull Request)

  • Action Cableチャネルだけをテストするrails test:channelsコマンドを追加 (Pull Request)

  • DNSリバインディング攻撃からの保護を導入 (Pull Request)

  • ジェネレータコマンド実行中の失敗をabortする機能を追加 (Pull Request)

  • WebpackerがRails 6のデフォルトJavaScriptコンパイラになる (Pull Request)

  • rails db:migrate:statusコマンドでマルチデータベースをサポート (Pull Request)

  • ジェネレータでマルチデータベースごとに異なるパスを利用する機能を追加 (Pull Request)

  • credentialを複数の環境でサポート (Pull Request)

  • null_storeがtest環境のデフォルトキャッシュになる (Pull Request)

4 Action Cable

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

4.1 削除されたもの

  • ActionCable.startDebugging()ActionCable.stopDebugging()ActionCable.logger.enabledに置き換え(Pull Request

4.2 非推奨化

  • Rails 6.0のAction Cableで非推奨化された振る舞いはありません。

4.3 主な変更

  • cable.ymlでPostgreSQLサブスクリプションアダプタ向けのchannel_prefixサポートを追加 (Pull Request)

  • ActionCable::Server::Baseにカスタム設定を渡せるようになった (Pull Request)

  • :action_cable_connectionおよび:action_cable_channel読み込みフックを追加 (Pull Request)

  • Channel::Base#broadcast_toChannel::Base.broadcasting_forを追加 (Pull Request)

  • reject_unauthorized_connectionActionCable::Connectionから呼び出した場合に接続をクローズするようになった (Pull Request)

  • Action CableのJavaScriptをCoffeeScriptからES2015に変換し、npmディストリビューションでソースコードをパブリッシュするようになった (Pull Request)

  • WebSocketアダプタやロガーアダプタの設定をActionCableのプロパティからActionCable.adaptersに移動 (Pull Request)

  • Redisアダプタにidオプションが追加され、Action CableのRedis接続と区別されるようになった (Pull Request)

5 Action Pack

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

5.1 削除されたもの

  • 非推奨化されたfragment_cache_keyヘルパーを削除、今後はcombined_fragment_cache_keyを用いる (Commit)

  • ActionDispatch::TestResponseから非推奨化された次のメソッドを削除: #success?(今後は#successful?を使う)、#missing?(今後は#not_found?を使う)、#error?(今後は#server_error?を使う) (Commit)

5.2 非推奨化

  • ActionDispatch::Http::ParameterFilterを非推奨化、今後はActiveSupport::ParameterFilterを用いる (Pull Request)

  • コントローラレベルのforce_sslを非推奨化、今後はconfig.force_sslを用いる (Pull Request)

5.3 主な変更

  • ActionDispatch::Response#content_typeがContent-Typeヘッダーをそのまま返すよう変更 (Pull Request)

  • リソースparamにコロンが含まれている場合はArgumentErrorをraiseするようになった (Pull Request)

  • ActionDispatch::SystemTestCase.driven_byをブロック付きで呼ぶことで特定のブラウザの機能を定義できるようになった (Pull Request)

  • ActionDispatch::HostAuthorizationミドルウェアを追加(DNSリバインディング攻撃から保護する) (Pull Request)

  • parsed_bodyActionController::TestCase内で利用できるようになった (Pull Request)

  • 複数のルートルーティングが同じコンテキストに存在し、as:による命名仕様がない場合はArgumentErrorをraiseするようになった (Pull Request)

  • パラメータのパースエラーを#rescue_fromで扱えるようになった (Pull Request)

  • ActionController::Parameters#each_valueを追加(パラメータの列挙用) (Pull Request)

  • send_datasend_fileでContent-Dispositionファイル名をエンコードするようになった (Pull Request)

  • ActionController::Parameters#each_keyが公開された (Pull Request)

  • purposeメタデータを署名済み/暗号化済みcookieに追加(cookie値を別のcookieにコピーされないようにする) (Pull Request)

  • respond_to呼び出しが衝突した場合にActionController::RespondToMismatchErrorをraiseするようになった (Pull Request)

  • リクエストフォーマットでテンプレートが見つからない場合に使う明示的なエラーページを追加 (Pull Request)

  • ActionDispatch::DebugExceptions.register_interceptorを導入した(レンダリング開始前にDebugExceptionsにフックして例外を処理する手段のひとつ) (Pull Request)

  • 1リクエストに付きContent-Security-Policy(CSP)nonceヘッダー値を1つしか出力しないようになった (Pull Request)

  • Railsのコントローラで明示的にincludeできるデフォルトのヘッダー設定で主に用いられるモジュールを追加 (Pull Request)

  • #digActionDispatch::Request::Sessionに追加 (Pull Request)

6 Action View

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

6.1 削除されたもの

  • 非推奨化されたimage_altヘルパーを削除 (Commit)

  • 空のRecordTagHelperモジュールを削除(既にrecord_tag_helper gemに機能が移動済み) (Commit)

6.2 非推奨化

  • ActionView::Template.finalize_compiled_template_methodsが非推奨化(代替はなし) (Pull Request)

  • config.action_view.finalize_compiled_template_methodsが非推奨化(代替はなし) (Pull Request)

  • options_from_collection_for_selectビューヘルパーからのprivateモデルメソッドを呼び出すことが非推奨化 (Pull Request)

6.3 主な変更

  • developmentモードでのみAction Viewキャッシュをクリアしてdevelopmentモードを高速化 (Pull Request)

  • Railsの全npmパッケージを@railsスコープに移動 (Pull Request)

  • 登録済みMIMEタイプのフォーマットのみを受け付けるようになった (Pull RequestPull Request)

  • サーバー出力のレンダリング中にテンプレートやパーシャルにアロケーションを追加 (Pull Request)

  • date_selectタグにyear_formatオプションを追加(年の名前をカスタマイズ可能になった) (Pull Request)

  • javascript_include_tagヘルパー向けのnonce: trueオプションを追加(Content Security Policy用の自動nonceをサポート) (Pull Request)

  • action_view.finalize_compiled_template_methods設定を追加(ActionView::Templateファイナライザを無効または有効にできる) (Pull Request)

  • JavaScriptのconfirm呼び出しを自分自身に切り出し、rails_ujsのメソッドをオーバーライド可能にした (Pull Request)

  • action_controller.default_enforce_utf8設定オプションを追加(UTF-8エンコーディングの強制を制御、デフォルトはfalse) (Pull Request)

  • localeキーでsubmit_tagをサポートするI18nキースタイルをサポート

  • Add I18n key style support for locale keys to submit tags. (Pull Request)

7 Action Mailer

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

7.1 削除されたもの

7.2 非推奨化

  • ActionMailer::Base.receiveを非推奨化(今後はAction Mailboxを利用) (Commit)

  • DeliveryJobParameterized::DeliveryJobを非推奨化(今後はMailDeliveryJobを利用) (Pull Request)

7.3 主な変更

  • MailDeliveryJobを追加: 通常メールとパラメータ化メールのどちらの配信にも使える (Pull Request)

  • カスタムのメール配信ジョブをAction Mailerテストのアサーションで使えるようになった (Pull Request)

  • マルチパートのメールへのテンプレート名の指定を、アクション名だけではなくブロックでできるようになった (Pull Request)

  • perform_deliveriesdeliver.action_mailer通知のペイロードに追加 (Pull Request)

  • perform_deliveriesがfalseの場合のログメッセージを改善し、メール送信がスキップしたことがわかるようになった (Pull Request)

  • assert_enqueued_email_withをブロックなしで呼び出せるようになった (Pull Request)

  • キューに入ったassert_emailsブロック内のメール配信ジョブを実行するようになった (Pull Request)

  • ActionMailer::Baseのobserverやinterceptorの登録を解除できるようになった (Pull Request)

8 Active Record

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

8.1 削除されたもの

  • 非推奨の#set_stateをトランザクションオブジェクトから削除 (Commit)

  • 非推奨の#supports_statement_cache?をデータベースアダプタから削除 (Commit)

  • 非推奨の#insert_fixturesをデータベースアダプタから削除 (Commit)

  • 非推奨のActiveRecord::ConnectionAdapters::SQLite3Adapter#valid_alter_table_type?を削除 (Commit)

  • ブロックが1つ渡されたときにカラム名をsumに渡すサポートを廃止 (Commit)

  • ブロックが1つ渡されたときにカラム名をcountに渡すサポートを廃止 (Commit)

  • arelへのリレーション内で「missing」メソッドの委譲サポートを廃止 (Commit)

  • クラスのprivateメソッドへのリレーション内で「missing」メソッドの委譲サポートを廃止 (Commit)

  • #cache_keyのタイムスタンプ名指定のサポートを廃止 (Commit)

  • 非推奨のActiveRecord::Migrator.migrations_path=を削除 (Commit)

  • 非推奨のexpand_hash_conditions_for_aggregatesを削除 (Commit)

8.2 非推奨化

  • uniquenessバリデータで、大文字小文字が一致しない照合順序(collation)比較を非推奨化 (Commit)

  • レシーバのスコープが漏洩している場合のクラスレベルのクエリ送信メソッドを非推奨化 (Pull Request)

  • config.activerecord.sqlite3.represent_boolean_as_integerを非推奨化 (Commit)

  • migrations_pathsconnection.assume_migrated_upto_versionに渡すことを非推奨化 (Commit)

  • ActiveRecord::Result#to_hashを非推奨化、今後はActiveRecord::Result#to_aを用いる (Commit)

  • DatabaseLimitsの以下のメソッドを非推奨化: column_name_lengthtable_name_lengthcolumns_per_tableindexes_per_tablecolumns_per_multicolumn_indexsql_query_lengthjoins_per_query (Commit)

  • update_attributes/!を非推奨化、今後はupdate/!を用いる (Commit)

8.3 主な変更

  • SQLite3の最小バージョンを1.4に上げる (Pull Request)

  • rails db:prepareを追加: データベースが存在しない場合は作成してからマイグレーションを実行する (Pull Request)

  • after_save_commitコールバックを追加(after_commit :hook, on: [ :create, :update ]のショートカット) (Pull Request)

  • ActiveRecord::Relation#extract_associatedを追加: 関連付けられたレコードをリレーションから切り出す (Pull Request)

  • ActiveRecord::Relation#annotateを追加: ActiveRecord::RelationクエリにSQLコメントを追加する (Pull Request)

  • データベースにOptimizer Hintsを設定するサポートを追加 (Pull Request)

  • 一括INSERTを行うinsert_all/insert_all!/upsert_allメソッドを追加 (Pull Request)

  • rails db:seed:replantを追加: 現在の環境で各データベースのテーブルをTRUNCATEしてseedを読み込む (Pull Request)

  • reselectメソッドを追加(unscope(:select).select(fields)のショートハンド) (Pull Request)

  • すべてのenum値についてネガティブスコープを追加 (Pull Request)

  • #destroy_by#delete_byを追加: 条件付き削除を実行 (Pull Request)

  • データベース接続を自動的に切り替える機能を追加 (Pull Request)

  • 1つのブロック内でデータベースへの書き込みを防ぐ機能を追加 (Pull Request)

  • 接続切り替え用APIを追加(マルチデータベースサポート用) (Pull Request)

  • マイグレーションのタイムスタンプにデフォルトでprecision: 6を指定 (Pull Request)

  • MySQLでテキストやblobのサイズを変更する:sizeオプションを追加 (Pull Request)

  • dependent: :nullifyストラテジーのポリモーフィック関連付けで外部キーと外部typeカラムを両方ともNULLに設定 (Pull Request)

  • ActionController::Parametersの許可されたインスタンスをActiveRecord::Relation#exists?の引数として渡せるようになった (Pull Request)

  • Ruby 2.6で導入されたエンドレスrangeを#whereでサポート (Pull Request)

  • MySQLのテーブル作成オプションでROW_FORMAT=DYNAMICをデフォルトで設定 (Pull Request)

  • ActiveRecord.enumで生成されたスコープを無効にする機能を追加 (Pull Request)

  • カラムの暗黙のORDERが設定可能になった (Pull Request)

  • PostgreSQLの最小バージョンが9.3になり、9.1や9.2のサポートを廃止 (Pull Request)

  • enumの値がfrozenになり、変更しようとするとエラーがraiseするようになった (Pull Request)

  • ActiveRecord::StatementInvalidエラーのSQLがerrorプロパティになり、SQLバインドを独立したerrorプロパティとして含まれるようになった (Pull Request)

  • :if_not_existsオプションをcreate_tableに追加 (Pull Request)

  • rails db:schema:cache:dumprails db:schema:cache:clearにマルチデータベースのサポートを追加 and rails db:schema:cache:clear. (Pull Request)

  • ActiveRecord::Base.connected_toのデータベースハッシュでハッシュやURLの設定をサポート (Pull Request)

  • MySQLでデフォルト式や式インデックスをサポート (Pull Request)

  • change_tableマイグレーションヘルパーにindexオプションを追加 (Pull Request)

  • マイグレーションでのtransactionのrevertを修正(従来のtransaction内のコマンドが修正された) (Pull Request)

  • ActiveRecord::Base.configurations=がシンボルのハッシュで設定されるようになった (Pull Request)

  • レコードが実際に保存された場合にのみカウンタキャッシュが更新されるよう修正 (Pull Request)

  • SQLiteアダプタで式インデックスをサポート (Pull Request)

  • 関連付けられたレコードのautosaveコールバックをサブクラスで再定義できるようになった (Pull Request)

  • MySQLの最小バージョンが5.5.8に上がった (Pull Request)

  • MySQLでデフォルトでutf8mb4文字セットが使われるようになった (Pull Request)

  • #inspectの個人情報データをフィルタで除外する機能を追加 (Pull Request, Pull Request)

  • ActiveRecord::Base.configurationsの戻り値をハッシュからオブジェクトに変更 (Pull Request)

  • データベース設定にアドバイザリーロック(勧告ロック)を無効にする設定を追加 (Pull Request)

  • SQLite3アダプタのalter_tableメソッドを更新し、外部キーをリストアするようになった (Pull Request)

  • remove_foreign_key:to_tableオプションをロールバックできるようにした (Pull Request)

  • MySQLのtime型でprecisionが指定されている場合のデフォルト値を修正 (Pull Request)

  • touchオプションの挙動をPersistence#touchの挙動に合わせて修正 (Pull Request)

  • マイグレーションでカラム定義が重複した場合に例外をraiseするようになった (Pull Request)

  • SQLiteの最小バージョンが3.8に上がった (Pull Request)

  • 子レコードが重複している場合に親レコードが保存されない問題を修正 (Pull Request)

  • Associations::CollectionAssociation#sizeAssociations::CollectionAssociation#empty?で読み込み済みの関連idが存在する場合はそれを使うようになった (Pull Request)

  • リクエストされた関連付けが一部のレコードにない場合にポリモーフィック関連付けをプリロードするサポートを追加 (Commit)

  • touch_allメソッドをActiveRecord::Relationに追加 (Pull Request)

  • ActiveRecord::Base.base_class?述語メソッドを追加 (Pull Request)

  • ActiveRecord::Store.store_accessorにカスタムprefix/suffixオプションを追加 (Pull Request)

  • ActiveRecord::Base.create_or_find_by/!を追加: データベースのunique制限に依存する形でActiveRecord::Base.find_or_create_by/!でSELECTやINSERTの競合を扱う (Pull Request)

  • Relation#pickを追加(pluckで単独の値を取るショートハンド) (Pull Request)

9 Active Storage

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

9.1 削除されたもの

9.2 非推奨化

  • config.active_storage.queueを非推奨化(今後はconfig.active_storage.queues.analysisconfig.active_storage.queues.purgeを利用) (Pull Request)

  • ActiveStorage::Downloadingを非推奨化(今後はActiveStorage::Blob#openを利用) (Commit)

  • 画像のvariant生成にmini_magickを直接使うことを非推奨化(今後はimage_processingを利用) (Commit)

  • Active StorageのImageProcessing変換の:combine_optionsを非推奨化(代替はなし) (Commit)

9.3 主な変更

  • BMP画像variant生成のサポートを追加(Pull Request

  • TIFF画像variant生成のサポートを追加 (Pull Request)

  • プログレッシブJPEG画像variant生成のサポートを追加 (Pull Request)

  • ActiveStorage.routes_prefixを追加(Active Storageで生成されたルーティングの設定用) (Pull Request)

  • ActiveStorage::DiskController#showでリクエストされたファイルがディスクサービス上で見つからない場合に「404 Not Found」レスポンスを生成するようになった (Pull Request)

  • ActiveStorage::Blob#downloadActiveStorage::Blob#openでリクエストされたファイルが見つからない場合にActiveStorage::FileNotFoundErrorをraiseするようになった (Pull Request)

  • ジェネリックなActiveStorage::Errorクラスを追加(Active Storageの例外はこれを継承する) (Commit)

  • レコードにアップロードされたファイルを即座でない形で保存するとストレージで永続化するようになった (Pull Request)

  • 添付ファイルのコレクションへの代入を、追加ではなく既存ファイルを置き換える(@user.update!(images: [ … ])のように)オプション。この振る舞いを制御するにはconfig.active_storage.replace_on_assign_to_manyを使うこと。 (Pull RequestPull Request)

  • 既存のActive Recordリフレクションメカニズムで定義された添付ファイルをリフレクションできるようになった (Pull Request)

  • ActiveStorage::Blob#openを追加(blobをディスク上のテンプレートにダウンロードしてtempfileをyieldする) (Commit)

  • Google Cloud Storageからのストリーミングダウンロードをサポート(google-cloud-storage gem 1.11以降が必要) (Pull Request)

  • Active Storageのvariantにimage_processing gemを使うようになった(mini_magickの利用を直接置き換える) (Pull Request

10 Active Model

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

10.1 削除されたもの

10.2 非推奨化

10.3 主な変更

  • ActiveModel::Errors#full_messageのフォーマットをカスタマイズする設定オプションを追加 (Pull Request)

  • has_secure_passwordの属性名を設定するサポートを追加 (Pull Request)

  • #slice!メソッドをActiveModel::Errorsに追加 (Pull Request)

  • ActiveModel::Errors#of_kind?を追加: 特定のエラーが存在するかどうかをチェックする (Pull Request)

  • ActiveModel::Serializers::JSON#as_jsonのタイムスタンプを修正 (Pull Request)

  • 数値バリデータを修正(Active Recordを除きbefore_type_castの値を引き続き使う) (Pull Request)

  • BigDecimalFloat数値の場合の数値の等しさのバリデーションを修正(バリデーションする双方をBigDecimalに変換) (Pull Request)

  • マルチパラメータのtimeハッシュを変換するときの年の値を修正 (Pull Request)

  • boolean属性上のfalsyなbooleanシンボルをfalseに型変換するようになった (Pull Request)

  • ActiveModel::Type::Datevalue_from_multiparameter_assignmentでパラメータを変換するときに正しい日付を返すようになった (Pull Request)

  • フェッチした訳文がエラーの場合に、親のロケールにフォールバックしてから:errors名前空間にフォールバックするようになった (Pull Request)

11 Active Support

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

11.1 削除されたもの

  • 非推奨の#acronym_regexInflectionsから削除 (Commit)

  • 非推奨のModule#reachable?を削除 (Commit)

  • Kernel#を削除(代替はなし) (Pull Request)

11.2 非推奨化

  • String#firstString#lastで負のinteger引数を渡すことを非推奨化 (Pull Request)

  • ActiveSupport::Multibyte::Unicode#downcase/upcase/swapcaseを非推奨化(今後はString#downcase/upcase/swapcaseを利用) (Pull Request)

  • ActiveSupport::Multibyte::Unicode#normalizeActiveSupport::Multibyte::Chars#normalizeを非推奨化(今後はString#unicode_normalizeを利用) (Pull Request)

  • ActiveSupport::Multibyte::Chars.consumes?を非推奨化(今後はString#is_utf8?を利用) (Pull Request)

  • ActiveSupport::Multibyte::Unicode#pack_graphemes(array)ActiveSupport::Multibyte::Unicode#unpack_graphemes(string)を非推奨化(今後はそれぞれarray.flatten.pack("U*")string.scan(/\X/).map(&:codepoints)を利用) (Pull Request)

11.3 主な変更

  • パラレルテストのサポートを追加 (Pull Request)

  • String#strip_heredocで文字列のfrozen状態が保護されるようになった (Pull Request)

  • String#truncate_bytesを追加(マルチバイト文字や書記素(grapheme)クラスタを壊さない形で文字列を最大バイトサイズまでtruncateする) (Pull Request)

  • delegateメソッドにprivateオプションを追加(privateメソッドへの委譲に使う)。このオプションはtrue/falseを値に取れる。 (Pull Request)

  • ActiveSupport::Inflector#ordinalActiveSupport::Inflector#ordinalizeでI18nによる訳文への置き換えをサポート (Pull Request)

  • before?メソッドとafter?メソッドを以下に追加: DateDateTimeTimeTimeWithZone (Pull Request)

  • 入力でUnicode文字とエスケープ文字が混在している場合にURI.unescapeが失敗するバグを修正

  • Fix bug where URI.unescape would fail with mixed Unicode/escaped character input. (Pull Request)

  • 圧縮が有効な場合にActiveSupport::Cacheのストレージサイズが激増するバグを修正 (Pull Request)

  • Redisキャッシュストア: delete_matchedがRedisサーバーをブロックしないようになった (Pull Request)

  • ActiveSupport::TimeZone::MAPPINGで定義されたタイムゾーンのtzinfoデータが見つからない場合にActiveSupport::TimeZone.allが失敗するバグを修正 (Pull Request)

  • Enumerable#index_withを追加(渡されたブロックかデフォルト引数の値を持つenumerableからハッシュを作成できる) (Pull Request)

  • Range#===メソッドやRange#cover?メソッドをRangeの引数で使えるようになった (Pull Request)

  • RedisCacheStoreのincrement/decrement操作でキーの期限をサポート (Pull Request)

  • LogSubscriberイベントにCPU timeとidle timeとアロケーションの機能を追加 (Pull Request)

  • ActiveSupport::NotificationsシステムにEventObjectのサポートを追加 (Pull Request)

  • nilエントリをキャッシュしないオプションを追加(ActiveSupport::Cache#fetchskip_nilオプションが新たに追加) (Pull Request)

  • Array#extract!を追加(ブロックがtrueを返す要素を削除して返す) (Pull Request)

  • HTML-safe文字列をスライス後もHTML-safeに維持 (Pull Request)

  • ログでの定数autoloadのトレースをサポート (Commit)

  • unfreeze_timetravel_backのエイリアスとして定義 (Pull Request)

  • ActiveSupport::TaggedLogging.newを変更(引数のロガーインスタンスを改変するのではなく新しいロガーインスタンスを返すようになった) (Pull Request)

  • #delete_prefixメソッド、#delete_suffixメソッド、#unicode_normalizeメソッドをHTML-safeではないメソッドとして扱うようになった (Pull Request)

  • #withoutActiveSupport::HashWithIndifferentAccessでシンボル引数の場合に失敗することがあったバグを修正 (Pull Request)

  • メソッド名変更(Module#parentmodule_parentに、Module#parentsmodule_parentsに、Module#parent_namemodule_parent_nameに) (Pull Request)

  • ActiveSupport::ParameterFilterを追加 (Pull Request)

  • durationにfloatが追加されたときに秒に丸められる問題を修正 (Pull Request)

  • #to_optionsActiveSupport::HashWithIndifferentAccess#symbolize_keysのエイリアスに設定 (Pull Request)

  • あるConcernで同じブロックを複数回includeした場合に例外をraiseしないようになった (Pull Request)

  • ActiveSupport::CacheStore#fetch_multiに渡されたキーの順序を維持するようになった (Pull Request)

  • String#safe_constantizeを修正(定数参照の大文字小文字が誤っている場合にLoadErrorをスローしないようになった) (Pull Request)

  • Hash#deep_transform_valuesHash#deep_transform_values!を追加 (Commit)

  • ActiveSupport::HashWithIndifferentAccess#assocを追加 (Pull Request)

  • before_resetコールバックをCurrentAttributesに追加し、それと対称的になるようafter_resetresetsのエイリアスとして定義 (Pull Request)

  • ActiveSupport::Notifications.unsubscribeを変更(Regexなどのマルチパターンサブスクライバを正しく扱えるようになった) (Pull Request)

  • Zeitwerkを用いる新しいオートローディングメカニズムを追加 (Commit)

  • Array#includingEnumerable#includingを追加(コレクションを簡単に拡大できるようになった) (Commit)

  • メソッドをリネーム(Array#withoutArray#excludingに、Enumerable#withoutEnumerable#excludingに、古いメソッド名はエイリアスとして残される) (Commit)

  • transliterateparameterizelocaleを提供 (Pull Request)

  • Time#advanceを修正(1001-03-07より前の日付を正しく扱えるようになった) (Pull Request)

  • ActiveSupport::Notifications::Instrumenter#instrumentを更新(ブロックを渡さなくても使えるようになった) (Pull Request)

  • サブクラスのトラッカーで弱い参照を用いるようになった(無名サブクラスがGCされるようになった) (Pull Request)

  • テストメソッドをwith_info_handlerで呼ぶとminitestフックのプラグインを動かせるようになった (Commit)

  • html_safe?のステータスをActiveSupport::SafeBuffer#*で維持するようになった (Pull Request)

12 Active Job

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

12.1 削除されたもの

12.2 非推奨化

12.3 主な変更

  • Active Jobの引数にカスタムシリアライザのサポートを追加 (Pull Request)

  • キューが送信されたタイムゾーンでActive Jobを実行するサポートを追加 they were enqueued. (Pull Request)

  • retry_ondiscard_onに複数の例外を渡せるようになった (Commit)

  • assert_enqueued_withassert_enqueued_email_withをブロックなしで呼べるようになった (Pull Request)

  • enqueueenqueue_atの通知を、after_enqueueでラップするのではなくaround_enqueueでラップするようになった (Pull Request)

  • perform_enqueued_jobsをブロックなしで呼べるようになった (Pull Request)

  • assert_performed_withをブロックなしで呼べるようになった (Pull Request)

  • :queueオプションをジョブのアサーションやヘルパーに追加 (Pull Request)

  • Active Jobにretryやdiscardなどのフックを追加 (Pull Request)

  • ジョブ実行時に引数のサブセットをテストする方法を追加 (Pull Request)

  • Active Jobテストヘルパーから返されるジョブに、デシリアライズされた引数が含まれるようになった (Pull Request)

  • Active JobアサーションヘルパーでProcを受け取れるようになった(only用) keyword. (Pull Request)

  • アサーションヘルパーで、ジョブの引数からマイクロセカンドやナノセカンドの桁を取り除けるようになった (Pull Request)

13 Ruby on Rails Guides

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

13.1 主な変更

  • Active Recordでのマルチプルデータベースガイドを追加 (Pull Request)

  • 定数オートローディングのトラブルシューティングに関するセクションを追加 (Commit)

  • Action Mailbox Basicsガイドを追加 (Pull Request)

  • Action Text Overviewガイドを追加 (Pull Request)

14 クレジット表記

Railsを頑丈かつ安定したフレームワークにするために多大な時間を費やしてくださった多くの開発者については、Railsコントリビューターの完全なリストを参照してください。これらの方々全員に深く敬意を表明いたします。

支援・協賛

Railsガイドは下記のサポーターから継続的な支援を受けています。