edge
เพิ่มเติมที่ rubyonrails.org: เพิ่มเติมเกี่ยวกับ Ruby on Rails

เนื้อหาสำคัญใน Rails 5.1:

เอกสารเวอร์ชันนี้ครอบคลุมเฉพาะการเปลี่ยนแปลงที่สำคัญเท่านั้น หากต้องการเรียนรู้เกี่ยวกับการแก้ไขข้อบกพร่องและการเปลี่ยนแปลงต่างๆ โปรดอ้างอิงที่เอกสารเปลี่ยนแปลงหรือตรวจสอบ รายการของการเปลี่ยนแปลง ในเก็บรักษาของ Rails ที่ GitHub

Chapters

  1. การอัปเกรดไปยัง Rails 5.1
  2. คุณสมบัติหลัก
  3. ความไม่เข้ากัน
  4. Railties
  5. Action Cable
  6. Action Pack
  7. Action View
  8. Action Mailer
  9. Active Record
  10. Active Model
  11. Active Job
  12. Active Support
  13. เครดิต

1 การอัปเกรดไปยัง Rails 5.1

หากคุณกำลังอัปเกรดแอปพลิเคชันที่มีอยู่อยู่ ควรมีการทดสอบที่ดีก่อนที่จะเริ่มต้น คุณควรอัปเกรดเป็น Rails 5.0 ก่อนหากคุณยังไม่ได้ทำ และตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณยังทำงานได้ตามที่คาดหวังก่อนที่จะพยายามอัปเดตเป็น Rails 5.1 มีรายการสิ่งที่ควรระวังเมื่ออัปเกรดใน การอัปเกรด Ruby on Rails คู่มือ

2 คุณสมบัติหลัก

2.1 รองรับ Yarn

Pull Request

Rails 5.1 ช่วยให้สามารถจัดการกับการขึ้นอยู่กันของ JavaScript จาก npm ผ่าน Yarn ได้ง่ายขึ้น สิ่งนี้จะทำให้ใช้ไลบรารีเช่น React, VueJS หรือไลบรารีอื่นๆจากโลกของ npm ได้ง่ายขึ้น Yarn รองรับการทำงานร่วมกับ asset pipeline เพื่อให้ทุกขึ้นอยู่กันทำงานได้อย่างราบรื่นกับแอปพลิเคชัน Rails 5.1

2.2 รองรับ Webpack แบบไม่บังคับ

Pull Request

แอปพลิเคชัน Rails สามารถรวมกับ Webpack ที่เป็นตัวรวมส่วน JavaScript ได้อย่างง่ายดายมากขึ้นโดยใช้ gem Webpacker ใหม่ ใช้ตัวเลือก --webpack เมื่อสร้างแอปพลิเคชันใหม่เพื่อเปิดใช้งานการรวมกับ Webpack

สิ่งนี้เป็นเวอร์ชันที่เข้ากันได้อย่างสมบูรณ์กับ asset pipeline ซึ่งคุณสามารถใช้ต่อไปสำหรับรูปภาพ เสียง และทรัพยากรอื่นๆ คุณยังสามารถมีรหัส JavaScript บางส่วนที่จัดการโดย asset pipeline และรหัสอื่นที่ประมวลผลผ่าน Webpack ทั้งหมดนี้จัดการโดย Yarn ซึ่งเปิดใช้งานโดยค่าเริ่มต้น

2.3 jQuery ไม่เป็นการติดตั้งเริ่มต้นอีกต่อไป

Pull Request

jQuery ถูกต้องต้องใช้ในเวอร์ชันก่อนหน้าของ Rails เพื่อให้มีคุณสมบัติเช่น data-remote, data-confirm และส่วนอื่น ๆ ของ Unobtrusive JavaScript ของ Rails แต่ไม่จำเป็นต้องใช้แล้ว เนื่องจาก UJS ได้รับการเขียนใหม่เพื่อใช้งานด้วย JavaScript ธรรมดา โค้ดนี้ตอนนี้ถูกจัดส่งพร้อมกับ Action View เป็น rails-ujs

คุณยังสามารถใช้ jQuery ได้หากต้องการ แต่ไม่จำเป็นต้องใช้โดยค่าเริ่มต้น

2.4 การทดสอบระบบ

