edge
更多資訊請參考 rubyonrails.org: 更多 Ruby on Rails

Ruby on Rails 6.0 發行說明

Rails 6.0 的亮點:

這些發行說明僅涵蓋主要更改。要了解各種錯誤修復和更改,請參閱變更日誌或查看 GitHub 上主要 Rails 存儲庫中的提交列表

1 升級到 Rails 6.0

如果您正在升級現有應用程序,建議在進行升級之前先進行良好的測試覆蓋。如果您尚未進行升級,請先升級到 Rails 5.2,並確保應用程序在預期的情況下運行正常,然後再嘗試升級到 Rails 6.0。在升級時要注意的事項列表可在升級 Ruby on Rails指南中找到。

2 主要功能

2.1 Action Mailbox

拉取請求

Action Mailbox 允許您將傳入的電子郵件路由到類似控制器的郵箱。您可以在Action Mailbox 基礎知識指南中了解更多關於 Action Mailbox 的資訊。

2.2 Action Text

拉取請求

Action Text 將豐富的文字內容和編輯功能引入 Rails。它包括 Trix 編輯器,該編輯器可以處理格式設定、連結、引用、列表、嵌入圖片和圖庫等所有內容。Trix 編輯器生成的豐富文字內容保存在自己的 RichText 模型中,該模型與應用程序中的任何現有 Active Record 模型相關聯。任何嵌入的圖片(或其他附件)都會使用 Active Storage 自動存儲並與包含的 RichText 模型相關聯。

您可以在Action Text 概述指南中了解更多關於 Action Text 的資訊。

2.3 平行測試

拉取請求

平行測試 允許您將測試套件進行平行化。雖然分叉進程是默認方法,但也支持線程。平行運行測試可以減少整個測試套件運行所需的時間。

2.4 Action Cable 測試

拉取請求

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

3 Railties

詳細更改請參閱變更日誌

3.1 刪除

  • 刪除插件模板中已棄用的 after_bundle 輔助方法。 (提交)

  • 刪除使用應用程序類作為 run 方法參數的已棄用 config.ru 支援。 (提交)

  • 刪除 rails 命令中已棄用的 environment 參數。 (提交)

  • 刪除生成器和模板中已棄用的 capify! 方法。 (提交)

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

3.2 已棄用

  • 將 Rack 伺服器名稱作為常規參數傳遞給 rails server 已棄用。 (拉取請求)
  • 停止支援使用HOST環境變數來指定伺服器IP。 (拉取請求)

  • 停止使用非符號鍵訪問config_for返回的哈希。 (拉取請求)

3.3 重要變更

  • rails server命令添加一個明確的選項--using-u來指定伺服器。 (拉取請求)

  • 添加查看rails routes輸出的擴展格式的功能。 (拉取請求)

  • 使用內聯Active Job adapter運行種子資料庫任務。 (拉取請求)

  • 添加一個命令rails db:system:change來更改應用程序的資料庫。 (拉取請求)

  • 添加rails test:channels命令,僅測試Action Cable通道。 (拉取請求)

  • 引入防止DNS重綁定攻擊的保護。 (拉取請求)

  • 添加在生成器命令運行失敗時中止的功能。 (拉取請求)

  • 將Webpacker設置為Rails 6的默認JavaScript編譯器。 (拉取請求)

  • rails db:migrate:status命令添加對多個資料庫的支援。 (拉取請求)

  • 在生成器中添加使用多個資料庫的不同遷移路徑的支援。 (拉取請求)

  • 添加對多環境憑證的支援。 (拉取請求)

  • 在測試環境中將null_store設置為默認的緩存存儲。 (拉取請求)

4 Action Cable

詳細變更請參閱變更日誌

4.1 刪除

  • ActionCable.startDebugging()ActionCable.stopDebugging()替換為ActionCable.logger.enabled。 (拉取請求)

4.2 停用

  • Rails 6.0中的Action Cable沒有停用項目。

