1 การอัปเกรดไปยัง Rails 6.1
หากคุณกำลังอัปเกรดแอปพลิเคชันที่มีอยู่อยู่ ควรมีการทดสอบที่ดีก่อนที่จะเข้าไป คุณควรอัปเกรดเป็น Rails 6.0 ก่อนหากคุณยังไม่ได้และตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณยังทำงานตามที่คาดหวังก่อนที่จะพยายามอัปเดตเป็น Rails 6.1 มีรายการสิ่งที่ควรระมัดระวังเมื่ออัปเกรดใน การอัปเกรด Ruby on Rails
2 คุณสมบัติหลัก
2.1 การสลับการเชื่อมต่อตามฐานข้อมูล
Rails 6.1 ให้คุณสามารถ สลับการเชื่อมต่อตามฐานข้อมูลตามฐานข้อมูล ได้ ในรุ่น 6.0 หากคุณสลับไปยังบทบาท reading
แล้วการเชื่อมต่อฐานข้อมูลทั้งหมดก็จะสลับไปยังบทบาทการอ่าน ตอนนี้ในรุ่น 6.1 หากคุณตั้งค่า legacy_connection_handling
เป็น false
ในการกำหนดค่าของคุณ Rails จะอนุญาตให้คุณสลับการเชื่อมต่อสำหรับฐานข้อมูลเดียวโดยการเรียกใช้ connected_to
บนคลาสแบบนามธรรมที่เกี่ยวข้อง
2.2 การแบ่งแยกแนวนอน
Rails 6.0 มีความสามารถในการแบ่งแยกฟังก์ชัน (พาร์ติชันหลายพาร์ติชัน, สกีมาต่างกัน) ในฐานข้อมูลของคุณ แต่ไม่สามารถรองรับการแบ่งแยกแนวนอน (สกีมาเดียวกัน, พาร์ติชันหลายพาร์ติชัน) ได้ Rails ไม่สามารถรองรับการแบ่งแยกแนวนอนได้เนื่องจากโมเดลใน Active Record สามารถมีการเชื่อมต่อเพียงหนึ่งต่อบทบาทต่อคลาสเท่านั้น ตอนนี้ได้แก้ไขแล้วและ การแบ่งแยกแนวนอน กับ Rails สามารถใช้งานได้
2.3 การโหลดสมาชิกแบบเข้มงวด
การโหลดสมาชิกแบบเข้มงวด ช่วยให้คุณสามารถให้แน่ใจได้ว่าสมาชิกของคุณถูกโหลดล่วงหน้าทั้งหมดและหยุด N+1 ก่อนที่จะเกิดขึ้น
2.4 ประเภทที่ได้รับมอบหมาย
ประเภทที่ได้รับมอบหมาย เป็นทางเลือกสำหรับการสืบทอดแบบตารางเดียว สิ่งนี้ช่วยให้สามารถแสดงชั้นสูงให้เป็นคลาสที่เป็นตัวแทนที่แสดงโดยตารางของตัวเอง แต่ละคลาสย่อยมีตารางของตัวเองสำหรับแอตทริบิวต์เพิ่มเติม
2.5 การทำลายสมาชิกแบบ Async
การทำลายสมาชิกแบบ Async เพิ่มความสามารถให้แอปพลิเคชันสามารถ ทำลาย
สมาชิกในงานพื้นหลังได้ สิ่งนี้ช่วยให้คุณหลีกเลี่ยงการหมดเวลาและปัญหาประสิทธิภาพอื่นๆ ในแอปพลิเคชันของคุณเมื่อทำลายข้อมูล
3 Railties
โปรดอ้างอิงที่ [Changelog][railties] สำหรับการเปลี่ยนแปลงที่ละเอียด
3.1 การลบ
ลบงาน
rake notes
ที่ถูกยกเลิกลบตัวเลือก
connection
ที่ถูกยกเลิกในคำสั่งrails dbconsole
ลบการสนับสนุนตัวแปรสภาพแวดล้อม
SOURCE_ANNOTATION_DIRECTORIES
ที่ถูกยกเลิกจากrails notes
ลบอาร์กิวเมนต์
server
ที่ถูกยกเลิกจากคำสั่ง rails serverลบการสนับสนุนตัวแปรสภาพแวดล้อม
HOST
ที่ถูกยกเลิกสำหรับระบุ IP เซิร์ฟเวอร์ลบงาน
rake dev:cache
ที่ถูกยกเลิกลบงาน
rake routes
ที่ถูกยกเลิกลบงาน
rake initializers
ที่ถูกยกเลิก
3.2 การเลิกใช้
3.3 การเปลี่ยนแปลงที่สำคัญ
4 Action Cable
โปรดอ้างอิงที่ [Changelog][action-cable] สำหรับการเปลี่ยนแปลงที่ละเอียด
4.1 การลบ
4.2 การเลิกใช้
4.3 การเปลี่ยนแปลงที่สำคัญ
5 Action Pack
โปรดอ้างอิงที่ [Changelog][action-pack] สำหรับการเปลี่ยนแปลงที่ละเอียด
5.1 การลบ
ลบคลาส
ActionDispatch::Http::ParameterFilter
ที่ถูกยกเลิกลบตัวเลือก
force_ssl
ในระดับคอนโทรลเลอร์ที่ถูกยกเลิก
5.2 การเลิกใช้
- เลิกใช้
config.action_dispatch.return_only_media_type_on_content_type
5.3 การเปลี่ยนแปลงที่สำคัญ
- เปลี่ยน
ActionDispatch::Response#content_type
เพื่อให้ส่งคืนส่วนหัว Content-Type ทั้งหมด Action View -----------
โปรดอ้างอิงที่ [Changelog][action-view] สำหรับการเปลี่ยนแปลงที่ละเอียด
5.4 การลบ
ลบ
escape_whitelist
ที่ถูกยกเลิกไปจากActionView::Template::Handlers::ERB
.ลบ
find_all_anywhere
ที่ถูกยกเลิกไปจากActionView::Resolver
.ลบ
formats
ที่ถูกยกเลิกไปจากActionView::Template::HTML
.ลบ
formats
ที่ถูกยกเลิกไปจากActionView::Template::RawFile
.ลบ
formats
ที่ถูกยกเลิกไปจากActionView::Template::Text
.ลบ
find_file
ที่ถูกยกเลิกไปจากActionView::PathSet
.ลบ
rendered_format
ที่ถูกยกเลิกไปจากActionView::LookupContext
.ลบ
find_file
ที่ถูกยกเลิกไปจากActionView::ViewPaths
.ลบการสนับสนุนที่ถูกยกเลิกไปในการส่งวัตถุที่ไม่ใช่
ActionView::LookupContext
เป็นอาร์กิวเมนต์แรกในActionView::Base#initialize
.ลบอาร์กิวเมนต์
format
ที่ถูกยกเลิกไปในActionView::Base#initialize
.ลบ
ActionView::Template#refresh
ที่ถูกยกเลิกไป.ลบ
ActionView::Template#original_encoding
ที่ถูกยกเลิกไป.ลบ
ActionView::Template#variants
ที่ถูกยกเลิกไป.ลบ
ActionView::Template#formats
ที่ถูกยกเลิกไป.ลบ
ActionView::Template#virtual_path=
ที่ถูกยกเลิกไป.ลบ
ActionView::Template#updated_at
ที่ถูกยกเลิกไป.ลบอาร์กิวเมนต์
updated_at
ที่ต้องการในActionView::Template#initialize
.ลบ
ActionView::Template.finalize_compiled_template_methods
ที่ถูกยกเลิกไป.ลบ
config.action_view.finalize_compiled_template_methods
ที่ถูกยกเลิกไป.ลบการสนับสนุนที่ถูกยกเลิกไปในการเรียกใช้
ActionView::ViewPaths#with_fallback
ด้วยบล็อก.ลบการสนับสนุนที่ถูกยกเลิกไปในการส่งเส้นทางแบบสัมพันธ์ไปยัง
render template:
.ลบการสนับสนุนที่ถูกยกเลิกไปในการส่งเส้นทางแบบสัมพันธ์ไปยัง
render file:
.ลบการสนับสนุนสำหรับตัวจัดการเทมเพลตที่ไม่ยอมรับอาร์กิวเมนต์สองตัว.
ลบอาร์กิวเมนต์ pattern ที่ถูกยกเลิกไปใน
ActionView::Template::PathResolver
.ลบการสนับสนุนที่ถูกยกเลิกไปในการเรียกใช้เมธอดเอกชนจากวัตถุในบางเฮลเปอร์ของมุมมอง.
5.5 การเลิกใช้
5.6 การเปลี่ยนแปลงที่สำคัญ
ต้องการให้คลาส
ActionView::Base
ที่สืบทอดมาประมวลผล#compiled_method_container
.ต้องการอาร์กิวเมนต์
locals
ในActionView::Template#initialize
.เครื่องมือช่วยการเรียกใช้
javascript_include_tag
และstylesheet_link_tag
สร้างLink
header ที่ให้คำแนะนำให้เบราว์เซอร์รุ่นใหม่เกี่ยวกับการโหลดล่วงหน้าของทรัพยากร สามารถปิดการใช้งานได้โดยตั้งค่าconfig.action_view.preload_links_header
เป็นfalse
.
6 Action Mailer
โปรดอ้างอิงที่ [Changelog][action-mailer] สำหรับการเปลี่ยนแปลงที่ละเอียด
6.1 การลบ
- ลบ
ActionMailer::Base.receive
ที่ถูกยกเลิกไปในการสนับสนุน Action Mailbox.
6.2 การเลิกใช้
6.3 การเปลี่ยนแปลงที่สำคัญ
7 Active Record
โปรดอ้างอิงที่ [Changelog][active-record] สำหรับการเปลี่ยนแปลงที่ละเอียด
7.1 การลบ
ลบเมธอดที่ถูกยกเลิกไปจาก
ActiveRecord::ConnectionAdapters::DatabaseLimits
.column_name_length
table_name_length
columns_per_table
indexes_per_table
columns_per_multicolumn_index
sql_query_length
joins_per_query
ลบ
ActiveRecord::ConnectionAdapters::AbstractAdapter#supports_multi_insert?
ที่ถูกยกเลิกไป.ลบ
ActiveRecord::ConnectionAdapters::AbstractAdapter#supports_foreign_keys_in_create?
ที่ถูกยกเลิกไป.ลบ
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#supports_ranges?
ที่ถูกยกเลิกไป.ลบ
ActiveRecord::Base#update_attributes
และActiveRecord::Base#update_attributes!
ที่ถูกยกเลิกไป.ลบอาร์กิวเมนต์
migrations_path
ในActiveRecord::ConnectionAdapter::SchemaStatements#assume_migrated_upto_version
ที่ถูกยกเลิกไป.ลบ
config.active_record.sqlite3.represent_boolean_as_integer
ที่ถูกยกเลิกไป.ลบเมธอดที่ถูกยกเลิกไปจาก
ActiveRecord::DatabaseConfigurations
.fetch
each
first
values
[]=
ลบเมธอด
ActiveRecord::Result#to_hash
ที่ถูกยกเลิกไป.ลบการสนับสนุนที่ถูกยกเลิกไปในการใช้งาน SQL แบบไม่ปลอดภัยในเมธอดของ
ActiveRecord::Relation
.
7.2 การเลิกใช้
เลิกใช้
ActiveRecord::Base.allow_unsafe_raw_sql
.เลิกใช้
database
kwarg ในconnected_to
.เลิกใช้
connection_handlers
เมื่อตั้งค่าlegacy_connection_handling
เป็น false.
7.3 การเปลี่ยนแปลงที่สำคัญ
MySQL: ตัวตรวจสอบความเอกลักษณ์ไม่ซ้ำกันสามารถใช้งานกับการเรียงลำดับฐานข้อมูลเริ่มต้นได้แล้ว ไม่ต้องบังคับการเปรียบเทียบที่ใช้ตัวพิมพ์ใหญ่เป็นค่าเริ่มต้น.
relation.create
ไม่ได้รั่วไหลขอบเขตของการค้นหาไปยังเมธอดการค้นหาระดับคลาสในบล็อกการเริ่มต้นและการเรียกใช้งาน.ก่อน:
User.where(name: "John").create do |john| User.find_by(name: "David") # => nil end
หลัง:
User.where(name: "John").create do |john| User.find_by(name: "David") # => #<User name: "David", ...> end
สเกลชุดของชื่อที่ไม่ได้รั่วไหลไปยังเมธอดการค้นหาระดับคลาส.
class User < ActiveRecord::Base scope :david, -> { User.where(name: "David") } end
ก่อน:
User.where(name: "John").david # SELECT * FROM users WHERE name = 'John' AND name = 'David'
หลัง:
User.where(name: "John").david # SELECT * FROM users WHERE name = 'David'
where.not
ตอนนี้สร้างเงื่อนไข NAND แทนที่ NOR.ก่อน: ```ruby User.where.not(name: "Jon", role: "admin")
SELECT * FROM users WHERE name != 'Jon' AND role != 'admin'
หลังจาก:
User.where.not(name: "Jon", role: "admin")
# SELECT * FROM users WHERE NOT (name = 'Jon' AND role = 'admin')
- เพื่อใช้การจัดการการเชื่อมต่อฐานข้อมูลแบบใหม่แอปพลิเคชันจำเป็นต้องเปลี่ยน
legacy_connection_handling
เป็น false และลบ accessors ที่ถูกยกเลิกออกจากconnection_handlers
วิธีการสาธารณะสำหรับconnects_to
และconnected_to
ไม่ต้องเปลี่ยนแปลง
8 Active Storage
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
8.1 การลบ
ลบการสนับสนุนที่ถูกยกเลิกในการส่ง
:combine_options
ไปยังActiveStorage::Transformers::ImageProcessing
.ลบ
ActiveStorage::Transformers::MiniMagickTransformer
ที่ถูกยกเลิก.ลบ
config.active_storage.queue
ที่ถูกยกเลิก.ลบ
ActiveStorage::Downloading
ที่ถูกยกเลิก.
8.2 การเลิกใช้
- เลิกใช้
Blob.create_after_upload
และใช้Blob.create_and_upload
แทน. (Pull Request)
8.3 การเปลี่ยนแปลงที่สำคัญ
- เพิ่ม
Blob.create_and_upload
เพื่อสร้าง blob ใหม่และอัปโหลดio
ที่กำหนดให้กับบริการ. (Pull Request) - เพิ่มคอลัมน์
service_name
ในActiveStorage::Blob
จำเป็นต้องรันการเปลี่ยนแปลงหลังจากการอัปเกรด รันbin/rails app:update
เพื่อสร้างการเปลี่ยนแปลงนั้น
9 Active Model
โปรดอ้างอิงที่ [Changelog][active-model] สำหรับการเปลี่ยนแปลงที่ละเอียด
9.1 การลบ
9.2 การเลิกใช้
9.3 การเปลี่ยนแปลงที่สำคัญ
- ข้อผิดพลาดของ Active Model เป็นวัตถุที่มีอินเทอร์เฟซที่ช่วยให้แอปพลิเคชันของคุณสามารถจัดการและตอบสนองกับข้อผิดพลาดที่โยนออกจากโมเดลได้อย่างง่ายดายมากขึ้น คุณลักษณะ รวมถึงอินเทอร์เฟซการค้นหา การทดสอบที่แม่นยำมากขึ้น และการเข้าถึงรายละเอียดข้อผิดพลาด
10 Active Support
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
10.1 การลบ
ลบการย้อนกลับไปใช้
I18n.default_locale
เมื่อconfig.i18n.fallbacks
ว่างเปล่า.ลบค่าคงที่
LoggerSilence
ที่ถูกยกเลิก.ลบ
ActiveSupport::LoggerThreadSafeLevel#after_initialize
ที่ถูกยกเลิก.ลบเมธอด
Module#parent_name
,Module#parent
และModule#parents
ที่ถูกยกเลิก.ลบไฟล์ที่ถูกยกเลิก
active_support/core_ext/module/reachable
.ลบไฟล์ที่ถูกยกเลิก
active_support/core_ext/numeric/inquiry
.ลบไฟล์ที่ถูกยกเลิก
active_support/core_ext/array/prepend_and_append
.ลบไฟล์ที่ถูกยกเลิก
active_support/core_ext/hash/compact
.ลบไฟล์ที่ถูกยกเลิก
active_support/core_ext/hash/transform_values
.ลบไฟล์ที่ถูกยกเลิก
active_support/core_ext/range/include_range
.ลบ
ActiveSupport::Multibyte::Chars#consumes?
และActiveSupport::Multibyte::Chars#normalize
ที่ถูกยกเลิก.ลบ
ActiveSupport::Multibyte::Unicode.pack_graphemes
,ActiveSupport::Multibyte::Unicode.unpack_graphemes
,ActiveSupport::Multibyte::Unicode.normalize
,ActiveSupport::Multibyte::Unicode.downcase
,ActiveSupport::Multibyte::Unicode.upcase
และActiveSupport::Multibyte::Unicode.swapcase
ที่ถูกยกเลิก.ลบ
ActiveSupport::Notifications::Instrumenter#end=
ที่ถูกยกเลิก.
10.2 การเลิกใช้
- เลิกใช้
ActiveSupport::Multibyte::Unicode.default_normalization_form
.
10.3 การเปลี่ยนแปลงที่สำคัญ
11 Active Job
โปรดอ้างอิงที่ [Changelog][active-job] สำหรับการเปลี่ยนแปลงที่ละเอียด
11.1 การลบ
11.2 การเลิกใช้
- เลิกใช้
config.active_job.return_false_on_aborted_enqueue
.
11.3 การเปลี่ยนแปลงที่สำคัญ
- ส่งค่า
false
เมื่อการเพิ่มงานในคิวถูกยกเลิก
12 Action Text
โปรดอ้างอิงที่ [Changelog][action-text] สำหรับการเปลี่ยนแปลงที่ละเอียด
12.1 การลบ
12.2 การเลิกใช้
12.3 การเปลี่ยนแปลงที่สำคัญ
เพิ่มเมธอดเพื่อยืนยันความมีอยู่ของเนื้อหา rich text โดยเพิ่ม
?
หลังจากชื่อแอตทริบิวต์ rich text. (Pull Request)เพิ่ม
fill_in_rich_text_area
เป็นตัวช่วยทดสอบระบบที่ช่วยให้ค้นหาตัวแก้ไข trix และเติมเนื้อหา HTML ที่กำหนดให้. (Pull Request)เพิ่ม
ActionText::FixtureSet.attachment
เพื่อสร้างองค์ประกอบ<action-text-attachment>
ใน fixture ของฐานข้อมูล. (Pull Request)
13 Action Mailbox
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
13.1 การลบ
13.2 การเลิกใช้
- เลิกใช้
Rails.application.credentials.action_mailbox.api_key
และMAILGUN_INGRESS_API_KEY
และใช้Rails.application.credentials.action_mailbox.signing_key
และMAILGUN_INGRESS_SIGNING_KEY
แทน.
13.3 การเปลี่ยนแปลงที่สำคัญ
14 Ruby on Rails Guides
โปรดอ้างอิงที่ [Changelog][guides] สำหรับการเปลี่ยนแปลงที่ละเอียด
14.1 การเปลี่ยนแปลงที่สำคัญ
15 Credits
ดู รายชื่อผู้มีส่วนร่วมทั้งหมดใน Rails สำหรับผู้ที่ใช้เวลาหลายชั่วโมงในการทำให้ Rails เป็นเฟรมเวิร์กที่เสถียรและทนทาน ยินดีกับทุกคน
ข้อเสนอแนะ
คุณสามารถช่วยปรับปรุงคุณภาพของคู่มือนี้ได้
กรุณาช่วยเพิ่มเติมหากพบข้อผิดพลาดหรือข้อผิดพลาดทางความจริง เพื่อเริ่มต้นคุณสามารถอ่านส่วน การสนับสนุนเอกสาร ของเราได้
คุณอาจพบเนื้อหาที่ไม่สมบูรณ์หรือเนื้อหาที่ไม่ได้อัปเดต กรุณาเพิ่มเอกสารที่ขาดหายไปสำหรับเนื้อหาหลัก โปรดตรวจสอบ Edge Guides ก่อนเพื่อตรวจสอบ ว่าปัญหาได้รับการแก้ไขหรือไม่ในสาขาหลัก ตรวจสอบ คู่มือแนวทาง Ruby on Rails เพื่อดูรูปแบบและกฎเกณฑ์
หากคุณพบข้อผิดพลาดแต่ไม่สามารถแก้ไขได้เอง กรุณา เปิดปัญหา.
และสุดท้าย การสนทนาใด ๆ เกี่ยวกับ Ruby on Rails เอกสารยินดีต้อนรับที่สุดใน เว็บบอร์ดอย่างเป็นทางการของ Ruby on Rails.