Pull Request

Rails 5.1 มีการสนับสนุนการเขียนการทดสอบด้วย Capybara แบบฝังอยู่ในระบบ ในรูปแบบของการทดสอบระบบ (System tests) คุณไม่ต้องกังวลเกี่ยวกับการกำหนดค่า Capybara และกลยุทธ์การล้างฐานข้อมูลสำหรับการทดสอบเช่นนี้แล้ว Rails 5.1 มีการให้ Wrapper สำหรับการเรียกใช้งานทดสอบใน Chrome พร้อมกับคุณสมบัติเพิ่มเติม เช่น การบันทึกภาพหน้าจอเมื่อเกิดข้อผิดพลาด

2.5 การเข้ารหัสความลับ

Pull Request

Rails ตอนนี้อนุญาตให้จัดการความลับของแอปพลิเคชันอย่างปลอดภัย โดยได้รับแรงบันดาลใจจาก gem sekrets

รัน bin/rails secrets:setup เพื่อตั้งค่าไฟล์ความลับที่เข้ารหัสใหม่ นี่ยังจะสร้างคีย์หลักซึ่งต้องเก็บไว้นอกเก็บข้อมูลเพื่อรักษาความปลอดภัย ความลับเองสามารถเก็บไว้ในระบบควบคุมการทบทวนรหัสภายในในรูปแบบที่เข้ารหัส

ความลับจะถูกถอดรหัสในโปรดักชันโดยใช้คีย์ที่เก็บไว้ entironment variable RAILS_MASTER_KEY หรือในไฟล์คีย์

2.6 การส่งอีเมลพารามิเตอร์

Pull Request

อนุญาตให้ระบุพารามิเตอร์ที่ใช้ร่วมกันสำหรับเมธอดทั้งหมดในคลาสเมลเลอร์เพื่อแชร์ตัวแปรอินสแตนซ์, ส่วนหัว และการตั้งค่าที่ใช้ร่วมกัน

class InvitationsMailer < ApplicationMailer
  before_action { @inviter, @invitee = params[:inviter], params[:invitee] }
  before_action { @account = params[:inviter].account }

  def account_invitation
    mail subject: "#{@inviter.name} invited you to their Basecamp (#{@account.name})"
  end
end
InvitationsMailer.with(inviter: person_a, invitee: person_b)
                 .account_invitation.deliver_later

2.7 เส้นทางโดยตรงและเส้นทางที่แก้ไข

Pull Request

Rails 5.1 เพิ่มเมธอดสองเมธอดใหม่คือ resolve และ direct ใน DSL ของเส้นทาง เมธอด resolve ช่วยให้สามารถกำหนดการแมปโพลิมอร์ฟิกของโมเดลได้เอง ```ruby resource :basket

resolve("Basket") { [:basket] } ```

<%= form_for @basket do |form| %>
  <!-- แบบฟอร์มของตะกร้า -->
<% end %>

นี้จะสร้าง URL แบบเอกพจน์ /basket แทนที่จะเป็น /baskets/:id ตามปกติ

เมธอด direct ช่วยในการสร้าง URL helpers ที่กำหนดเอง

direct(:homepage) { "https://rubyonrails.org" }

homepage_url # => "https://rubyonrails.org"

ค่าที่ส่งกลับจาก block ต้องเป็นอาร์กิวเมนต์ที่ถูกต้องสำหรับเมธอด url_for ดังนั้นคุณสามารถส่งค่า URL ที่ถูกต้องเป็นสตริง, แฮช, อาร์เรย์, อินสแตนซ์ของ Active Model หรือคลาส Active Model

direct :commentable do |model|
  [ model, anchor: model.dom_id ]
end

direct :main do
  { controller: 'pages', action: 'index', subdomain: 'www' }
end

2.8 การรวม form_for และ form_tag เข้าด้วยกันเป็น form_with

Pull Request

ก่อน Rails 5.1 มีอินเตอร์เฟสสองอันในการจัดการฟอร์ม HTML: form_for สำหรับอินสแตนซ์ของโมเดลและ form_tag สำหรับ URL ที่กำหนดเอง

Rails 5.1 รวมทั้งสองอินเตอร์เฟสเข้าด้วยกันด้วย form_with และสามารถสร้างแท็กฟอร์มขึ้นมาจาก URL, สโคป, หรือโมเดลได้