4.3 重要變更

  • cable.yml中為PostgreSQL訂閱適配器添加channel_prefix選項的支援。 (拉取請求)

  • 允許將自定義配置傳遞給ActionCable::Server::Base。 (拉取請求)

  • 添加:action_cable_connection:action_cable_channel加載鉤子。 (拉取請求)

  • 添加Channel::Base#broadcast_toChannel::Base.broadcasting_for。 (拉取請求)

  • 在從ActionCable::Connection調用reject_unauthorized_connection時關閉連接。 (拉取請求)

  • 將Action Cable JavaScript包從CoffeeScript轉換為ES2015並在npm發布源代碼。 (拉取請求)

  • 將WebSocket適配器和日誌適配器的配置從ActionCable的屬性移至ActionCable.adapters。 (拉取請求)

  • 為Redis適配器添加id選項以區分Action Cable的Redis連接。 (拉取請求)

5 Action Pack

詳細變更請參閱變更日誌

5.1 刪除

  • 刪除已棄用的fragment_cache_key輔助方法,改用combined_fragment_cache_key。 (提交)

  • 刪除ActionDispatch::TestResponse中的已棄用方法: #success?改用#successful?#missing?改用#not_found?#error?改用#server_error?。 (提交)

5.2 停用

  • ActionDispatch::Http::ParameterFilter停用,改用ActiveSupport::ParameterFilter。 (拉取請求)

  • 停用控制器級別的force_ssl,改用config.force_ssl。 (拉取請求)

5.3 重要變更

  • 更改 ActionDispatch::Response#content_type 返回 Content-Type 標頭。 (拉取請求)

  • 如果資源參數包含冒號,則引發 ArgumentError。 (拉取請求)

  • 允許使用塊來定義特定瀏覽器功能的 ActionDispatch::SystemTestCase.driven_by。 (拉取請求)

  • 添加防止 DNS 重綁定攻擊的 ActionDispatch::HostAuthorization 中間件。 (拉取請求)

  • 允許在 ActionController::TestCase 中使用 parsed_body。 (拉取請求)

  • 當同一上下文中存在多個根路由而沒有 as: 命名規範時,引發 ArgumentError。 (拉取請求)

  • 允許使用 #rescue_from 處理參數解析錯誤。 (拉取請求)

  • 添加 ActionController::Parameters#each_value 以遍歷參數。 (拉取請求)

  • send_datasend_file 中對 Content-Disposition 檔名進行編碼。 (拉取請求)

  • 公開 ActionController::Parameters#each_key。 (拉取請求)

  • 在簽名/加密 cookie 中添加目的和過期元數據,以防止將 cookie 的值複製到其他 cookie 中。 (拉取請求)

  • 對於冲突的 respond_to 調用,引發 ActionController::RespondToMismatchError。 (拉取請求)

  • 為請求格式缺少模板時添加顯示缺少模板的明確錯誤頁面。 (拉取請求)

  • 引入 ActionDispatch::DebugExceptions.register_interceptor,一種在渲染之前處理異常的方式。 (拉取請求)

  • 每個請求只輸出一個 Content-Security-Policy nonce 標頭值。 (拉取請求)

  • 添加一個專門用於 Rails 默認標頭配置的模塊,可以明確地包含在控制器中。 (拉取請求)

  • ActionDispatch::Request::Session 中添加 #dig。 (拉取請求)

6 Action View

詳細變更請參閱變更日誌

