v7.1.3.2
更多資訊請至 rubyonrails.org: 更多 Ruby on Rails

Ruby on Rails 6.0 版本說明

Rails 6.0 的重點

這些版本說明只涵蓋主要變更。如需瞭解各種錯誤修正和變更,請參閱變更記錄或查看 GitHub 上 Rails 主要儲存庫中的提交清單

1 升級至 Rails 6.0

如果您要升級現有的應用程式,在開始之前,最好先有良好的測試涵蓋範圍。如果您尚未升級到 Rails 5.2,您也應該先升級到 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

平行測試 讓您可以將測試套件平行化。雖然預設方法是分岔處理程序,但它也支援執行緒。平行執行測試可縮短整個測試套件執行的時間。

2.4 Action Cable 測試

Pull Request

Action Cable 測試工具 讓您可以在任何層級測試您的 Action Cable 功能:連線、頻道、廣播。

3 Railties

有關詳細變更,請參閱 變更記錄

3.1 移除

  • 移除外掛程式範本內已棄用的 after_bundle 輔助程式。(提交)

  • 移除已棄用的 config.ru 支援,該支援使用應用程式類別作為 run 的引數。(提交)

  • 移除已棄用的 environment 引數,該引數來自 rails 指令。(提交)

  • 移除已棄用的 capify! 方法,該方法來自產生器和範本。(提交)

  • 移除已棄用的 config.secret_token。(提交)

3.2 已棄用

  • 已棄用將 Rack 伺服器名稱傳遞為常規引數至 rails server。(Pull Request)

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

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