ใช้เฉพาะ URL:

<%= form_with url: posts_path do |form| %>
  <%= form.text_field :title %>
<% end %>

<%# จะสร้าง %>

<form action="/posts" method="post" data-remote="true">
  <input type="text" name="title">
</form>

การเพิ่มสโคปจะเติมคำนำหน้าชื่อฟิลด์ของอินพุต:

<%= form_with scope: :post, url: posts_path do |form| %>
  <%= form.text_field :title %>
<% end %>

<%# จะสร้าง %>

<form action="/posts" method="post" data-remote="true">
  <input type="text" name="post[title]">
</form>

การใช้โมเดลจะสร้าง URL และสโคปโดยอัตโนมัติ:

<%= form_with model: Post.new do |form| %>
  <%= form.text_field :title %>
<% end %>

<%# จะสร้าง %>

<form action="/posts" method="post" data-remote="true">
  <input type="text" name="post[title]">
</form>

การใช้โมเดลที่มีอยู่จะสร้างฟอร์มแก้ไขและกรอกค่าในฟิลด์:

<%= form_with model: Post.first do |form| %>
  <%= form.text_field :title %>
<% end %>

<%# จะสร้าง %>

<form action="/posts/1" method="post" data-remote="true">
  <input type="hidden" name="_method" value="patch">
  <input type="text" name="post[title]" value="<the title of the post>">
</form>

3 ความไม่เข้ากัน

การเปลี่ยนแปลงต่อไปนี้อาจต้องการการดำเนินการทันทีหลังจากอัปเกรด

3.1 การทดสอบแบบทรานแซกชันกับการเชื่อมต่อหลายตัว

การทดสอบแบบทรานแซกชันตอนนี้จะครอบคลุมการเชื่อมต่อ Active Record ทั้งหมดในการทำธุรกรรมฐานข้อมูล

เมื่อทดสอบสร้างเธรดเพิ่มเติม และเธรดเหล่านั้นได้รับการเชื่อมต่อฐานข้อมูล เธรดเหล่านั้นจะถูกจัดการเฉพาะเจาะจง:

เธรดจะแบ่งปันการเชื่อมต่อเดียวกัน ซึ่งอยู่ภายในการทำธุรกรรมที่จัดการ นี้จะทำให้เธรดทั้งหมดเห็นฐานข้อมูลในสถานะเดียวกัน โดยไม่สนใจการทำธุรกรรมที่อยู่ภายนอกสุด ก่อนหน้านี้การเชื่อมต่อเพิ่มเติมเช่นนี้ไม่สามารถเห็นแถวข้อมูลตัวอย่างได้ เป็นต้น

เมื่อเธรดเข้าสู่การทำธุรกรรมที่ซ้อนกัน เธรดจะได้รับการใช้การเชื่อมต่อที่เป็นเอกลักษณ์ชั่วคราว เพื่อรักษาความเป็นอิสระ

หากการทดสอบของคุณใช้การเชื่อมต่อแยกต่างหากภายนอกการทำธุรกรรมในเธรดที่สร้างขึ้น คุณจะต้องเปลี่ยนไปใช้การจัดการการเชื่อมต่อที่ชัดเจนมากขึ้น

หากการทดสอบของคุณสร้างเธรดและเธรดเหล่านั้นมีการปฏิสัมพันธ์ในขณะที่ใช้การทำธุรกรรมฐานข้อมูลที่ชัดเจน การเปลี่ยนแปลงนี้อาจทำให้เกิดการติดขัด

วิธีที่ง่ายที่สุดในการไม่ใช้พฤติกรรมใหม่นี้คือปิดใช้งานการทดสอบแบบทรานแซกชันในกรณีที่มีผลต่อกรณีทดสอบใด ๆ

4 Railties

โปรดอ้างอิงที่ [Changelog][railties] สำหรับการเปลี่ยนแปลงที่ละเอียด