6.1 刪除項目

  • 刪除已棄用的 image_alt 輔助方法。 (提交)

  • 從已將功能移至 record_tag_helper gem 的空的 RecordTagHelper 模塊中刪除。 (提交)

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 類型的格式。 (拉取請求, 拉取請求)

  • 在模板和局部渲染服務器輸出中添加分配。 (拉取請求)

  • date_select 標籤添加 year_format 選項,使年份名稱可自定義。 (拉取請求)

  • javascript_include_tag 輔助方法添加 nonce: true 選項,以支持自動生成 Content Security Policy 的 nonce。 (拉取請求)

  • 添加 action_view.finalize_compiled_template_methods 配置以禁用或啟用 ActionView::Template 的最終器。 (拉取請求)

  • 將JavaScript的confirm調用提取到rails_ujs中的自定義方法中,可以進行覆蓋。 (Pull Request)

  • 添加action_controller.default_enforce_utf8配置選項來處理強制使用UTF-8編碼。默認值為false。 (Pull Request)

  • 為locale keys的submit tags添加I18n key樣式支持。 (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)

  • deliver.action_mailer通知的payload中添加perform_deliveries。 (Pull Request)

  • 改進日誌消息,當perform_deliveries為false時,指示郵件發送被跳過。 (Pull Request)

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

  • assert_emails塊中執行排隊的郵件發送作業。 (Pull Request)

  • 允許ActionMailer::Base取消註冊觀察者和攔截器。 (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)

  • 刪除在傳遞塊時將列名傳遞給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 方法,用於對 ActiveRecord::Relation 查詢添加 SQL 註釋。 (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)

  • 支持在 MySQL 中通過 :size 選項更改文本和 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)

  • 將枚舉的值設置為不可修改,嘗試修改時引發錯誤。 (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回滾問題。之前,在回滾的遷移中,事務內的命令會以未回滾的方式運行。這次更改修正了這個問題。 (拉取請求)

  • 允許使用符號化哈希來設置ActiveRecord::Base.configurations= (拉取請求)

  • 修正計數緩存只有在記錄實際保存時才更新的問題。 (拉取請求)

  • 為SQLite adapter添加表達式索引支持。 (拉取請求)

  • 允許子類重新定義關聯記錄的自動保存回調。 (拉取請求)

  • 將最低MySQL版本提升至5.5.8。 (拉取請求)

  • 在MySQL中默認使用utf8mb4字符集。 (拉取請求)

  • 添加在#inspect中過濾敏感數據的能力。 (拉取請求, 拉取請求)

  • ActiveRecord::Base.configurations更改為返回對象而不是哈希。 (拉取請求)

  • 添加數據庫配置以禁用咨詢鎖。 (拉取請求)

  • 更新SQLite3 adapter的alter_table方法以恢復外鍵。 (拉取請求)

  • 允許remove_foreign_keyto_table選項可逆。 (拉取請求)

  • 修正MySQL時間類型的默認值問題。 (拉取請求)

  • 修正touch選項與Persistence#touch方法的一致性問題。 (拉取請求)

  • 對於遷移中的重複列定義,引發異常。 (拉取請求)

  • 將最低SQLite版本提升至3.8。 (拉取請求)

  • 確保父記錄不會與重複的子記錄一起保存。 (拉取請求)

  • 如果存在,Associations::CollectionAssociation#sizeAssociations::CollectionAssociation#empty?使用已加載的關聯ID。 (拉取請求)

  • 在不是所有記錄都具有所需關聯的情況下,添加預加載多態關聯的支持。 (提交)

  • ActiveRecord::Relation中添加touch_all方法。 (拉取請求)

  • 添加ActiveRecord::Base.base_class?預測方法。 (拉取請求)

  • ActiveRecord::Store.store_accessor中添加自定義前綴/後綴選項。 (拉取請求)

  • 添加ActiveRecord::Base.create_or_find_by/!以處理ActiveRecord::Base.find_or_create_by/!中的SELECT/INSERT競爭條件,依賴數據庫中的唯一約束。 (拉取請求)

  • 添加Relation#pick作為單值pluck的簡寫。 (拉取請求)

9 Active Storage

詳細更改請參閱更新日誌

9.1 刪除

9.2 廢棄

  • config.active_storage.queue廢棄,改用config.active_storage.queues.analysisconfig.active_storage.queues.purge。 (拉取請求)

  • ActiveStorage::Downloading廢棄,改用ActiveStorage::Blob#open。 (提交)

  • 將直接使用mini_magick生成圖像變體的方法廢棄,改用image_processing。 (提交)

  • 廢棄Active Storage的ImageProcessing轉換器中的:combine_options選項,無替代方案。 (提交)

9.3 重要更改

  • 添加生成BMP圖像變體的支持。 (拉取請求)

  • 添加生成TIFF圖像變體的支持。 (拉取請求)

  • 添加生成漸進式JPEG圖像變體的支持。 (拉取請求)

  • 新增 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 Request, Pull Request)

  • 添加使用現有的 Active Record 反射機制來反射已定義的附件的能力。 (Pull Request)

  • 添加 ActiveStorage::Blob#open 方法,該方法將文件下載到磁碟上的臨時文件並返回該臨時文件。 (Commit)

  • 支持從 Google Cloud Storage 進行流式下載。需要 google-cloud-storage gem 的 1.11+ 版本。 (Pull Request)

  • 使用 image_processing gem 來處理 Active Storage 的變體。這取代了直接使用 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)

  • ActiveModel::Errors 中添加 #slice! 方法。 (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