3.3 顯著變更

  • 新增一個明確選項 --using-u,用於指定 rails server 指令的伺服器。(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.logger.enabled 取代 ActionCable.startDebugging()ActionCable.stopDebugging()。(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)

  • 新增 id 選項至 Redis 適配器以區分 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)

  • 如果資源參數包含冒號,則引發 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

  • 在已簽署/加密的 Cookie 中新增目的和過期時間資訊,以防止將 Cookie 的值複製到另一個 Cookie 中。(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

  • 新增 #digActionDispatch::Request::Session。(Pull Request

6 Action View

詳細變更內容,請參閱 變更紀錄

6.1 移除

  • 移除已棄用的 image_alt 輔助函式。(提交)

  • 移除一個空的 RecordTagHelper 模組,其功能已移至 record_tag_helper 寶石。(提交)

6.2 已棄用

  • 已棄用 ActionView::Template.finalize_compiled_template_methods,無替換。(拉取請求)

  • 已棄用 config.action_view.finalize_compiled_template_methods,無替換。(拉取請求)

  • 已棄用從 options_from_collection_for_select 檢視輔助函式呼叫私有模型方法。(拉取請求)

6.3 值得注意的變更

  • 僅在檔案變更時清除開發模式中的 Action View 快取,加速開發模式。(拉取請求)

  • 將所有 Rails npm 套件移至 @rails 範圍。(拉取請求)

  • 僅接受已註冊 MIME 類型的格式。(拉取請求, 拉取請求)

  • 將配置新增至範本和部分渲染伺服器輸出。(拉取請求)

  • 新增 year_format 選項至 date_select 標籤,讓使用者可以自訂年份名稱。(拉取請求)

  • 新增 javascript_include_tag 輔助函式的 nonce: true 選項,以支援內容安全政策的自動 nonce 產生。(拉取請求)

  • 新增 action_view.finalize_compiled_template_methods 組態,以停用或啟用 ActionView::Template 完成器。(拉取請求)

  • 將 JavaScript confirm 呼叫抽取至 rails_ujs 中一個可覆寫的方法。(拉取請求)

  • 新增一個 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。(提交)

  • 棄用 DeliveryJobParameterized::DeliveryJob,改用 MailDeliveryJob。(Pull Request)

7.3 顯著變更

  • 新增 MailDeliveryJob,用於傳遞一般和參數化郵件。(Pull Request)

  • 允許自訂電子郵件傳遞工作與 Action Mailer 測試斷言搭配使用。(Pull Request)

  • 允許為使用區塊的多重電子郵件指定範本名稱,而不僅僅使用動作名稱。(Pull Request)

  • 新增 perform_deliveriesdeliver.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 移除

  • 移除交易物件中已棄用的 #set_state。(提交

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

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

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

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

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

  • 移除關係中委派遺失方法給 Arel 的支援。(提交

  • 移除委派關係中遺失方法給類別私有方法的支援。(提交

  • 移除指定 #cache_key 時間戳名稱的支援。(提交

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

  • 移除已棄用的 expand_hash_conditions_for_aggregates。(提交

8.2 已棄用

  • 已棄用唯一驗證器的區分大小寫校對比較不一致。(提交

  • 已棄用在接收者範圍外洩的情況下使用類別層級查詢方法。(Pull Request

  • 已棄用 config.active_record.sqlite3.represent_boolean_as_integer。(提交

  • 不再傳遞 migrations_pathsconnection.assume_migrated_upto_version。(提交

  • 不再使用 ActiveRecord::Result#to_hash,改用 ActiveRecord::Result#to_a。(提交

  • 不再使用 DatabaseLimits 中的方法:column_name_lengthtable_name_lengthcolumns_per_tableindexes_per_tablecolumns_per_multicolumn_indexsql_query_lengthjoins_per_query。(提交

  • 不再使用 update_attributes/!,改用 update/!。(提交

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,用於將 SQL 註解新增至 ActiveRecord::Relation 查詢。(Pull Request

  • 新增支援,用於在資料庫上設定最佳化提示。(Pull Request

  • 新增 insert_all/insert_all!/upsert_all 方法,用於執行大量插入。(Pull Request

  • 新增 rails db:seed:replant,用於截斷目前環境中每個資料庫的表格,並載入種子。(Pull Request

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

  • 新增所有列舉值的反向範圍。(Pull Request)

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

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

  • 新增在區塊期間禁止寫入資料庫的功能。(Pull Request)

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

  • 將具有精確度的時間戳設為遷移的預設值。(Pull Request)

  • 支援 :size 選項,以變更 MySQL 中的文字和二進位大小。(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)

  • 讓列舉值的凍結,在嘗試修改時引發錯誤。(Pull Request

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

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

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

  • 新增對雜湊和 URL 組態的支援至 ActiveRecord::Base.connected_to 的資料庫雜湊。(Pull Request

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

  • 新增 index 選項至 change_table 遷移輔助程式。(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

  • 在 Migrations 中引發重複欄位定義的例外。(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。(Pull Request

  • 新增 ActiveRecord::Base.create_or_find_by/! 以處理 ActiveRecord::Base.find_or_create_by/! 中的 SELECT/INSERT 競爭條件,方法是倚賴資料庫中的唯一約束。(Pull Request

  • 新增 Relation#pick 作為單一值提取的簡寫。(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。(提交

  • 已過時的 mini_magick,建議改用 image_processing 來產生影像變體。(提交

  • 已過時的 Active Storage ImageProcessing 轉換器中的 :combine_options,無替代方案。(提交

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

  • 為 Active Storage 變體使用 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 除外。(Pull Request

  • 修正 BigDecimalFloat 的數值相等驗證,方法是將驗證兩端的數值轉換為 BigDecimal。(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 方法。(提交

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

  • 移除 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

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

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

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

  • 修正 URI.unescape 在輸入混合 Unicode/轉譯字元時會失敗的錯誤。(Pull Request

  • 修復 ActiveSupport::Cache 在啟用壓縮時會大量增加儲存空間大小的錯誤。(Pull Request

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

  • 修復 ActiveSupport::TimeZone.allActiveSupport::TimeZone::MAPPING 中定義的任何時區的 tzinfo 資料遺失時會失敗的錯誤。(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)

  • 新增 CurrentAttributesbefore_reset 回呼,並將 after_reset 定義為 resets 的別名以求對稱。(Pull Request)

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

  • 使用 Zeitwerk 新增自動載入機制。(提交

  • 新增 Array#includingEnumerable#including,方便擴充集合。(提交

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

  • 新增支援,提供 localetransliterateparameterize。(Pull Request

  • 修正 Time#advance,使其適用於 1001-03-07 之前的日期。(Pull Request

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

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

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

  • 保留 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。(提交

  • 允許在沒有區塊的情況下呼叫 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 斷言輔助程式接受 only 關鍵字的 Proc。(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 的人,讓 Rails 成為一個穩定且強大的架構。向所有這些人致敬。

回饋

我們鼓勵您協助提升本指南的品質。

如果您看到任何錯字或事實錯誤,請協助我們修正。首先,您可以閱讀我們的 文件貢獻 部分。

您也可能會發現不完整的內容或未更新的內容。請務必為 main 新增任何遺漏的文件。請務必先查看 Edge Guides,以驗證問題是否已在主分支中修正。查看 Ruby on Rails 指南準則,了解風格和慣例。

如果您因為任何原因發現需要修正但無法自行修補,請 開啟問題

最後但並非最不重要的一點,我們非常歡迎在 官方 Ruby on Rails 論壇 上針對 Ruby on Rails 文件進行任何類型的討論。