4.1 การลบ

  • ลบ config.static_cache_control ที่ถูกยกเลิก (commit)

  • ลบ config.serve_static_files ที่ถูกยกเลิก (commit)

  • ลบไฟล์ที่ถูกยกเลิก rails/rack/debugger (commit)

  • ลบงานที่ถูกยกเลิก: rails:update, rails:template, rails:template:copy, rails:update:configs และ rails:update:bin (commit)

  • ลบตัวแปรสภาพแวดล้อม CONTROLLER สำหรับงาน routes (commit)

  • ลบตัวเลือก -j (--javascript) จากคำสั่ง rails new (Pull Request)

4.2 การเปลี่ยนแปลงที่สำคัญ

  • เพิ่มส่วนที่แบ่งปันใน config/secrets.yml ที่จะโหลดสำหรับทุก environment (commit)

  • ไฟล์ config config/secrets.yml ถูกโหลดเข้ามาพร้อมกับคีย์ทั้งหมดเป็นสัญลักษณ์ (Pull Request)

  • ลบ jquery-rails ออกจากสแต็กเริ่มต้น และเพิ่ม rails-ujs ซึ่งจัดส่งพร้อมกับ Action View เป็นตัวอย่าง UJS ที่เริ่มต้น (Pull Request)

  • เพิ่มการสนับสนุน Yarn ในแอปใหม่ด้วย yarn binstub และ package.json (Pull Request)

  • เพิ่มการสนับสนุน Webpack ในแอปใหม่ผ่านตัวเลือก --webpack ซึ่งจะส่งงานให้กับ gem rails/webpacker (Pull Request)

  • เริ่มต้น Git repo เมื่อสร้างแอปใหม่ หากไม่มีตัวเลือก --skip-git (Pull Request)

  • เพิ่ม encrypted secrets ใน config/secrets.yml.enc (Pull Request)

  • แสดงชื่อคลาส railtie ใน rails initializers (Pull Request)

5 Action Cable

โปรดอ้างอิงที่ [Changelog][action-cable] สำหรับการเปลี่ยนแปลงที่ละเอียด

5.1 การเปลี่ยนแปลงที่สำคัญ

  • เพิ่มการสนับสนุน channel_prefix ใน Redis และ evented Redis adapters ใน cable.yml เพื่อหลีกเลี่ยงการชื่อซ้ำเมื่อใช้เซิร์ฟเวอร์ Redis เดียวกัน กับแอปพลิเคชันหลายๆ แอปพลิเคชัน (Pull Request)

  • เพิ่ม ActiveSupport::Notifications hook เพื่อส่งข้อมูลออกไปยังหลายๆ ที่พบ (Pull Request)

6 Action Pack

โปรดอ้างอิงที่ [Changelog][action-pack] สำหรับการเปลี่ยนแปลงที่ละเอียด

6.1 การลบ

  • ลบการสนับสนุนสำหรับอาร์กิวเมนต์ที่ไม่ใช่คีย์เวิร์ดใน #process, #get, #post, #patch, #put, #delete, และ #head สำหรับคลาส ActionDispatch::IntegrationTest และ ActionController::TestCase (Commit, Commit)

  • ลบ ActionDispatch::Callbacks.to_prepare และ ActionDispatch::Callbacks.to_cleanup ที่ถูกเลิกใช้ (Commit)

  • ลบเมธอดที่ถูกเลิกใช้ที่เกี่ยวข้องกับตัวกรองของคอนโทรลเลอร์ (Commit)

  • ลบการสนับสนุนที่ถูกเลิกใช้สำหรับ :text และ :nothing ใน render (Commit, Commit)

  • ลบการสนับสนุนที่ถูกเลิกใช้สำหรับการเรียกใช้เมธอดของ HashWithIndifferentAccess บน ActionController::Parameters (Commit)

6.2 การเลิกใช้

  • เลิกใช้ config.action_controller.raise_on_unfiltered_parameters ไม่มีผลใน Rails 5.1 (Commit)

6.3 การเปลี่ยนแปลงที่สำคัญ

  • เพิ่มเมธอด direct และ resolve ใน DSL ของการเรียกเส้นทาง (Pull Request)

  • เพิ่มคลาสใหม่ ActionDispatch::SystemTestCase เพื่อเขียนเทสระบบในแอปพลิเคชันของคุณ (Pull Request)

7 Action View

โปรดอ้างอิงที่ [Changelog][action-view] สำหรับการเปลี่ยนแปลงที่ละเอียด