詳細更改請參閱 Changelog

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。 (拉取請求)

  • 廢棄 ActiveSupport::Multibyte::Chars.consumes?,改用 String#is_utf8?。 (拉取請求)

  • 廢棄 ActiveSupport::Multibyte::Unicode#pack_graphemes(array)ActiveSupport::Multibyte::Unicode#unpack_graphemes(string),改用 array.flatten.pack("U*")string.scan(/\X/).map(&:codepoints)。 (拉取請求)

11.3 重要變更

  • 增加對並行測試的支援。 (拉取請求)

  • 確保 String#strip_heredoc 保留字符串的凍結狀態。 (拉取請求)

  • 增加 String#truncate_bytes 方法,用於將字符串截斷為指定的字節大小,同時不破壞多字節字符或字形簇。 (拉取請求)

  • delegate 方法中添加 private 選項,以便委派給私有方法。該選項接受 true/false 作為值。 (拉取請求)

  • ActiveSupport::Inflector#ordinalActiveSupport::Inflector#ordinalize 添加通過 I18n 進行翻譯的支援。 (拉取請求)

  • DateDateTimeTimeTimeWithZone 中添加 before?after? 方法。 (拉取請求)

  • 修復 URI.unescape 在混合使用 Unicode/轉義字符輸入時失敗的錯誤。 (拉取請求)

  • 修復啟用壓縮時 ActiveSupport::Cache 存儲大小大幅膨脹的錯誤。 (拉取請求)

  • Redis 緩存存儲:delete_matched 不再阻塞 Redis 服務器。 (拉取請求)

  • 修復 ActiveSupport::TimeZone.all 在任何時區定義於 ActiveSupport::TimeZone::MAPPING 中的 tzinfo 數據缺失時失敗的錯誤。 (拉取請求)

  • 添加 Enumerable#index_with,允許從可枚舉對象中創建一個哈希,該哈希的值來自於傳遞的塊或默認參數。 (拉取請求)

  • 允許 Range#===Range#cover? 方法與 Range 參數一起使用。 (拉取請求)

  • 在 RedisCacheStore 的 increment/decrement 操作中支援鍵的過期。 (拉取請求)

  • 在日誌訂閱事件中添加 CPU 時間、閒置時間和分配記憶體的功能。 (拉取請求)

  • 在 Active Support 通知系統中添加對事件對象的支援。 (拉取請求)

  • 通過引入新選項 skip_nil,為 ActiveSupport::Cache#fetch 添加不緩存 nil 条目的支援。 (拉取請求)

  • 添加 Array#extract! 方法,該方法刪除並返回塊返回 true 值的元素。 (拉取請求)

  • 在切片後保持 HTML 安全字符串的 HTML 安全性。 (拉取請求)

  • 通過日誌記錄來追蹤常量自動加載。 (提交)

  • unfreeze_time 定義為 travel_back 的別名。 (拉取請求)

  • ActiveSupport::TaggedLogging.new 更改為返回新的日誌記錄器實例,而不是修改接收到的實例。 (拉取請求)

  • #delete_prefix#delete_suffix#unicode_normalize 方法視為非 HTML 安全方法。 (拉取請求)

  • 修復 ActiveSupport::HashWithIndifferentAccess#without 在使用符號參數時失敗的錯誤。 (拉取請求)

  • Module#parentModule#parentsModule#parent_name 重命名為 module_parentmodule_parentsmodule_parent_name。 (拉取請求)

  • 添加 ActiveSupport::ParameterFilter。 (拉取請求)

  • 修復在將浮點數添加到持續時間時,將持續時間四捨五入為整秒的問題。 (拉取請求)

  • ActiveSupport::HashWithIndifferentAccess中,將#to_options設置為#symbolize_keys的別名。 (拉取請求)

  • 如果同一個塊被多次包含在一個Concern中,不再引發異常。 (拉取請求)

  • 保留傳遞給ActiveSupport::CacheStore#fetch_multi的鍵的順序。 (拉取請求)

  • 修復String#safe_constantize,不再為錯誤大小寫的常量引用引發LoadError。 (拉取請求)

  • 添加Hash#deep_transform_valuesHash#deep_transform_values!。 (提交)

  • 添加ActiveSupport::HashWithIndifferentAccess#assoc。 (拉取請求)

  • CurrentAttributes中添加before_reset回調,並將after_reset定義為resets的別名,以實現對稱性。 (拉取請求)

  • 修改ActiveSupport::Notifications.unsubscribe,以正確處理正則表達式或其他多模式訂閱者。 (拉取請求)

  • 使用Zeitwerk添加新的自動加載機制。 (提交)

  • 添加Array#includingEnumerable#including,以便方便地擴大集合。 (提交)

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

  • 添加對於transliterateparameterize提供locale的支持。 (拉取請求)

  • 修復Time#advance在1001-03-07之前的日期無法正常工作的問題。 (拉取請求)

  • 更新ActiveSupport::Notifications::Instrumenter#instrument,允許不傳遞塊。 (拉取請求)

  • 在後代跟踪器中使用弱引用,以允許匿名子類被垃圾回收。 (拉取請求)

  • 使用with_info_handler方法調用測試方法,以使minitest-hooks插件正常工作。 (提交)

  • ActiveSupport::SafeBuffer#*上保留html_safe?狀態。 (拉取請求)

