1 การอัปเกรดไปยัง Rails 6.0
หากคุณกำลังอัปเกรดแอปพลิเคชันที่มีอยู่อยู่ ควรมีการทดสอบที่ดีก่อนที่จะเริ่มต้น คุณควรอัปเกรดเป็น Rails 5.2 ก่อนหากคุณยังไม่ได้ทำ และตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณยังทำงานตามที่คาดหวังก่อนที่จะพยายามอัปเดตเป็น Rails 6.0 มีรายการสิ่งที่ควรระมัดระวังเมื่ออัปเกรดใน การอัปเกรด Ruby on Rails คู่มือ
2 คุณสมบัติหลัก
2.1 Action Mailbox
Action Mailbox ช่วยให้คุณสามารถเส้นทางอีเมลที่เข้ามาไปยังกล่องจดหมายที่คล้ายกับคอนโทรลเลอร์ได้ คุณสามารถอ่านข้อมูลเพิ่มเติมเกี่ยวกับ Action Mailbox ในคู่มือ Action Mailbox Basics
2.2 Action Text
Action Text นำเนื้อหาและการแก้ไขข้อความที่มีรูปแบบสู่ Rails มาให้ มันรวม ตัวแก้ไข Trix ที่จัดการทุกอย่างตั้งแต่การจัดรูปแบบ ไปยังการเชื่อมโยงไปยังการอ้างอิงไปยังรายการไปยังรูปภาพและแกลเลอรี่ที่ฝังอยู่ เนื้อหาข้อความที่มีรูปแบบที่สร้างขึ้นโดยตัวแก้ไข Trix จะถูกบันทึกในตัวของตัวเอง โมเดล RichText ที่เชื่อมโยงกับแอปพลิเคชัน Active Record ที่มีอยู่ รูปภาพที่ฝังอยู่ (หรือไฟล์แนบอื่น ๆ) จะถูกเก็บอัตโนมัติโดยใช้ Active Storage และเชื่อมโยงกับตัวแก้ไข RichText ที่รวมอยู่
คุณสามารถอ่านข้อมูลเพิ่มเติมเกี่ยวกับ Action Text ในคู่มือ Action Text Overview
2.3 Parallel Testing
การทดสอบแบบขนาน ช่วยให้คุณสามารถทดสอบแบบขนานได้ ชุดทดสอบของคุณ ในขณะที่การสร้างกระบวนการคือวิธีเริ่มต้น การใช้เธรดเป็นวิธีที่สนับสนุนด้วย การเรียกใช้การทดสอบแบบขนานลดเวลาที่ใช้ ชุดทดสอบทั้งหมดของคุณในการทดสอบ
2.4 Action Cable Testing
3 เครื่องมือทดสอบ Action Cable
เครื่องมือทดสอบ Action Cable ช่วยให้คุณสามารถทดสอบฟังก์ชัน Action Cable ของคุณได้ที่ระดับใดก็ได้: การเชื่อมต่อ (connections), ช่อง (channels), การกระจาย (broadcasts).
4 Railties
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด.
4.1 การลบ
ลบ
after_bundle
helper ที่ถูกเลิกใช้ภายในเทมเพลตของปลั๊กอิน (Commit)ลบการสนับสนุนที่ถูกเลิกใช้สำหรับ
config.ru
ที่ใช้คลาสแอปพลิเคชันเป็นอาร์กิวเมนต์ของrun
(Commit)ลบอาร์กิวเมนต์
environment
ที่ถูกเลิกใช้จากคำสั่ง rails (Commit)ลบเมธอด
capify!
ที่ถูกเลิกใช้ใน generators และเทมเพลต (Commit)ลบ
config.secret_token
ที่ถูกเลิกใช้ (Commit)
4.2 การเลิกใช้
เลิกใช้การส่งชื่อเซิร์ฟเวอร์ Rack เป็นอาร์กิวเมนต์ปกติให้กับ
rails server
(Pull Request)เลิกใช้การสนับสนุนในการใช้
HOST
environment เพื่อระบุ IP เซิร์ฟเวอร์ (Pull Request)เลิกใช้การเข้าถึง hashes ที่ส่งกลับจาก
config_for
ด้วยคีย์ที่ไม่ใช่สัญลักษณ์ (Pull Request)
4.3 การเปลี่ยนแปลงที่สำคัญ
เพิ่มตัวเลือกชื่อ
--using
หรือ-u
เพื่อระบุเซิร์ฟเวอร์สำหรับคำสั่งrails server
(Pull Request)เพิ่มความสามารถในการดูผลลัพธ์ของ
rails routes
ในรูปแบบที่ขยายออก (Pull Request)รันงานฐานข้อมูล seed โดยใช้ inline Active Job adapter (Pull Request)
เพิ่มคำสั่ง
rails db:system:change
เพื่อเปลี่ยนฐานข้อมูลของแอปพลิเคชัน (Pull Request)เพิ่มคำสั่ง
rails test:channels
เพื่อทดสอบเฉพาะช่อง Action Cable เท่านั้น (Pull Request)นำเสนอการป้องกันการโจมตี DNS rebinding (Pull Request)
เพิ่มความสามารถในการยกเลิกเมื่อเกิดข้อผิดพลาดในขณะที่รันคำสั่ง generator (Pull Request)
ทำให้ Webpacker เป็นคอมไพเลอร์ JavaScript เริ่มต้นสำหรับ Rails 6 (Pull Request)
เพิ่มการสนับสนุนฐานข้อมูลหลายระบบสำหรับคำสั่ง
rails db:migrate:status
(Pull Request)เพิ่มความสามารถในการใช้เส้นทางการโยกย้ายที่แตกต่างกันจากฐานข้อมูลหลายระบบใน generators (Pull Request)
เพิ่มการสนับสนุนสำหรับข้อมูลรับรองแบบหลายสภาพแวดล้อม (Pull Request)
กำหนด
null_store
เป็นค่าเริ่มต้นของร้านค้าแคชในสภาพแวดล้อมการทดสอบ (Pull Request)
5 Action Cable
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด.
5.1 การลบ
แทนที่
ActionCable.startDebugging()
และActionCable.stopDebugging()
ด้วยActionCable.logger.enabled
(Pull Request)การเลิกใช้งาน
ไม่มีการเลิกใช้งานสำหรับ Action Cable ใน Rails 6.0
5.2 การเปลี่ยนแปลงที่สำคัญ
เพิ่มการสนับสนุนตัวเลือก
channel_prefix
สำหรับ PostgreSQL subscription adapters ในcable.yml
(Pull Request)อนุญาตให้ส่งค่าการกำหนดค่าที่กำหนดเองไปยัง
ActionCable::Server::Base
(Pull Request)เพิ่ม
:action_cable_connection
และ:action_cable_channel
load hooks (Pull Request)เพิ่ม
Channel::Base#broadcast_to
และChannel::Base.broadcasting_for
(Pull Request)ปิดการเชื่อมต่อเมื่อเรียกใช้
reject_unauthorized_connection
จากActionCable::Connection
(Pull Request)แปลงแพ็คเกจ Action Cable JavaScript จาก CoffeeScript เป็น ES2015 และเผยแพร่รหัสต้นฉบับในการกระจายของ npm (Pull Request)
ย้ายการกำหนดค่าของ WebSocket adapter และ logger adapter จากคุณสมบัติของ
ActionCable
เป็นActionCable.adapters
(Pull Request)เพิ่มตัวเลือก
id
ให้กับ Redis adapter เพื่อแยกการเชื่อมต่อ Redis ของ Action Cable (Pull Request)
6 Action Pack
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
6.1 การลบ
เอา
fragment_cache_key
helper ที่เลิกใช้งานออกและใช้combined_fragment_cache_key
แทน (Commit)เอาเมธอดที่เลิกใช้งานใน
ActionDispatch::TestResponse
ออก:#success?
แทนด้วย#successful?
,#missing?
แทนด้วย#not_found?
,#error?
แทนด้วย#server_error?
(Commit)
6.2 การเลิกใช้งาน
เลิกใช้งาน
ActionDispatch::Http::ParameterFilter
และใช้ActiveSupport::ParameterFilter
แทน (Pull Request)เลิกใช้งาน
force_ssl
ระดับคอนโทรลเลอร์และใช้config.force_ssl
แทน (Pull Request)
6.3 การเปลี่ยนแปลงที่สำคัญ
เปลี่ยน
ActionDispatch::Response#content_type
ให้ส่งค่าเฮดเดอร์ Content-Type ตามที่กำหนด (Pull Request)สร้าง
ArgumentError
หากพารามิเตอร์ของทรัพยากรมีเครื่องหมายโคลอน (Pull Request)อนุญาตให้เรียกใช้
ActionDispatch::SystemTestCase.driven_by
พร้อมกับบล็อกเพื่อกำหนดความสามารถของเบราว์เซอร์เฉพาะ (Pull Request)เพิ่ม middleware
ActionDispatch::HostAuthorization
เพื่อป้องกันการโจมตี DNS rebinding (Pull Request)อนุญาตให้ใช้
parsed_body
ในActionController::TestCase
(Pull Request)สร้าง
ArgumentError
เมื่อมีเส้นทางรูทหลายเส้นในบริบทเดียวโดยไม่ระบุชื่อas:
(Pull Request)อนุญาตให้ใช้
#rescue_from
ในการจัดการข้อผิดพลาดการแยกวิเคราะห์พารามิเตอร์ (Pull Request)เพิ่ม
ActionController::Parameters#each_value
เพื่อทำการวนซ้ำผ่านพารามิเตอร์ (Pull Request)เข้ารหัสชื่อไฟล์ Content-Disposition ใน
send_data
และsend_file
(Pull Request)เปิดเผย
ActionController::Parameters#each_key
. (Pull Request)เพิ่มข้อมูลเชิงวัตถุและวันหมดอายุในคุกกี้ที่เข้ารหัสเพื่อป้องกันการคัดลอกค่าของคุกกี้ไปยังคุกกี้อื่น (Pull Request)
เรียก
ActionController::RespondToMismatchError
เมื่อมีการเรียกใช้respond_to
ที่ขัดแย้งกัน (Pull Request)เพิ่มหน้าข้อผิดพลาดเฉพาะสำหรับกรณีที่ไม่มีเทมเพลตสำหรับรูปแบบคำขอ (Pull Request)
นำเข้า
ActionDispatch::DebugExceptions.register_interceptor
เป็นวิธีการเชื่อมต่อกับ DebugExceptions และประมวลผลข้อยกเว้นก่อนที่จะถูกแสดง (Pull Request)แสดงเฉพาะหนึ่งค่าของหัวข้อ Content-Security-Policy nonce ต่อคำขอ (Pull Request)
เพิ่มโมดูลเฉพาะสำหรับการกำหนดค่าส่วนหัวเริ่มต้นของ Rails ที่สามารถรวมเข้ากับคอนโทรลเลอร์ได้อย่างชัดเจน (Pull Request)
เพิ่ม
#dig
ในActionDispatch::Request::Session
. (Pull Request)
7 Action View
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
7.1 การลบ
ลบตัวช่วย
image_alt
ที่ถูกยกเลิก (Commit)ลบโมดูล
RecordTagHelper
ที่ว่างเปล่าซึ่งฟังก์ชันการทำงาน ถูกย้ายไปยังแพ็กเกจrecord_tag_helper
แล้ว (Commit)
7.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)
7.3 การเปลี่ยนแปลงที่สำคัญ
เคลียร์แคช Action View เฉพาะในโหมดการพัฒนาเมื่อมีการเปลี่ยนแปลงในไฟล์ เพื่อเพิ่มความเร็วในโหมดการพัฒนา (Pull Request)
ย้ายแพ็กเกจทั้งหมดของ Rails npm เข้าไปในขอบเขต
@rails
(Pull Request)ยอมรับเฉพาะรูปแบบจากชนิด MIME ที่ลงทะเบียนเท่านั้น (Pull Request, Pull Request)
เพิ่มการจัดสรรในการแสดงเทมเพลตและพาร์ทเชียลในเซิร์ฟเวอร์ (Pull Request)
เพิ่มตัวเลือก
year_format
ในแท็กdate_select
เพื่อปรับแต่งชื่อปี (Pull Request)เพิ่มตัวเลือก
nonce: true
สำหรับตัวช่วยjavascript_include_tag
เพื่อรองรับการสร้าง nonce อัตโนมัติสำหรับ Content Security Policy (Pull Request)เพิ่มการกำหนดค่า
action_view.finalize_compiled_template_methods
เพื่อปิดหรือเปิดใช้งาน finalizer ของActionView::Template
(Pull Request)แยกการเรียก
confirm
ของ JavaScript เป็นเมธอดที่สามารถแก้ไขได้เองในrails_ujs
(Pull Request)เพิ่มตัวเลือกการกำหนดค่า
action_controller.default_enforce_utf8
เพื่อใช้ในการบังคับให้ใช้การเข้ารหัส UTF-8 ค่าเริ่มต้นคือfalse
(Pull Request)เพิ่มการสนับสนุนรูปแบบคีย์ I18n สำหรับคีย์ locale ในแท็ก submit (Pull Request)
8 Action Mailer
โปรดอ้างอิง Changelog สำหรับรายละเอียดการเปลี่ยนแปลง
8.1 การลบ
8.2 การเลิกใช้
เลิกใช้
ActionMailer::Base.receive
และแนะนำให้ใช้ Action Mailbox แทน (Commit)เลิกใช้
DeliveryJob
และParameterized::DeliveryJob
และแนะนำให้ใช้MailDeliveryJob
แทน (Pull Request)
8.3 การเปลี่ยนแปลงที่สำคัญ
เพิ่ม
MailDeliveryJob
เพื่อใช้ในการส่งอีเมลทั้งแบบธรรมดาและแบบพารามิเตอร์ (Pull Request)อนุญาตให้งานส่งอีเมลที่กำหนดเองสามารถทำงานร่วมกับการตรวจสอบข้อกำหนดของ Action Mailer (Pull Request)
อนุญาตให้ระบุชื่อเทมเพลตสำหรับอีเมลแบบหลายส่วนด้วยบล็อกแทนการใช้เพียงชื่อแอ็กชันเท่านั้น (Pull Request)
เพิ่ม
perform_deliveries
เข้าไปใน payload ของการแจ้งเตือนdeliver.action_mailer
(Pull Request)ปรับปรุงข้อความบันทึกเมื่อ
perform_deliveries
เป็น false เพื่อแสดงว่าการส่งอีเมลถูกข้ามไป (Pull Request)อนุญาตให้เรียกใช้
assert_enqueued_email_with
โดยไม่ต้องใช้บล็อก (Pull Request)ดำเนินการส่งงานส่งอีเมลที่อยู่ในคิวในบล็อก
assert_emails
(Pull Request)อนุญาตให้
ActionMailer::Base
ยกเลิกการลงทะเบียน observers และ interceptors (Pull Request)
9 Active Record
โปรดอ้างอิง Changelog สำหรับรายละเอียดการเปลี่ยนแปลง
9.1 การลบ
ลบ
#set_state
ที่ถูกเลิกใช้จากออบเจกต์ transaction (Commit)ลบ
#supports_statement_cache?
ที่ถูกเลิกใช้จากอะแดปเตอร์ฐานข้อมูล (Commit)ลบ
#insert_fixtures
ที่ถูกเลิกใช้จากอะแดปเตอร์ฐานข้อมูล (Commit)ลบ
ActiveRecord::ConnectionAdapters::SQLite3Adapter#valid_alter_table_type?
ที่ถูกเลิกใช้ (Commit)ลบการสนับสนุนในการส่งชื่อคอลัมน์ไปยัง
sum
เมื่อมีการส่งบล็อก (Commit)ลบการสนับสนุนในการส่งชื่อคอลัมน์ไปยัง
count
เมื่อมีการส่งบล็อก (Commit)ลบการสนับสนุนในการเลือกวิธีที่ขาดหายไปในความสัมพันธ์ไปยัง Arel (Commit)
ลบการสนับสนุนในการเลือกวิธีที่ขาดหายไปในความสัมพันธ์ไปยังเมธอดเอกสารส่วนตัวของคลาส (Commit)
ลบการสนับสนุนในการระบุชื่อ timestamp สำหรับ
#cache_key
(Commit)ลบ
ActiveRecord::Migrator.migrations_path=
ที่ถูกเลิกใช้ (Commit)ลบ
expand_hash_conditions_for_aggregates
ที่ถูกยกเลิกแล้ว (Commit)
9.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_length
,table_name_length
,columns_per_table
,indexes_per_table
,columns_per_multicolumn_index
,sql_query_length
, และjoins_per_query
(Commit)ยกเลิก
update_attributes
/!
เพื่อใช้แทนupdate
/!
(Commit)
9.3 การเปลี่ยนแปลงที่สำคัญ
เพิ่มเวอร์ชันขั้นต่ำของแพ็กเกจ
sqlite3
เป็น 1.4 (Pull Request)เพิ่ม
rails db:prepare
เพื่อสร้างฐานข้อมูลหากยังไม่มี และเรียกใช้งานการเคลื่อนย้ายของมัน (Pull Request)เพิ่ม
after_save_commit
callback เป็นทางเลือกสำหรับ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
ที่ตัดตารางของแต่ละฐานข้อมูล สำหรับสภาพแวดล้อมปัจจุบันและโหลด seed (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)
ทำให้ timestamps พร้อมกับความแม่นยำเป็นค่าเริ่มต้นสำหรับการเคลื่อนย้าย (Pull Request)
สนับสนุนตัวเลือก
:size
เพื่อเปลี่ยนขนาดของข้อความและ blob ใน MySQL (Pull Request)ตั้งค่าคอลัมน์ foreign key และ foreign type เป็น NULL สำหรับความสัมพันธ์หลายรูปแบบใน
dependent: :nullify
(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)
ทำให้ SQL ของข้อผิดพลาด
ActiveRecord::StatementInvalid
เป็นคุณสมบัติของข้อผิดพลาดที่แยกออกมาเป็นของตัวเอง และรวม SQL binds เป็นคุณสมบัติข้อผิดพลาดที่แยกออกมาเป็นของตัวเอง (Pull Request)เพิ่มตัวเลือก
:if_not_exists
ในcreate_table
(Pull Request)เพิ่มการสนับสนุนฐานข้อมูลหลายรายการใน
rails db:schema:cache:dump
และrails db:schema:cache:clear
(Pull Request)เพิ่มการสนับสนุนการกำหนดค่าแบบแฮชและ URL ในฐานข้อมูลแฮชของ
ActiveRecord::Base.connected_to
(Pull Request)เพิ่มการสนับสนุนสูตรเริ่มต้นและดัชนีสูตรสำหรับ MySQL (Pull Request)
เพิ่มตัวเลือก
index
สำหรับช่วยในการเปลี่ยนแปลงตาราง (Pull Request)แก้ไขการย้อนกลับของ
transaction
สำหรับการเรียกใช้งาน ที่อยู่ภายในtransaction
ในการย้อนกลับของการเรียกใช้งาน (Pull Request)อนุญาตให้
ActiveRecord::Base.configurations=
สามารถตั้งค่าด้วยแฮชที่มีสัญลักษณ์ (Pull Request)แก้ไขการนับจำนวนเพื่ออัปเดตเฉพาะเมื่อบันทึกเร็คคอร์ดจริงๆ (Pull Request)
เพิ่มการสนับสนุนดัชนีแสดงออกสำหรับ SQLite adapter (Pull Request)
อนุญาตให้คลาสย่อยนิยามการเรียกใช้งานอัตโนมัติสำหรับบันทึกที่เกี่ยวข้อง (Pull Request)
เพิ่มรุ่นขั้นต่ำของ MySQL เป็นเวอร์ชัน 5.5.8 (Pull Request)
ใช้ชุดตัวอักษร utf8mb4 เป็นค่าเริ่มต้นใน MySQL (Pull Request)
เพิ่มความสามารถในการกรองข้อมูลที่เป็นข้อมูลที่อ่อนไหวใน
#inspect
(Pull Request, Pull Request)เปลี่ยน
ActiveRecord::Base.configurations
เพื่อให้ส่งคืนวัตถุแทนแฮช (Pull Request)เพิ่มการกำหนดค่าฐานข้อมูลเพื่อปิดการใช้งาน advisory locks (Pull Request)
อัปเดต SQLite3 adapter
alter_table
เพื่อกู้คืน foreign keys (Pull Request)อนุญาตให้
:to_table
option ของremove_foreign_key
เป็นสถานะที่สามารถกลับได้ (Pull Request)แก้ไขค่าเริ่มต้นสำหรับ MySQL time types ที่ระบุความแม่นยำ (Pull Request)
แก้ไข
touch
option เพื่อให้ทำงานได้สอดคล้องกับPersistence#touch
method อย่างสม่ำเสมอ (Pull Request)สร้างข้อยกเว้นสำหรับการกำหนดคอลัมน์ซ้ำใน Migrations (Pull Request)
เพิ่มรุ่นขั้นต่ำของ SQLite เป็นเวอร์ชัน 3.8 (Pull Request)
แก้ไขบันทึกหลักไม่ให้บันทึกพร้อมกับบันทึกลูกซ้ำ (Pull Request)
ตรวจสอบให้แน่ใจว่า
Associations::CollectionAssociation#size
และAssociations::CollectionAssociation#empty?
ใช้ loaded association ids ถ้ามีอยู่ (Pull Request)เพิ่มการสนับสนุนในการโหลด associations ของ polymorphic associations เมื่อไม่มีรายการทั้งหมดที่มี associations ที่ร้องขอ (Commit)
เพิ่มเมธอด
touch_all
ในActiveRecord::Relation
(Pull Request)เพิ่ม
ActiveRecord::Base.base_class?
predicate (Pull Request)เพิ่มตัวเลือก prefix/suffix ที่กำหนดเองใน
ActiveRecord::Store.store_accessor
(Pull Request)เพิ่ม
ActiveRecord::Base.create_or_find_by
/!
เพื่อจัดการกับสถานการณ์ SELECT/INSERT race condition ในActiveRecord::Base.find_or_create_by
/!
โดยใช้ unique constraints ในฐานข้อมูล (Pull Request)เพิ่ม
Relation#pick
เป็นตัวย่อสำหรับ single-value plucks (Pull Request)
10 Active Storage
โปรดอ้างอิงที่ Changelog สำหรับรายละเอียดการเปลี่ยนแปลง
10.1 การลบ
10.2 การเลิกใช้
เลิกใช้
config.active_storage.queue
และใช้config.active_storage.queues.analysis
และconfig.active_storage.queues.purge
แทน (Pull Request)เลิกใช้
ActiveStorage::Downloading
และใช้ActiveStorage::Blob#open
แทน (Commit)เลิกใช้
mini_magick
โดยตรงสำหรับการสร้าง image variants และใช้image_processing
แทน (Commit)เลิกใช้
:combine_options
ใน Active Storage's ImageProcessing transformer โดยไม่มีตัวแทน (Commit)
10.3 การเปลี่ยนแปลงที่สำคัญ
เพิ่มการสนับสนุนในการสร้าง BMP image variants (Pull Request)
เพิ่มการสนับสนุนในการสร้าง TIFF image variants (Pull Request)
เพิ่มการสนับสนุนในการสร้าง progressive JPEG image variants (Pull Request)
เพิ่ม
ActiveStorage.routes_prefix
เพื่อกำหนดค่าเส้นทางที่สร้างขึ้นโดย Active Storage (Pull Request)สร้างการตอบสนอง 404 Not Found ใน
ActiveStorage::DiskController#show
เมื่อ ไฟล์ที่ร้องขอหายไปจาก disk service (Pull Request)เพิ่ม
ActiveStorage::FileNotFoundError
เมื่อไฟล์ที่ร้องขอหายไปสำหรับActiveStorage::Blob#download
และActiveStorage::Blob#open
(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
ซึ่งดาวน์โหลด blob ไปยัง tempfile บนดิสก์และให้ tempfile (Commit)รองรับการดาวน์โหลดแบบสตรีมจาก Google Cloud Storage ต้องใช้เวอร์ชัน 1.11+ ของ
google-cloud-storage
gem (Pull Request)ใช้
image_processing
gem สำหรับตัวแปร Active Storage แทนการใช้mini_magick
โดยตรง (Pull Request)
11 Active Model
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
11.1 การลบ
11.2 การเลิกใช้
11.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
สำหรับ timestamp (Pull Request)แก้ไขตัวตรวจสอบ numericality เพื่อใช้ค่าก่อนแปลงชนิดยกเว้น Active Record (Pull Request)
แก้ไขการตรวจสอบความเท่าเทียมของ numericality ของ
BigDecimal
และFloat
โดยแปลงเป็นBigDecimal
ทั้งสองด้านของการตรวจสอบ (Pull Request)แก้ไขค่าปีเมื่อแปลง multiparameter time hash (Pull Request)
แปลงค่าตัวแปร boolean ที่เป็นสัญลักษณ์เท็จเป็น false บนแอตทริบิวต์ boolean (Pull Request)
ส่งคืนวันที่ที่ถูกต้องในขณะแปลงพารามิเตอร์ใน
value_from_multiparameter_assignment
สำหรับActiveModel::Type::Date
(Pull Request)ย้อนกลับไปที่ลักษณะที่เกี่ยวข้องก่อนจะย้อนกลับไปที่เนมสเปซ
:errors
เมื่อดึงการแปลผิดพลาด (Pull Request)Active Support
โปรดอ้างอิงที่ Changelog เพื่อดูการเปลี่ยนแปลงที่ละเอียด
11.4 การลบ
ลบเมธอด
#acronym_regex
ที่ถูกยกเลิกจากInflections
(Commit)ลบเมธอด
Module#reachable?
ที่ถูกยกเลิก (Commit)ลบ
Kernel#`
โดยไม่มีการแทนที่ใด ๆ (Pull Request)
11.5 การเลิกใช้
เลิกใช้การใช้ตัวเลขลบเป็นอาร์กิวเมนต์สำหรับ
String#first
และString#last
(Pull Request)เลิกใช้
ActiveSupport::Multibyte::Unicode#downcase/upcase/swapcase
และใช้String#downcase/upcase/swapcase
แทน (Pull Request)เลิกใช้
ActiveSupport::Multibyte::Unicode#normalize
และActiveSupport::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.6 การเปลี่ยนแปลงที่สำคัญ
เพิ่มการสนับสนุนการทดสอบแบบพร้อมกัน (Pull Request)
ตรวจสอบให้แน่ใจว่า
String#strip_heredoc
รักษาความแข็งแรงของสตริงที่แช่แข็งไว้ (Pull Request)เพิ่ม
String#truncate_bytes
เพื่อตัดสตริงให้มีขนาดไบต์สูงสุดโดยไม่ทำให้ตัวอักษรหลายไบต์หรือกลุ่มกราฟีมแตก (Pull Request)เพิ่มตัวเลือก
private
ในเมธอดdelegate
เพื่อเลือกใช้เมธอดเอกชน ตัวเลือกนี้ยอมรับค่าtrue/false
(Pull Request)เพิ่มการสนับสนุนการแปลผ่าน I18n สำหรับ
ActiveSupport::Inflector#ordinal
และActiveSupport::Inflector#ordinalize
(Pull Request)เพิ่มเมธอด
before?
และafter?
ในDate
,DateTime
,Time
, และTimeWithZone
(Pull Request)แก้ไขข้อบกพร่องที่
URI.unescape
จะล้มเหลวเมื่อมีอินพุตที่ผสมระหว่างตัวอักษรยูนิโคดและตัวอักษรที่หลบหนี้ (Pull Request)แก้ไขข้อบกพร่องที่
ActiveSupport::Cache
จะทำให้ขนาดการเก็บข้อมูลขยายอย่างมากเมื่อเปิดใช้งานการบีบอัด (Pull Request)Redis cache store:
delete_matched
ไม่บล็อกเซิร์ฟเวอร์ Redis อีกต่อไป (Pull Request)แก้ไขข้อบกพร่องที่
ActiveSupport::TimeZone.all
จะล้มเหลวเมื่อข้อมูล tzinfo สำหรับเขตเวลาใด ๆ ที่กำหนดไว้ในActiveSupport::TimeZone::MAPPING
หายไป (Pull Request)เพิ่ม
Enumerable#index_with
ซึ่งช่วยให้สร้างแฮชจาก enumerable ด้วยค่าจากบล็อกที่ผ่านมาหรืออาร์กิวเมนต์เริ่มต้น (Pull Request)อนุญาตให้
Range#===
และRange#cover?
ทำงานกับอาร์กิวเมนต์ชนิดRange
(Pull Request)สนับสนุนการหมดอายุของคีย์ในการดำเนินการ
increment/decrement
ของ RedisCacheStore (Pull Request)เพิ่มคุณสมบัติเวลา CPU, เวลาว่างเปล่า และการจัดสรรทรัพยากรในเหตุการณ์ผู้สมัครใช้งานบันทึก (Pull Request)
เพิ่มการสนับสนุนสำหรับอ็อบเจกต์เหตุการณ์ในระบบการแจ้งเตือน Active Support (Pull Request)
เพิ่มการสนับสนุนให้ไม่แคชรายการ
nil
โดยการเพิ่มตัวเลือกใหม่skip_nil
สำหรับActiveSupport::Cache#fetch
(Pull Request)เพิ่มเมธอด
Array#extract!
ซึ่งจะลบและส่งคืนองค์ประกอบที่ฟังก์ชันคืนค่าเป็นจริง (Pull Request)รักษาสตริงที่ปลอดภัยสำหรับ HTML หลังจากที่ตัดออก (Pull Request)
เพิ่มการสนับสนุนในการติดตามการโหลดอัตโนมัติของค่าคงที่ผ่านการบันทึก (Commit)
กำหนด
unfreeze_time
เป็นชื่อย่อของtravel_back
(Pull Request)เปลี่ยน
ActiveSupport::TaggedLogging.new
เพื่อให้ส่งคืนตัวอย่างเครื่องมือเขียนบันทึกใหม่แทนการเปลี่ยนแปลงตัวแปรที่ได้รับเป็นอาร์กิวเมนต์ (Pull Request)จัดการ
#delete_prefix
,#delete_suffix
และ#unicode_normalize
เป็นเมธอดที่ไม่ปลอดภัยสำหรับ HTML (Pull Request)แก้ไขข้อบกพร่องที่
#without
สำหรับActiveSupport::HashWithIndifferentAccess
จะล้มเหลวเมื่อมีอาร์กิวเมนต์เป็นสัญลักษณ์ (Pull Request)เปลี่ยนชื่อ
Module#parent
,Module#parents
, และModule#parent_name
เป็นmodule_parent
,module_parents
, และmodule_parent_name
(Pull Request)เพิ่ม
ActiveSupport::ParameterFilter
(Pull Request)แก้ไขปัญหาที่ระยะเวลาถูกปัดเป็นวินาทีเต็มเมื่อมีจำนวนทศนิยม ถูกเพิ่มเข้าไปในระยะเวลา (Pull Request)
ทำให้
#to_options
เป็นชื่อย่อของ#symbolize_keys
ในActiveSupport::HashWithIndifferentAccess
(Pull Request)ไม่ยกเว้นข้อยกเว้นอีกต่อไปหากบล็อกเดียวกันถูกรวมเข้าไปหลายครั้ง สำหรับ Concern (Pull Request)
รักษาลำดับคีย์ที่ถูกส่งผ่านไปยัง
ActiveSupport::CacheStore#fetch_multi
(Pull Request)แก้ไข
String#safe_constantize
เพื่อไม่ส่งคืนLoadError
สำหรับการอ้างอิงค่าคงที่ที่เขียนผิดตัวอักษร (Pull Request)เพิ่ม
Hash#deep_transform_values
และHash#deep_transform_values!
(Commit)เพิ่ม
ActiveSupport::HashWithIndifferentAccess#assoc
(Pull Request)เพิ่ม
before_reset
callback ให้กับCurrentAttributes
และกำหนดafter_reset
เป็นชื่อย่อของresets
เพื่อความสมมาตร (Pull Request)แก้ไข
ActiveSupport::Notifications.unsubscribe
เพื่อจัดการถูกต้อง กับผู้สมัครที่เป็น Regex หรือผู้สมัครที่มีรูปแบบหลายรูปแบบอื่น ๆ (Pull Request)เพิ่มกลไกการโหลดอัตโนมัติใหม่โดยใช้ Zeitwerk (Commit)
เพิ่ม
Array#including
และEnumerable#including
เพื่อขยายคอลเลกชันได้อย่างสะดวก (Commit)เปลี่ยนชื่อ
Array#without
และEnumerable#without
เป็นArray#excluding
และEnumerable#excluding
ชื่อเดิมของเมธอดถูกเก็บไว้เป็นชื่อย่อ (Commit)เพิ่มการสนับสนุนในการระบุ
locale
ให้กับtransliterate
และparameterize
(Pull Request)แก้ไข
Time#advance
เพื่อให้ทำงานกับวันที่ก่อน 1001-03-07 (Pull Request)อัปเดต
ActiveSupport::Notifications::Instrumenter#instrument
เพื่ออนุญาตให้ไม่ต้องส่งพารามิเตอร์ block (Pull Request)ใช้ weak references ในตัวติดตามลูกสายเพื่อให้สามารถกำจัดลูกสายที่ไม่มีชื่อได้ (Pull Request)
เรียกใช้เมธอดทดสอบด้วย
with_info_handler
เพื่อให้ปลั๊กอิน minitest-hooks ทำงาน (Commit)รักษาสถานะ
html_safe?
ในActiveSupport::SafeBuffer#*
(Pull Request)
12 Active Job
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
12.1 การลบ
- ลบการสนับสนุน Qu gem (Pull Request)
12.2 การเลิกใช้
12.3 การเปลี่ยนแปลงที่สำคัญ
เพิ่มการสนับสนุนตัวแปรลงความสามารถที่กำหนดเองสำหรับอาร์กิวเมนต์ของ Active Job (Pull Request)
เพิ่มการสนับสนุนในการดำเนินงาน Active Jobs ในโซนเวลาที่เรียกคิว (Pull Request)
อนุญาตให้ส่งพารามิเตอร์ของข้อกำหนด
retry_on
/discard_on
หลายรายการ (Commit)อนุญาตให้เรียกใช้
assert_enqueued_with
และassert_enqueued_email_with
โดยไม่ต้องใช้ block (Pull Request)ห่อการแจ้งเตือนสำหรับ
enqueue
และenqueue_at
ใน callbackaround_enqueue
แทน callbackafter_enqueue
(Pull Request)อนุญาตให้เรียกใช้
perform_enqueued_jobs
โดยไม่ต้องใช้ block (Pull Request)อนุญาตให้เรียกใช้
assert_performed_with
โดยไม่ต้องใช้ block (Pull Request)เพิ่มตัวเลือก
:queue
ในการตรวจสอบงานและช่วยเหลือ (Pull Request)เพิ่ม hooks ใน Active Job รอบการลองใหม่และการละทิ้ง (Pull Request)
เพิ่มวิธีการทดสอบสำหรับเซตของอาร์กิวเมนต์เมื่อดำเนินงานงาน (Pull Request)
รวมอาร์กิวเมนต์ที่ถอดรหัสในงานที่ส่งกลับโดยเครื่องมือช่วยทดสอบ Active Job (Pull Request)
อนุญาตให้เครื่องมือช่วยการยืนยัน Active Job รับ Proc สำหรับคีย์เวิร์ด
only
(Pull Request)ลดไมโครวินาทีและนาโนวินาทีจากอาร์กิวเมนต์งานในเครื่องมือช่วยการยืนยัน (Pull Request)
13 Ruby on Rails Guides
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
13.1 การเปลี่ยนแปลงที่สำคัญ
เพิ่มเอกสาร Multiple Databases with Active Record (Pull Request)
เพิ่มส่วนเกี่ยวกับการแก้ปัญหาการโหลดค่าคงที่อัตโนมัติ (Commit)
เพิ่มเอกสาร Action Mailbox Basics (Pull Request)
เพิ่มเอกสาร Action Text Overview (Pull Request)
เครดิต
ดูรายชื่อเต็มของผู้มีส่วนร่วมใน Rails ได้ที่ รายชื่อผู้มีส่วนร่วมใน Rails สำหรับผู้ที่ใช้เวลาหลายชั่วโมงในการสร้าง Rails เป็นเฟรมเวิร์กที่เสถียรและทนทาน ขอแสดงความยินดีแก่ทุกคน
ข้อเสนอแนะ
คุณสามารถช่วยปรับปรุงคุณภาพของคู่มือนี้ได้
กรุณาช่วยเพิ่มเติมหากพบข้อผิดพลาดหรือข้อผิดพลาดทางความจริง เพื่อเริ่มต้นคุณสามารถอ่านส่วน การสนับสนุนเอกสาร ของเราได้
คุณอาจพบเนื้อหาที่ไม่สมบูรณ์หรือเนื้อหาที่ไม่ได้อัปเดต กรุณาเพิ่มเอกสารที่ขาดหายไปสำหรับเนื้อหาหลัก โปรดตรวจสอบ Edge Guides ก่อนเพื่อตรวจสอบ ว่าปัญหาได้รับการแก้ไขหรือไม่ในสาขาหลัก ตรวจสอบ คู่มือแนวทาง Ruby on Rails เพื่อดูรูปแบบและกฎเกณฑ์
หากคุณพบข้อผิดพลาดแต่ไม่สามารถแก้ไขได้เอง กรุณา เปิดปัญหา.
และสุดท้าย การสนทนาใด ๆ เกี่ยวกับ Ruby on Rails เอกสารยินดีต้อนรับที่สุดใน เว็บบอร์ดอย่างเป็นทางการของ Ruby on Rails.