7.1 การลบ

  • ลบ #original_exception ที่ถูกเลิกใช้ใน ActionView::Template::Error (commit)

  • ลบตัวเลือก encode_special_chars ที่ผิดชื่อจาก strip_tags (Pull Request)

7.2 การเลิกใช้

  • เลิกใช้ Erubis ERB handler และใช้ Erubi แทน (Pull Request)

7.3 การเปลี่ยนแปลงที่สำคัญ

  • Raw template handler (template handler เริ่มต้นใน Rails 5) ตอนนี้แสดงผลเป็นสตริงที่ปลอดภัยสำหรับ HTML (commit)

  • เปลี่ยน datetime_field และ datetime_field_tag เพื่อสร้างฟิลด์ datetime-local (Pull Request)

  • ไวยากรณ์ใหม่แบบ Builder-style สำหรับแท็ก HTML (tag.div, tag.br, เป็นต้น) (Pull Request)

  • เพิ่ม form_with เพื่อรวมการใช้งาน form_tag และ form_for เข้าด้วยกัน (Pull Request)

  • เพิ่มตัวเลือก check_parameters ให้กับ current_page? (Pull Request)

8 Action Mailer

โปรดอ้างอิงที่ [Changelog][action-mailer] สำหรับการเปลี่ยนแปลงที่ละเอียด

8.1 การเปลี่ยนแปลงที่สำคัญ

  • อนุญาตให้ตั้งค่าประเภทเนื้อหาที่กำหนดเองเมื่อมีการแนบแฟ้มและตั้งค่าเนื้อหาในบรรทัดเดียวกัน (Pull Request)

  • อนุญาตให้ส่ง lambda เป็นค่าให้กับเมธอด default (Commit)

  • เพิ่มการสนับสนุนการเรียกใช้ mailer ที่มีพารามิเตอร์เป็นพารามิเตอร์ที่กำหนดได้เพื่อแชร์ตัวกรองก่อนและค่าเริ่มต้น ระหว่างการกระทำของ mailer ที่แตกต่างกัน (Commit)

  • ส่งอาร์กิวเมนต์ที่รับเข้ามาให้กับการกระทำของ mailer ไปยังเหตุการณ์ process.action_mailer ในรูปแบบของคีย์ args (Pull Request)

9 Active Record

โปรดอ้างอิงที่ [Changelog][active-record] สำหรับการเปลี่ยนแปลงที่ละเอียด

9.1 การลบออก

  • เอาการสนับสนุนการส่งอาร์กิวเมนต์และบล็อกพร้อมกันออกจาก ActiveRecord::QueryMethods#select (Commit)

  • เอา i18n scopes activerecord.errors.messages.restrict_dependent_destroy.one และ activerecord.errors.messages.restrict_dependent_destroy.many ที่ถูกเลิกใช้ออก (Commit)

  • เอาการสนับสนุนการรีโหลดแบบบังคับออกจาก singular และ collection association readers (Commit)

  • เอาการสนับสนุนการส่งคอลัมน์เป็นค่าให้กับ #quote ที่ถูกเลิกใช้ออก (Commit)

  • เอาอาร์กิวเมนต์ name ที่ถูกเลิกใช้ออกจาก #tables (Commit)

  • เอาพฤติกรรมที่ถูกเลิกใช้ของ #tables และ #table_exists? ที่จะส่งกลับเฉพาะตารางและไม่ใช่วิวออก (Commit)

  • เอาอาร์กิวเมนต์ original_exception ใน ActiveRecord::StatementInvalid#initialize และ ActiveRecord::StatementInvalid#original_exception ที่ถูกเลิกใช้ออก (Commit)

  • เอาการสนับสนุนในการส่งคลาสเป็นค่าในคิวรีที่ถูกเลิกใช้ออก (Commit)

  • เอาการสนับสนุนในการคิวรีโดยใช้เครื่องหมายจุลภาคใน LIMIT ที่ถูกเลิกใช้ออก (Commit)

  • เอาพารามิเตอร์ conditions ออกจาก #destroy_all ที่ถูกเลิกใช้ออก (Commit)

  • เอาพารามิเตอร์ conditions ออกจาก #delete_all ที่ถูกเลิกใช้ออก (Commit)

  • เอาเมธอด #load_schema_for ที่ถูกเลิกใช้ออกและใช้ #load_schema แทน (Commit)

  • เอาการกำหนดค่า #raise_in_transactional_callbacks ที่ถูกเลิกใช้ออก (Commit)

  • เอาการกำหนดค่า #use_transactional_fixtures ที่ถูกเลิกใช้ออก (Commit)

