1 การอัปเกรดไปยัง Rails 7.0
หากคุณกำลังอัปเกรดแอปพลิเคชันที่มีอยู่อยู่แล้ว ควรมีการทดสอบที่ดีก่อนที่จะเริ่มต้น คุณควรอัปเกรดไปยัง Rails 6.1 ก่อนหากคุณยังไม่ได้ทำ และตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณยังทำงานได้ตามที่คาดหวังก่อนที่จะพยายามอัปเดตไปยัง Rails 7.0 มีรายการสิ่งที่ควรระวังเมื่ออัปเกรดใน การอัปเกรด Ruby on Rails คู่มือ
2 คุณลักษณะหลัก
3 Railties
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
3.1 การลบ
- ลบ
config
ที่ถูกเลิกใช้ในdbconsole
.
3.2 การเลิกใช้
3.3 การเปลี่ยนแปลงที่สำคัญ
Sprockets เป็นลักษณะที่เลือกได้แล้ว
เจม
rails
ไม่ได้ขึ้นอยู่กับsprockets-rails
อีกต่อไป หากแอปพลิเคชันของคุณยังต้องการใช้ Sprockets ตรวจสอบให้แน่ใจว่าเพิ่มsprockets-rails
เข้าไปใน Gemfile ของคุณgem "sprockets-rails"
4 Action Cable
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
4.1 การลบ
4.2 การเลิกใช้
4.3 การเปลี่ยนแปลงที่สำคัญ
5 Action Pack
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
5.1 การลบ
ลบ
ActionDispatch::Response.return_only_media_type_on_content_type
ที่ถูกเลิกใช้.ลบ
Rails.config.action_dispatch.hosts_response_app
ที่ถูกเลิกใช้.ลบ
ActionDispatch::SystemTestCase#host!
ที่ถูกเลิกใช้.ลบการสนับสนุนที่ถูกเลิกใช้ในการส่ง
fixture_file_upload
ที่เกี่ยวข้องกับfixture_path
.
5.2 การเลิกใช้
5.3 การเปลี่ยนแปลงที่สำคัญ
6 Action View
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
6.1 การลบ
- ลบ
Rails.config.action_view.raise_on_missing_translations
ที่ถูกเลิกใช้.
6.2 การเลิกใช้
6.3 การเปลี่ยนแปลงที่สำคัญ
button_to
สร้าง HTTP verb [method] จากออบเจกต์ Active Record หากใช้ออบเจกต์เพื่อสร้าง URLbutton_to("Do a POST", [:do_post_action, Workshop.find(1)]) # ก่อนหน้านี้ #=> <input type="hidden" name="_method" value="post" autocomplete="off" /> # ต่อมา #=> <input type="hidden" name="_method" value="patch" autocomplete="off" />
7 Action Mailer
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
7.1 การลบ
- ลบ
ActionMailer::DeliveryJob
และActionMailer::Parameterized::DeliveryJob
เพื่อใช้แทนActionMailer::MailDeliveryJob
.
7.2 การเลิกใช้
7.3 การเปลี่ยนแปลงที่สำคัญ
8 Active Record
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
8.1 การลบ
ลบ
database
kwarg จากconnected_to
.ลบ
ActiveRecord::Base.allow_unsafe_raw_sql
ที่ถูกเลิกใช้.ลบตัวเลือก
:spec_name
ที่ถูกเลิกใช้ในเมธอดconfigs_for
.ลบการสนับสนุนที่ถูกเลิกใช้ในการโหลด YAML
ActiveRecord::Base
instance ในรูปแบบ Rails 4.2 และ 4.1.ลบการเตือนที่ถูกเลิกใช้เมื่อใช้คอลัมน์
:interval
ในฐานข้อมูล PostgreSQL.ตอนนี้คอลัมน์ interval จะส่งกลับเป็นออบเจกต์
ActiveSupport::Duration
แทนสตริงหากต้องการเก็บพฤติกรรมเดิม คุณสามารถเพิ่มบรรทัดนี้ในโมเดลของคุณ:
attribute :column, :string
ลบการสนับสนุนที่ถูกเลิกใช้ในการแก้ไขการเชื่อมต่อโดยใช้
"primary"
เป็นชื่อการกำหนดการเชื่อมต่อ.ลบการสนับสนุนที่ถูกเลิกใช้ในการคำนวณค่าให้กับออบเจกต์
ActiveRecord::Base
.ลบการสนับสนุนที่ถูกเลิกใช้ในการแปลงชนิดของออบเจกต์
ActiveRecord::Base
เป็นค่าในฐานข้อมูล.ลบการสนับสนุนที่ถูกเลิกใช้ในการส่งคอลัมน์ไปยัง
type_cast
.ลบเมธอด
DatabaseConfig#config
ที่ถูกเลิกใช้.ลบ rake tasks ที่ถูกเลิกใช้:
db:schema:load_if_ruby
db:structure:dump
db:structure:load
db:structure:load_if_sql
db:structure:dump:#{name}
db:structure:load:#{name}
db:test:load_structure
db:test:load_structure:#{name}
ลบการสนับสนุนที่ถูกเลิกใช้ในการค้นหาโดยใช้
Model.reorder(nil).first
โดยใช้ลำดับที่ไม่แน่นอน.ลบอาร์กิวเมนต์
environment
และname
จากTasks::DatabaseTasks.schema_up_to_date?
ที่ถูกเลิกใช้.ลบ
Tasks::DatabaseTasks.dump_filename
ที่ถูกเลิกใช้.ลบ
Tasks::DatabaseTasks.schema_file
ที่ถูกเลิกใช้.ลบ
Tasks::DatabaseTasks.spec
ที่ถูกเลิกใช้.ลบ
Tasks::DatabaseTasks.current_config
ที่ถูกเลิกใช้.ลบ
ActiveRecord::Connection#allowed_index_name_length
ที่ถูกเลิกใช้.ลบ
ActiveRecord::Connection#in_clause_length
ที่ถูกยกเลิกไปแล้วลบ
ActiveRecord::DatabaseConfigurations::DatabaseConfig#spec_name
ที่ถูกยกเลิกไปแล้วลบ
ActiveRecord::Base.connection_config
ที่ถูกยกเลิกไปแล้วลบ
ActiveRecord::Base.arel_attribute
ที่ถูกยกเลิกไปแล้วลบ
ActiveRecord::Base.configurations.default_hash
ที่ถูกยกเลิกไปแล้วลบ
ActiveRecord::Base.configurations.to_h
ที่ถูกยกเลิกไปแล้วลบ
ActiveRecord::Result#map!
และActiveRecord::Result#collect!
ที่ถูกยกเลิกไปแล้วลบ
ActiveRecord::Base#remove_connection
ที่ถูกยกเลิกไปแล้ว
8.2 การเลิกใช้
- เลิกใช้
Tasks::DatabaseTasks.schema_file_type
8.3 การเปลี่ยนแปลงที่สำคัญ
ยกเลิกการทำธุรกรรมเมื่อบล็อกส่งคืนก่อนที่คาดไว้
ก่อนการเปลี่ยนแปลงนี้เมื่อบล็อกธุรกรรมส่งคืนก่อนเวลาที่คาดไว้ ธุรกรรมจะถูกยืนยัน
ปัญหาคือเมื่อเกิดเวลาหมดอายุภายในบล็อกธุรกรรม ธุรกรรมที่ไม่สมบูรณ์จะถูกยืนยัน ดังนั้นเพื่อหลีกเลี่ยงข้อผิดพลาดนี้ บล็อกธุรกรรมจะถูกย้อนกลับ
การผสานเงื่อนไขในคอลัมน์เดียวกันไม่ได้รักษาทั้งสองเงื่อนไขและจะถูกแทนที่ด้วยเงื่อนไขที่หลัง
# Rails 6.1 (IN clause is replaced by merger side equality condition) Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob] # Rails 6.1 (both conflict conditions exists, deprecated) Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => [] # Rails 6.1 with rewhere to migrate to Rails 7.0's behavior Author.where(id: david.id..mary.id).merge(Author.where(id: bob), rewhere: true) # => [bob] # Rails 7.0 (same behavior with IN clause, mergee side condition is consistently replaced) Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob] Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => [bob]
9 Active Storage
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
9.1 การลบ
9.2 การเลิกใช้
9.3 การเปลี่ยนแปลงที่สำคัญ
10 Active Model
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
10.1 การลบ
ลบการเลือก
ActiveModel::Errors
instances เป็น Hash ที่ถูกยกเลิกไปแล้วลบ
ActiveModel::Errors#to_h
ที่ถูกยกเลิกไปแล้วลบ
ActiveModel::Errors#slice!
ที่ถูกยกเลิกไปแล้วลบ
ActiveModel::Errors#values
ที่ถูกยกเลิกไปแล้วลบ
ActiveModel::Errors#keys
ที่ถูกยกเลิกไปแล้วลบ
ActiveModel::Errors#to_xml
ที่ถูกยกเลิกไปแล้วลบการรวมข้อผิดพลาดไปยัง
ActiveModel::Errors#messages
ที่ถูกยกเลิกไปแล้วลบการรองรับการ
clear
ข้อผิดพลาดจากActiveModel::Errors#messages
ที่ถูกยกเลิกไปแล้วลบการรองรับการ
delete
ข้อผิดพลาดจากActiveModel::Errors#messages
ที่ถูกยกเลิกไปแล้วลบการรองรับการใช้
[]=
ในActiveModel::Errors#messages
ที่ถูกยกเลิกไปแล้วลบการรองรับการ Marshal และ YAML load รูปแบบข้อผิดพลาดของ Rails 5.x
ลบการรองรับการ Marshal load รูปแบบ
ActiveModel::AttributeSet
ของ Rails 5.x
10.2 การเลิกใช้
10.3 การเปลี่ยนแปลงที่สำคัญ
11 Active Support
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
11.1 การลบ
ลบ
config.active_support.use_sha1_digests
ที่ถูกยกเลิกไปแล้วลบ
URI.parser
ที่ถูกยกเลิกไปแล้วลบการรองรับการใช้
Range#include?
เพื่อตรวจสอบการรวมของค่าในช่วงวันที่และเวลาที่ถูกยกเลิกไปแล้วลบ
ActiveSupport::Multibyte::Unicode.default_normalization_form
ที่ถูกยกเลิกไปแล้ว
11.2 การเลิกใช้
เลิกใช้การส่งรูปแบบไปยัง
#to_s
ในการใช้งานArray
,Range
,Date
,DateTime
,Time
,BigDecimal
,Float
และInteger
และใช้#to_fs
แทนการเลิกใช้นี้เพื่อให้แอปพลิเคชัน Rails ใช้ประโยชน์จากการปรับปรุงใน Ruby 3.1 การปรับปรุง ที่ทำให้ การตัดต่อของบางประเภทของวัตถุเร็วขึ้น
แอปพลิเคชันใหม่จะไม่มีการแทนที่เมธอด
#to_s
ในคลาสเหล่านั้น แอปพลิเคชันที่มีอยู่สามารถใช้config.active_support.disable_to_s_conversion
ได้
11.3 การเปลี่ยนแปลงที่สำคัญ
12 Active Job
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
12.1 การลบ
ลบพฤติกรรมที่ถูกยกเลิกไปแล้วที่ไม่ได้หยุด
after_enqueue
/after_perform
callbacks เมื่อ การเรียก callback ก่อนหน้านั้นถูกหยุดด้วยthrow :abort
ลบ
:return_false_on_aborted_enqueue
option ที่ถูกยกเลิกไปแล้ว
12.2 การเลิกใช้
- เลิกใช้
Rails.config.active_job.skip_after_callbacks_if_terminated
12.3 การเปลี่ยนแปลงที่สำคัญ
13 Action Text
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
13.1 การลบ
13.2 การเลิกใช้
13.3 การเปลี่ยนแปลงที่สำคัญ
14 Action Mailbox
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
การลบ
- ลบ
Rails.application.credentials.action_mailbox.mailgun_api_key
ที่ถูกยกเลิกไปแล้ว - ลบตัวแปรสภาพแวดล้อมที่ถูกยกเลิกไปแล้ว
MAILGUN_INGRESS_API_KEY
การเลิกใช้
การเปลี่ยนแปลงที่สำคัญ
15 Ruby on Rails Guides
โปรดอ้างอิงที่ Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด
การเปลี่ยนแปลงที่สำคัญ
เครดิต
ดูรายชื่อเต็มของผู้มีส่วนร่วมใน Rails ได้ที่ รายชื่อผู้มีส่วนร่วมใน Rails สำหรับผู้ที่ใช้เวลาหลายชั่วโมงในการสร้าง Rails เป็นเฟรมเวิร์คที่เสถียรและทนทาน ยินดีด้วยทุกคน
ข้อเสนอแนะ
คุณสามารถช่วยปรับปรุงคุณภาพของคู่มือนี้ได้
กรุณาช่วยเพิ่มเติมหากพบข้อผิดพลาดหรือข้อผิดพลาดทางความจริง เพื่อเริ่มต้นคุณสามารถอ่านส่วน การสนับสนุนเอกสาร ของเราได้
คุณอาจพบเนื้อหาที่ไม่สมบูรณ์หรือเนื้อหาที่ไม่ได้อัปเดต กรุณาเพิ่มเอกสารที่ขาดหายไปสำหรับเนื้อหาหลัก โปรดตรวจสอบ Edge Guides ก่อนเพื่อตรวจสอบ ว่าปัญหาได้รับการแก้ไขหรือไม่ในสาขาหลัก ตรวจสอบ คู่มือแนวทาง Ruby on Rails เพื่อดูรูปแบบและกฎเกณฑ์
หากคุณพบข้อผิดพลาดแต่ไม่สามารถแก้ไขได้เอง กรุณา เปิดปัญหา.
และสุดท้าย การสนทนาใด ๆ เกี่ยวกับ Ruby on Rails เอกสารยินดีต้อนรับที่สุดใน เว็บบอร์ดอย่างเป็นทางการของ Ruby on Rails.