12 Active Job

詳細更改請參閱Changelog

12.1 刪除

12.2 廢棄

12.3 重要更改

  • 添加對於Active Job參數的自定義序列化器的支持。 (拉取請求)

  • 添加對於在排隊時使用的時區執行Active Jobs的支持。 (拉取請求)

  • 允許將多個異常傳遞給retry_on/discard_on。 (提交)

  • 允許在不使用塊的情況下調用assert_enqueued_withassert_enqueued_email_with。 (拉取請求)

  • enqueueenqueue_at的通知包裝在around_enqueue回調中,而不是after_enqueue回調中。 (拉取請求)

  • 允許在不使用塊的情況下調用perform_enqueued_jobs。 (拉取請求)

  • 允許在不使用塊的情況下調用assert_performed_with。 (拉取請求)

  • 對於作業斷言和輔助方法添加:queue選項。 (拉取請求)

  • 在Active Job重試和丟棄周圍添加鉤子。 (拉取請求)

  • 添加一種方法來測試執行作業時的參數子集。 (拉取請求)

  • 在Active Job測試輔助方法返回的作業中包含反序列化的參數。 (拉取請求)

  • 允許Active Job斷言輔助方法接受only關鍵字的Proc。 (拉取請求)

  • 在斷言輔助方法中從作業參數中刪除微秒和納秒。 (拉取請求)

13 Ruby on Rails指南

詳細更改請參閱Changelog

13.1 重要變更

  • 新增了使用Active Record的多個資料庫指南。 (拉取請求)

  • 新增了有關自動載入常數故障排除的章節。 (提交)

  • 新增了Action Mailbox基礎指南。 (拉取請求)

  • 新增了Action Text概述指南。 (拉取請求)

14 貢獻者

請參閱 Rails的完整貢獻者列表 感謝所有花費了許多時間使Rails成為穩定且強大的框架的人們。向他們致敬。

回饋

歡迎協助提升本指南的品質。

如果您發現任何錯別字或事實錯誤,請貢獻您的力量。 開始之前,您可以閱讀我們的 文件貢獻 部分。

您也可能會發現不完整的內容或過時的資訊。 請為主要的文件補充任何遺漏的內容。請先檢查 Edge 指南,以確認問題是否已經修復或尚未在主分支上修復。 請參考 Ruby on Rails 指南指引 以了解風格和慣例。

如果您發現需要修復但無法自行修補的問題,請 開啟一個問題

最後但同樣重要的是,關於 Ruby on Rails 文件的任何討論都非常歡迎在 官方 Ruby on Rails 論壇 上進行。