9.2 การเลิกใช้

  • เลิกใช้ตัวแปร error_on_ignored_order_or_limit และใช้ error_on_ignored_order แทน (Commit)

  • เลิกใช้ sanitize_conditions และใช้ sanitize_sql แทน (Pull Request)

  • เลิกใช้ supports_migrations? ใน connection adapters (Pull Request)

  • เลิกใช้ Migrator.schema_migrations_table_name ใช้ SchemaMigration.table_name แทน (Pull Request)

  • เลิกใช้ #quoted_id ในการอ้างอิงและแปลงประเภท (Pull Request)

  • ยกเลิกการส่งอาร์กิวเมนต์ default ให้กับ #index_name_exists? (Pull Request)

9.3 การเปลี่ยนแปลงที่สำคัญ

  • เปลี่ยน Primary Keys เริ่มต้นเป็น BIGINT (Pull Request)

  • รองรับคอลัมน์เสมือน/สร้างขึ้นสำหรับ MySQL 5.7.5+ และ MariaDB 5.2.0+ (Commit)

  • เพิ่มการสนับสนุนขีดจำกัดในการประมวลผลแบทช์ (Commit)

  • ทดสอบแบบทรานแซกชันกลุ่มทั้งหมดของการเชื่อมต่อ Active Record ในฐานข้อมูล (Pull Request)

  • ข้ามคอมเมนต์ในผลลัพธ์ของคำสั่ง mysqldump โดยค่าเริ่มต้น (Pull Request)

  • แก้ไข ActiveRecord::Relation#count เพื่อใช้ Enumerable#count ของ Ruby ในการนับเรคคอร์ดเมื่อมีการส่งบล็อกเป็นอาร์กิวเมนต์แทนที่จะละเว้นบล็อกที่ส่งผ่าน (Pull Request)

  • ส่งค่า "-v ON_ERROR_STOP=1" พร้อมกับคำสั่ง psql เพื่อไม่ซ่อนข้อผิดพลาด SQL (Pull Request)

  • เพิ่ม ActiveRecord::Base.connection_pool.stat (Pull Request)

  • การสืบทอดโดยตรงจาก ActiveRecord::Migration จะเกิดข้อผิดพลาด ระบุเวอร์ชัน Rails ที่เขียน Migration สำหรับ (Commit)

  • เกิดข้อผิดพลาดเมื่อมีการสร้าง through association ที่มีชื่อ reflection ที่ไม่แน่ชัด (Commit)

10 Active Model

โปรดอ้างอิง [Changelog][active-model] สำหรับการเปลี่ยนแปลงที่ละเอียด

10.1 การลบ

  • ลบเมธอดที่ถูกยกเลิกใน ActiveModel::Errors (commit)

  • ลบตัวเลือก :tokenizer ที่ถูกยกเลิกในตัวตรวจสอบความยาว (commit)

  • ลบพฤติกรรมที่ถูกยกเลิกที่หยุดการเรียกใช้งาน callback เมื่อค่าที่ส่งกลับเป็นเท็จ (commit)

10.2 การเปลี่ยนแปลงที่สำคัญ

  • สตริงเดิมที่กำหนดให้กับแอตทริบิวต์ของโมเดลจะไม่ถูกแช่แข็งอย่างไม่ถูกต้องอีกต่อไป (Pull Request)

11 Active Job

โปรดอ้างอิง [Changelog][active-job] สำหรับการเปลี่ยนแปลงที่ละเอียด

11.1 การลบ

  • ลบการสนับสนุนที่ถูกยกเลิกในการส่งคลาสแอดาปเตอร์ไปยัง .queue_adapter (commit)

  • ลบ #original_exception ที่ถูกยกเลิกใน ActiveJob::DeserializationError (commit)

