Rails 4.2 เบต้ารุ่นแรกได้รับการประกาศเมื่อสัปดาห์ที่แล้วและมันดูน่าทึ่งอยู่แล้ว ฉันตื่นเต้นมากที่ได้ใช้การสนับสนุน ActiveJob, Web Console, Adequate Record และ Foreign Key ในแอปของฉันเอง
แต่ความสวยงามของ Rails อยู่ที่รายละเอียด และหากคุณขุดค้นเพียงเล็กน้อย คุณจะพบคุณลักษณะที่โฆษณาน้อยกว่าที่จะปรับปรุงงานประจำวันของคุณด้วย Rails โดยสิ้นเชิง
โหลดไฟล์กำหนดค่าได้อย่างง่ายดาย
โอเค ฉันอาจจะลำเอียง แต่การมีวิธีโหลดไฟล์ปรับแต่งในตัวนั้นถือว่ายอดเยี่ยมมาก
config_for
ใหม่ใน Rails 4.2 ทำงานเหมือนกับที่คุณคาดหวัง:
development:
host: localhost
port: 6379
test:
host: localhost
port: 6379
production:
host: redis-production
port: 6379
irb(main):001:0> Rails.application.config_for(:redis)
=> {"host"=>"localhost", "port"=>6379}
นั่นคือถ้าคุณเรียก config_for(:redis)
มันจะมองหา config/redis.yml
ในแอป Rails ของคุณ ให้แยกวิเคราะห์และคืนค่าการกำหนดค่าที่ถูกต้องสำหรับ RAILS_ENV
ของคุณ .
มันยังให้คุณใส่ ERB ใน yaml ของคุณได้อีกด้วย:
development:
host: localhost
port: <%= ENV['REDIS_PORT'] %>
test:
host: localhost
port: <%= ENV['REDIS_PORT'] %>
production:
host: redis-production
port: <%= ENV['REDIS_PORT'] %>
$ REDIS_PORT=6380 bin/rails c
Loading development environment (Rails 4.2.0.beta1)
irb(main):001:0> Rails.application.config_for(:redis)
=> {"host"=>"localhost", "port"=>6380}
หากคุณกำหนดค่าบริการจำนวนมากในแอป การทำเช่นนี้จะทำให้ตัวเริ่มต้นอ่านง่ายขึ้นมาก
บูตสแตรปแอปของคุณ
แอป Rails ส่วนใหญ่ต้องการให้คุณเรียกใช้คำสั่งบางอย่างก่อนจึงจะลองใช้ได้ แม้แต่แอป Rails ส่วนใหญ่จะว่างเปล่าก็ยังต้องตั้งค่าฐานข้อมูลก่อนจึงจะสามารถบู๊ตได้
ดังนั้น Rails จึงสร้างสถานที่สำหรับรหัสการตั้งค่าของคุณโดยเฉพาะ:bin/setup
.
ค่าเริ่มต้นเป็นสิ่งที่ดี แต่ bin/setup
เป็นที่สำหรับวางโค้ดอื่นๆ ที่จำเป็นสำหรับการเริ่มต้นแอปของคุณ
ดังนั้นนี่คือข้อตกลง หากคุณได้เขียนสคริปต์บูตสแตรปสำหรับแอปของคุณแล้ว ให้เปลี่ยนชื่อเป็น bin/setup
เพื่อให้ผู้ที่ใช้แอปของคุณสามารถเริ่มต้นได้อย่างง่ายดาย
bin/setup
ช่วยให้คุณตัดสินใจน้อยลงเมื่อคุณสร้างแอป Rails ใหม่ และเมื่อคุณคุ้นเคยกับการใช้งาน bin/setup
หลังจากที่คุณ git pull
คุณจะไม่มีวันจำต้องเรียกใช้ rake db:setup
เมื่อคุณสร้างแอปใหม่อีกครั้ง
แปลงค่าแฮชของคุณ
นี่เป็นอีกสิ่งหนึ่งที่ฉันต้องการบ่อยมากจนฉันหวังว่ามันจะรวมอยู่ใน Ruby เมื่อคุณเรียก transform_values
ในแฮชจะทำหน้าที่เหมือนเรียก map
บนค่าแฮช และส่งกลับค่าแฮชใหม่ด้วยคีย์เดิมที่เชื่อมโยงกับค่าที่ถูกแทนที่:
h = {a: 1, b: 2, c: 3}
h.transform_values { |v| v * 2 } # => {a: 2, b: 4, c: 6}
ง่ายพอ แต่คุณจะต้องแปลกใจว่ามีประโยชน์มากแค่ไหน
โบนัส:การกำหนดค่าเพิ่มเติม!
Rails 4.2 นำเสนอวิธีง่ายๆ ในการกำหนดค่าส่วนกลางของคุณเอง:
Rails.application.config.x.some_configuration_key = "Some Value"
Rails.application.config.x.some_configuration_key # => "Some Value"
Rails.configuration.x.some_configuration_key # => "Some Value"
วิธีนี้ใช้ได้ผลดีโดยเฉพาะเมื่อคุณรวมเข้ากับ config_for
:
app_config = Rails.application.config_for(:app)
Rails.application.config.x.block_phone_calls = app_config["block_phone_calls"]
และอีกมากมาย!
ดูเหมือนว่า Rails 4.2 จะถูกตั้งค่าให้เป็นรีลีสที่น่าทึ่ง แต่การปรับแต่งเล็กๆ น้อยๆ ที่ทำให้การทำงานใน Rails ทำได้ยอดเยี่ยมในทุกๆ วัน ดังนั้น หากคุณยังไม่ได้ดู โปรดดูบันทึกย่อประจำรุ่น 4.2 และดูว่ามีการปรับปรุงที่เป็นประโยชน์ใดบ้างที่คุณสามารถหาได้
(และถ้าคุณ ทำ หาของเจ๋งๆ อย่าเก็บไว้คนเดียว แชร์ที่นี่ เพื่อให้เราทุกคนได้เรียนรู้สิ่งใหม่ๆ!)