更多資訊請參考 rubyonrails.org:

1 升級至 Rails 6.0

如果您要升級現有的應用程式,最好先有良好的測試覆蓋率。您也應該先升級到 Rails 5.2(如果您還沒有),並確保您的應用程式在嘗試更新到 Rails 6.0 之前仍能按預期執行。升級時要注意的事項列表,請參閱升級 Ruby on 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

平行測試 允許您將測試套件平行化。雖然 fork 進程是預設方法,但也支援執行緒。平行執行測試可縮短整個測試套件的執行時間。

2.4 Action Cable 測試

Pull Request

Action Cable 測試工具 允許您在任何層級測試 Action Cable 功能:連線、通道、廣播。

3 Railties

詳細變更請參閱變更日誌

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 )

  • 棄用使用 HOST 環境變數來指定伺服器 IP 的支援。( Pull Request )

  • 棄用使用非符號鍵存取 config_for 傳回的雜湊。( Pull Request )

3.3 重大變更

  • rails server 命令新增明確選項 --using-u,以指定伺服器。( Pull Request )

  • 新增以展開格式查看 rails routes 輸出的功能。( Pull Request )

  • 使用內嵌 Active Job 轉接器執行種子資料庫任務。( Pull Request )

  • 新增命令 rails db:system:change 以變更應用程式的資料庫。( Pull Request )

  • 新增 rails test:channels 命令以僅測試 Action Cable 通道。( Pull Request )

  • 引入防禦 DNS 重新繫結攻擊的機制。( Pull Request )

  • 新增在執行產生器命令時,可於失敗時中止的功能。( Pull Request )

  • 讓 Webpacker 成為 Rails 6 的預設 JavaScript 編譯器。( Pull Request )

  • 新增對 rails db:migrate:status 命令的多個資料庫支援。( Pull Request )

  • 新增在產生器中使用來自多個資料庫的不同遷移路徑的功能。( Pull Request )

  • 新增對多環境憑證的支援。( Pull Request )

  • 使 null_store 成為測試環境中的預設快取儲存區。( Pull Request )

4 Action Cable

詳細變更請參閱變更日誌

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 )

  • 當從 ActionCable::Connection 呼叫 reject_unauthorized_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

