1 การอัปเกรดไปยัง Rails 5.1
หากคุณกำลังอัปเกรดแอปพลิเคชันที่มีอยู่อยู่ ควรมีการทดสอบที่ดีก่อนที่จะเริ่มต้น คุณควรอัปเกรดเป็น Rails 5.0 ก่อนหากคุณยังไม่ได้ทำ และตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณยังทำงานได้ตามที่คาดหวังก่อนที่จะพยายามอัปเดตเป็น Rails 5.1 มีรายการสิ่งที่ควรระวังเมื่ออัปเกรดใน การอัปเกรด Ruby on Rails คู่มือ
2 คุณสมบัติหลัก
2.1 รองรับ Yarn
Rails 5.1 ช่วยให้สามารถจัดการกับการขึ้นอยู่กันของ JavaScript จาก npm ผ่าน Yarn ได้ง่ายขึ้น สิ่งนี้จะทำให้ใช้ไลบรารีเช่น React, VueJS หรือไลบรารีอื่นๆจากโลกของ npm ได้ง่ายขึ้น Yarn รองรับการทำงานร่วมกับ asset pipeline เพื่อให้ทุกขึ้นอยู่กันทำงานได้อย่างราบรื่นกับแอปพลิเคชัน Rails 5.1
2.2 รองรับ Webpack แบบไม่บังคับ
แอปพลิเคชัน Rails สามารถรวมกับ Webpack ที่เป็นตัวรวมส่วน JavaScript ได้อย่างง่ายดายมากขึ้นโดยใช้ gem Webpacker ใหม่ ใช้ตัวเลือก --webpack
เมื่อสร้างแอปพลิเคชันใหม่เพื่อเปิดใช้งานการรวมกับ Webpack
สิ่งนี้เป็นเวอร์ชันที่เข้ากันได้อย่างสมบูรณ์กับ asset pipeline ซึ่งคุณสามารถใช้ต่อไปสำหรับรูปภาพ เสียง และทรัพยากรอื่นๆ คุณยังสามารถมีรหัส JavaScript บางส่วนที่จัดการโดย asset pipeline และรหัสอื่นที่ประมวลผลผ่าน Webpack ทั้งหมดนี้จัดการโดย Yarn ซึ่งเปิดใช้งานโดยค่าเริ่มต้น
2.3 jQuery ไม่เป็นการติดตั้งเริ่มต้นอีกต่อไป
jQuery ถูกต้องต้องใช้ในเวอร์ชันก่อนหน้าของ Rails เพื่อให้มีคุณสมบัติเช่น data-remote
, data-confirm
และส่วนอื่น ๆ ของ Unobtrusive JavaScript ของ Rails แต่ไม่จำเป็นต้องใช้แล้ว เนื่องจาก UJS ได้รับการเขียนใหม่เพื่อใช้งานด้วย JavaScript ธรรมดา โค้ดนี้ตอนนี้ถูกจัดส่งพร้อมกับ Action View เป็น rails-ujs
คุณยังสามารถใช้ jQuery ได้หากต้องการ แต่ไม่จำเป็นต้องใช้โดยค่าเริ่มต้น
2.4 การทดสอบระบบ
Rails 5.1 มีการสนับสนุนการเขียนการทดสอบด้วย Capybara แบบฝังอยู่ในระบบ ในรูปแบบของการทดสอบระบบ (System tests) คุณไม่ต้องกังวลเกี่ยวกับการกำหนดค่า Capybara และกลยุทธ์การล้างฐานข้อมูลสำหรับการทดสอบเช่นนี้แล้ว Rails 5.1 มีการให้ Wrapper สำหรับการเรียกใช้งานทดสอบใน Chrome พร้อมกับคุณสมบัติเพิ่มเติม เช่น การบันทึกภาพหน้าจอเมื่อเกิดข้อผิดพลาด
2.5 การเข้ารหัสความลับ
Rails ตอนนี้อนุญาตให้จัดการความลับของแอปพลิเคชันอย่างปลอดภัย โดยได้รับแรงบันดาลใจจาก gem sekrets
รัน bin/rails secrets:setup
เพื่อตั้งค่าไฟล์ความลับที่เข้ารหัสใหม่ นี่ยังจะสร้างคีย์หลักซึ่งต้องเก็บไว้นอกเก็บข้อมูลเพื่อรักษาความปลอดภัย ความลับเองสามารถเก็บไว้ในระบบควบคุมการทบทวนรหัสภายในในรูปแบบที่เข้ารหัส
ความลับจะถูกถอดรหัสในโปรดักชันโดยใช้คีย์ที่เก็บไว้ entironment variable RAILS_MASTER_KEY
หรือในไฟล์คีย์
2.6 การส่งอีเมลพารามิเตอร์
อนุญาตให้ระบุพารามิเตอร์ที่ใช้ร่วมกันสำหรับเมธอดทั้งหมดในคลาสเมลเลอร์เพื่อแชร์ตัวแปรอินสแตนซ์, ส่วนหัว และการตั้งค่าที่ใช้ร่วมกัน
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 เส้นทางโดยตรงและเส้นทางที่แก้ไข
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
ก่อน 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.