11.2 การเปลี่ยนแปลงที่สำคัญ

  • เพิ่มการจัดการข้อผิดพลาดแบบสร้างคำสั่งผ่าน ActiveJob::Base.retry_on และ ActiveJob::Base.discard_on (Pull Request)

  • ส่งคืนตัวอย่างงานเพื่อให้คุณสามารถเข้าถึงสิ่งต่าง ๆ เช่น job.arguments ในตรรกะหลังการลองทำงานใหม่ล้มเหลว (commit)

12 Active Support

โปรดอ้างอิง Changelog สำหรับการเปลี่ยนแปลงที่ละเอียด

12.1 การลบ

  • ลบคลาส ActiveSupport::Concurrency::Latch (Commit)

  • ลบ halt_callback_chains_on_return_false (Commit)

  • ลบพฤติกรรมที่ถูกยกเลิกที่หยุดการเรียกใช้งาน callback เมื่อค่าที่ส่งกลับเป็นเท็จ (Commit)

    การยกเลิกการใช้งาน

  • คลาส HashWithIndifferentAccess ระดับบนสุดถูกยกเลิกการใช้งานอย่างอ่อนไหวแล้ว เพื่อใช้แทนด้วย ActiveSupport::HashWithIndifferentAccess แทน (Pull Request)

  • การส่งสตริงเป็นพารามิเตอร์ใน :if และ :unless ตัวเลือกเงื่อนไขใน set_callback และ skip_callback ถูกยกเลิกการใช้งาน (Commit)

12.2 การเปลี่ยนแปลงที่สำคัญ

  • แก้ไขการแปลงระยะเวลาและการเดินทางเพื่อให้สอดคล้องกันในการเปลี่ยนเวลาออกแสดงผล (Commit, Pull Request)

  • อัปเดต Unicode เป็นเวอร์ชัน 9.0.0 (Pull Request)

  • เพิ่ม Duration#before และ #after เป็นตัวแทนสำหรับ #ago และ #since (Pull Request)

  • เพิ่ม Module#delegate_missing_to เพื่อส่งการเรียกเมธอดที่ไม่ได้ถูกกำหนดสำหรับวัตถุปัจจุบันไปยังวัตถุพร็อกซี (Pull Request)

  • เพิ่ม Date#all_day ซึ่งคืนค่าช่วงเวลาทั้งวันของวันที่และเวลาปัจจุบัน (Pull Request)

  • นำเข้าเมธอด assert_changes และ assert_no_changes สำหรับการทดสอบ (Pull Request)

  • เมธอด travel และ travel_to ตอนนี้จะเกิดข้อผิดพลาดเมื่อมีการเรียกซ้อน (Pull Request)

  • อัปเดต DateTime#change เพื่อรองรับ usec และ nsec (Pull Request)

13 เครดิต

ดู รายชื่อผู้มีส่วนร่วมทั้งหมดใน Rails สำหรับ ผู้ที่ใช้เวลาหลายชั่วโมงในการสร้าง Rails เป็นเฟรมเวิร์กที่เสถียรและทนทาน ยินดีด้วยทุกคน

ข้อเสนอแนะ

คุณสามารถช่วยปรับปรุงคุณภาพของคู่มือนี้ได้

กรุณาช่วยเพิ่มเติมหากพบข้อผิดพลาดหรือข้อผิดพลาดทางความจริง เพื่อเริ่มต้นคุณสามารถอ่านส่วน การสนับสนุนเอกสาร ของเราได้

คุณอาจพบเนื้อหาที่ไม่สมบูรณ์หรือเนื้อหาที่ไม่ได้อัปเดต กรุณาเพิ่มเอกสารที่ขาดหายไปสำหรับเนื้อหาหลัก โปรดตรวจสอบ Edge Guides ก่อนเพื่อตรวจสอบ ว่าปัญหาได้รับการแก้ไขหรือไม่ในสาขาหลัก ตรวจสอบ คู่มือแนวทาง Ruby on Rails เพื่อดูรูปแบบและกฎเกณฑ์

หากคุณพบข้อผิดพลาดแต่ไม่สามารถแก้ไขได้เอง กรุณา เปิดปัญหา.

และสุดท้าย การสนทนาใด ๆ เกี่ยวกับ Ruby on Rails เอกสารยินดีต้อนรับที่สุดใน เว็บบอร์ดอย่างเป็นทางการของ Ruby on Rails.