詳細變更請參閱變更日誌

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 )

  • 如果資源參數包含冒號,則引發 ArgumentError。( Pull Request )

  • 允許使用區塊呼叫 ActionDispatch::SystemTestCase.driven_by,以定義特定的瀏覽器功能。( Pull Request )

  • 新增 ActionDispatch::HostAuthorization 中介軟體,以防禦 DNS 重新繫結攻擊。( Pull Request )

  • 允許在 ActionController::TestCase 中使用 parsed_body。( Pull Request )

  • 當同一個上下文中存在多個根路由,且沒有使用 as: 指定名稱時,會拋出 ArgumentError 錯誤。(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

  • 在已簽署/加密的 cookies 中新增目的和到期中繼資料,以防止將 cookies 的值互相複製。(Pull Request

  • 對於衝突的 respond_to 調用,會拋出 ActionController::RespondToMismatchError 錯誤。(Pull Request

  • 為請求格式缺少模板時新增明確的錯誤頁面。(Pull Request

  • 引入 ActionDispatch::DebugExceptions.register_interceptor,這是一種在 DebugExceptions 處理異常並渲染之前,鉤入並處理異常的方法。(Pull Request

  • 每個請求只輸出一個 Content-Security-Policy nonce 標頭值。(Pull Request

  • 新增一個專門用於 Rails 預設標頭配置的模組,可以明確地包含在控制器中。(Pull Request

  • ActionDispatch::Request::Session 新增 #dig 方法。(Pull Request

6 Action View

請參閱 變更日誌 以了解詳細的變更。

6.1 移除

  • 移除已棄用的 image_alt helper。(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 視圖助手調用私有模型方法。(Pull Request

6.3 重要變更

  • 僅在檔案變更時清除開發模式下的 Action View 快取,加快開發模式的速度。(Pull Request

  • 將所有 Rails npm 套件移至 @rails 作用域。(Pull Request

  • 僅接受已註冊 MIME 類型的格式。(Pull RequestPull Request

  • 在模板和部分渲染伺服器輸出中新增分配。(Pull Request

  • date_select 標籤新增 year_format 選項,可以自訂年份名稱。(Pull Request

  • javascript_include_tag helper 新增 nonce: true 選項,以支援 Content Security Policy 的自動 nonce 生成。(Pull Request

  • 新增 action_view.finalize_compiled_template_methods 配置,以停用或啟用 ActionView::Template finalizers。(Pull Request

  • 將 JavaScript confirm 調用提取到 rails_ujs 中自己的、可覆寫的方法。(Pull Request

  • 新增 action_controller.default_enforce_utf8 配置選項以處理強制 UTF-8 編碼。預設為 false。(Pull Request

  • 為提交標籤新增 I18n 金鑰樣式支援 locale 金鑰。(Pull Request

7 Action Mailer

請參閱 變更日誌 以了解詳細的變更。

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_deliveries 新增到 deliver.action_mailer 通知的 payload 中。(Pull Request

  • perform_deliveries 為 false 時,改進記錄訊息,以指示跳過發送電子郵件。(Pull Request

  • 允許在沒有區塊的情況下調用 assert_enqueued_email_with。(Pull Request

  • assert_emails 區塊中執行排隊的郵件傳遞工作。(Pull Request

  • 允許 ActionMailer::Base 取消註冊觀察者和攔截器。(Pull Request

8 Active Record

請參閱 變更日誌 以了解詳細的變更。

8.1 移除

  • 從 transaction 物件中移除已棄用的 #set_state。(Commit

  • 從資料庫適配器中移除已棄用的 #supports_statement_cache?。(Commit

  • 從資料庫適配器中移除已棄用的 #insert_fixtures。(Commit

  • 移除已棄用的 ActiveRecord::ConnectionAdapters::SQLite3Adapter#valid_alter_table_type?。(Commit

  • 當傳遞區塊時,移除對傳遞欄位名稱給 sum 的支援。(Commit

  • 當傳遞區塊時,移除對傳遞欄位名稱給 count 的支援。(Commit

  • 移除將關聯中遺失的方法委派給 Arel 的支援。(Commit

  • 移除將關聯中遺失的方法委派給該類別的私有方法的支援。(Commit

  • 移除為 #cache_key 指定時間戳記名稱的支援。(Commit

  • 移除已棄用的 ActiveRecord::Migrator.migrations_path=。(Commit

  • 移除已棄用的 expand_hash_conditions_for_aggregates。(Commit

8.2 棄用

  • 棄用唯一性驗證器的不匹配大小寫敏感度排序比較。(Commit

  • 如果接收器作用域已洩漏,則棄用使用類別級別查詢方法。(Pull Request

  • 棄用 config.active_record.sqlite3.represent_boolean_as_integer。(Commit

  • 棄用將 migrations_paths 傳遞給 connection.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 gem 的最低版本提高到 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 以將 SQL 註解新增到 ActiveRecord::Relation 查詢。(Pull Request

  • 新增對在資料庫上設定 Optimizer Hints 的支援。(Pull Request

  • 新增 insert_all/insert_all!/upsert_all 方法以執行批次插入。(Pull Request

  • 新增 rails db:seed:replant,該命令會截斷目前環境中每個資料庫的表格並載入 seeds。(Pull Request

  • 新增 reselect 方法,它是 unscope(:select).select(fields) 的簡寫。(Pull Request

  • 為所有 enum 值新增負作用域。(Pull Request

  • 新增 #destroy_by#delete_by 用於條件移除。(Pull Request

  • 新增自動切換資料庫連線的功能。(Pull Request

  • 新增在區塊持續時間內防止寫入資料庫的功能。(Pull Request

  • 新增用於切換連線以支援多個資料庫的 API。(Pull Request

  • 使具有精度的時間戳記成為遷移的預設值。(Pull Request

  • 支援 :size 選項以變更 MySQL 中文字和 blob 的大小。(Pull Request

  • 對於 dependent: :nullify 策略,將多型關聯的外鍵和外鍵類型欄位都設定為 NULL。(Pull Request

  • 允許將允許的 ActionController::Parameters 實例作為引數傳遞給 ActiveRecord::Relation#exists?。(Pull Request

  • #where 中新增對 Ruby 2.6 中引入的無限範圍的支援。(Pull Request

  • 使 ROW_FORMAT=DYNAMIC 成為 MySQL 的預設建立表格選項。(Pull Request

  • 新增停用 ActiveRecord.enum 產生的作用域的功能。(Pull Request

  • 使欄位的隱式排序可配置。(Pull Request

  • 將最低 PostgreSQL 版本提高到 9.3,放棄對 9.1 和 9.2 的支援。(Pull Request

  • 使 enum 的值凍結,嘗試修改它們時會引發錯誤。(Pull Request

  • 使 ActiveRecord::StatementInvalid 錯誤的 SQL 成為其自己的錯誤屬性,並將 SQL 繫結作為單獨的錯誤屬性包含在內。(Pull Request

  • create_table 新增 :if_not_exists 選項。(Pull Request

  • rails db:schema:cache:dumprails db:schema:cache:clear 新增多個資料庫的支援。(Pull Request

  • 新增對 ActiveRecord::Base.connected_to 的資料庫雜湊中雜湊和 url 配置的支援。(Pull Request

  • 為 MySQL 新增對預設表達式和表達式索引的支援。(Pull Request

  • change_table 遷移助手新增 index 選項。(Pull Request

  • 修正遷移的 transaction 回溯問題。先前,在回溯遷移中的 transaction 內部的命令會在未反轉的情況下執行。此變更修正了此問題。(Pull Request

  • 允許使用符號化的雜湊設定 ActiveRecord::Base.configurations=。(Pull Request

  • 修正計數器快取,使其僅在記錄實際儲存時更新。(Pull Request

  • 為 SQLite 轉接器新增表達式索引支援。(Pull Request

  • 允許子類別重新定義關聯記錄的自動儲存回呼。(Pull Request

  • 將最低 MySQL 版本提升至 5.5.8。(Pull Request

  • 預設在 MySQL 中使用 utf8mb4 字元集。(Pull Request

  • 新增在 #inspect 中過濾敏感資料的功能。(Pull RequestPull Request

  • 變更 ActiveRecord::Base.configurations 為返回物件而非雜湊。(Pull Request

  • 新增資料庫設定以停用諮詢鎖。(Pull Request

  • 更新 SQLite3 轉接器的 alter_table 方法以還原外來鍵。(Pull Request

  • 允許 remove_foreign_key:to_table 選項可反轉。(Pull Request

  • 修正指定精度的 MySQL 時間類型的預設值。(Pull Request

  • 修正 touch 選項使其與 Persistence#touch 方法行為一致。(Pull Request

  • 針對 Migration 中的重複欄位定義引發例外。(Pull Request

  • 將最低 SQLite 版本提升至 3.8。(Pull Request

  • 修正父記錄不會與重複的子記錄一起儲存。(Pull Request

  • 確保 Associations::CollectionAssociation#sizeAssociations::CollectionAssociation#empty? 在存在已載入的關聯 ID 時使用它們。(Pull Request

  • 新增在並非所有記錄都具有請求的關聯時,預載多型關聯的能力。(Commit

  • ActiveRecord::Relation 新增 touch_all 方法。(Pull Request

  • 新增 ActiveRecord::Base.base_class? 述詞。(Pull Request

  • ActiveRecord::Store.store_accessor 新增自訂前綴/後綴選項。(Pull Request

  • 新增 ActiveRecord::Base.create_or_find_by/!,透過依靠資料庫中的唯一約束來處理 ActiveRecord::Base.find_or_create_by/! 中的 SELECT/INSERT 競爭條件。(Pull Request

  • 新增 Relation#pick 作為單值 plucks 的簡寫。(Pull Request

9 Active Storage

請參閱變更記錄以了解詳細的變更。

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

  • 棄用直接使用 mini_magick 產生影像變體,改用 image_processing。(Commit

  • 在 Active Storage 的 ImageProcessing 轉換器中棄用 :combine_options,且沒有替代方案。(Commit

9.3 重要變更

  • 新增產生 BMP 影像變體的支援。(Pull Request

  • 新增產生 TIFF 影像變體的支援。(Pull Request

  • 新增產生漸進式 JPEG 影像變體的支援。(Pull Request

  • 新增 ActiveStorage.routes_prefix 以設定 Active Storage 產生的路由。(Pull Request

  • 當要求的檔案在磁碟服務中遺失時,在 ActiveStorage::DiskController#show 上產生 404 Not Found 回應。(Pull Request

  • 當要求的檔案遺失時,為 ActiveStorage::Blob#downloadActiveStorage::Blob#open 引發 ActiveStorage::FileNotFoundError。(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 下載到磁碟上的暫存檔並傳回該暫存檔。(Commit

  • 支援從 Google Cloud Storage 串流下載。需要 google-cloud-storage gem 的 1.11+ 版本。(Pull Request

  • 使用 image_processing gem 作為 Active Storage 變體。這取代了直接使用 mini_magick。(Pull Request

10 Active Model

請參閱變更記錄以了解詳細的變更。

10.1 移除

10.2 已棄用

10.3 重要變更

  • 新增組態選項以自訂 ActiveModel::Errors#full_message 的格式。(Pull Request

  • 新增支援設定 has_secure_password 的屬性名稱。(Pull Request

  • ActiveModel::Errors 新增 #slice! 方法。(Pull Request

  • 新增 ActiveModel::Errors#of_kind? 以檢查特定錯誤是否存在。(Pull Request

  • 修正時間戳記的 ActiveModel::Serializers::JSON#as_json 方法。(Pull Request

  • 修正數值驗證器,使其仍然使用類型轉換前的值,Active Record 除外。(Pull Request

  • 透過在驗證的兩端都轉換為 BigDecimal,修正 BigDecimalFloat 的數值相等性驗證。(Pull Request

  • 在轉換多參數時間雜湊時修正年份值。(Pull Request

  • 將布林屬性上的假布林符號類型轉換為 false。(Pull Request

  • ActiveModel::Type::Datevalue_from_multiparameter_assignment 中轉換參數時,傳回正確的日期。(Pull Request

  • 在擷取錯誤翻譯時,先回退到父區域設定,再回退到 :errors 命名空間。(Pull Request

11 Active Support

請參閱變更記錄以了解詳細的變更。

11.1 移除

  • Inflections 中移除已棄用的 #acronym_regex 方法。(Commit

  • 移除已棄用的 Module#reachable? 方法。(Commit

  • 移除 Kernel#`,且沒有任何替代方案。(Pull Request

11.2 已棄用

  • 棄用將負整數引數用於 String#firstString#last。(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 保留字串的凍結性。(Pull Request

  • 新增 String#truncate_bytes 以將字串截斷為最大位元組大小,而不會破壞多位元組字元或字素叢集。(Pull Request

  • delegate 方法新增 private 選項,以委派給私有方法。此選項接受 true/false 作為值。(Pull Request

  • 新增透過 I18n 翻譯 ActiveSupport::Inflector#ordinalActiveSupport::Inflector#ordinalize 的支援。(Pull Request

  • DateDateTimeTimeTimeWithZone 新增 before?after? 方法。(Pull Request

  • 修正 URI.unescape 無法處理混合 Unicode/逸出字元輸入的錯誤。(Pull Request

  • 修正啟用壓縮時 ActiveSupport::Cache 會大幅膨脹儲存大小的錯誤。(Pull Request

  • Redis 快取儲存區:delete_matched 不再封鎖 Redis 伺服器。(Pull Request

  • 修正當 ActiveSupport::TimeZone::MAPPING 中定義的任何時區遺失 tzinfo 資料時,ActiveSupport::TimeZone.all 會失敗的錯誤。(Pull Request

  • 新增 Enumerable#index_with,允許使用傳遞區塊或預設引數的值從可列舉物件建立雜湊。(Pull Request

  • 允許 Range#===Range#cover? 方法與 Range 引數搭配使用。(Pull Request

  • 支援 RedisCacheStore 的 increment/decrement 操作中的金鑰過期。(Pull Request

  • 將 CPU 時間、閒置時間和配置功能新增到記錄訂閱者事件。(Pull Request

  • 為 Active Support 通知系統新增事件物件的支援。(Pull Request

  • 透過為 ActiveSupport::Cache#fetch 引入新選項 skip_nil,新增不快取 nil 項目的支援。(Pull Request

  • 新增 Array#extract! 方法,該方法會移除並傳回區塊傳回 true 值的元素。(Pull Request

  • 在切片後保持 HTML 安全字串的 HTML 安全性。(Pull Request

  • 新增透過日誌追蹤常數自動載入的支援。(Commit

  • unfreeze_time 定義為 travel_back 的別名。(Pull Request

  • 變更 ActiveSupport::TaggedLogging.new 以回傳新的日誌實例,而不是修改作為參數接收的實例。(Pull Request

  • #delete_prefix#delete_suffix#unicode_normalize 方法視為非 HTML 安全的方法。(Pull Request

  • 修正 ActiveSupport::HashWithIndifferentAccess#without 在使用符號參數時會失敗的錯誤。(Pull Request

  • Module#parentModule#parentsModule#parent_name 重新命名為 module_parentmodule_parentsmodule_parent_name。(Pull Request

  • 新增 ActiveSupport::ParameterFilter。(Pull Request

  • 修正將浮點數加到持續時間時,持續時間會被四捨五入為整秒的問題。(Pull Request

  • ActiveSupport::HashWithIndifferentAccess 中的 #to_options 設定為 #symbolize_keys 的別名。(Pull Request

  • 如果同一個區塊多次包含在 Concern 中,則不再引發例外。(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_reset 定義為 resets 的別名以維持對稱。(Pull Request

  • 修改 ActiveSupport::Notifications.unsubscribe 以正確處理 Regex 或其他多重模式訂閱者。(Pull Request

  • 新增使用 Zeitwerk 的新自動載入機制。(Commit

  • 新增 Array#includingEnumerable#including 以方便擴大集合。(Commit

  • Array#withoutEnumerable#without 重新命名為 Array#excludingEnumerable#excluding。舊方法名稱保留為別名。(Commit

  • 新增支援將 locale 提供給 transliterateparameterize。(Pull Request

  • 修正 Time#advance 以處理 1001-03-07 之前的日期。(Pull Request

  • 更新 ActiveSupport::Notifications::Instrumenter#instrument 以允許不傳遞區塊。(Pull Request

  • 在後代追蹤器中使用弱參照,以允許匿名子類別被垃圾回收。(Pull Request

  • 使用 with_info_handler 方法呼叫測試方法,以允許 minitest-hooks 外掛程式運作。(Commit

  • 保留 ActiveSupport::SafeBuffer#* 上的 html_safe? 狀態。(Pull Request

12 Active Job

詳細變更請參閱更新日誌

12.1 移除

12.2 已棄用

12.3 重要變更

  • 新增對 Active Job 引數自訂序列化器的支援。(Pull Request

  • 新增支援在工作排入佇列時的時區中執行 Active Job。(Pull Request

  • 允許將多個例外傳遞給 retry_on/discard_on。(Commit

  • 允許在沒有區塊的情況下呼叫 assert_enqueued_withassert_enqueued_email_with。(Pull Request

  • enqueueenqueue_at 的通知包裝在 around_enqueue 回呼中,而不是 after_enqueue 回呼。(Pull Request

  • 允許在沒有區塊的情況下呼叫 perform_enqueued_jobs。(Pull Request

  • 允許在沒有區塊的情況下呼叫 assert_performed_with。(Pull Request

  • :queue 選項新增至工作斷言和輔助程式。(Pull Request

  • 在 Active Job 中,於重試和捨棄前後新增鉤子。(Pull Request

  • 新增在執行工作時測試引數子集的方法。(Pull Request

  • 將還原序列化後的引數包含在 Active Job 測試輔助程式回傳的工作中。(Pull Request

  • 允許 Active Job 斷言輔助程式接受 Proc 作為 only 關鍵字。(Pull Request

  • 從斷言輔助程式的工作引數中移除微秒和奈秒。(Pull Request

13 Ruby on Rails 指南

詳細變更請參閱更新日誌

13.1 重要變更

  • 新增「使用 Active Record 的多個資料庫」指南。(Pull Request

  • 新增關於自動載入常數的疑難排解章節。(Commit

  • 新增 Action Mailbox 基礎指南。(Pull Request

  • 新增 Action Text 概述指南。(Pull Request

14 貢獻者

請參閱Rails 的完整貢獻者清單,了解許多投入大量時間使 Rails 成為現今穩定且強大的框架的人們。向他們所有人致敬。



返回頂部