Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

คุณสมบัติที่รู้จักกันน้อยใน Rails 4.2

Rails 4.2 เบต้ารุ่นแรกได้รับการประกาศเมื่อสัปดาห์ที่แล้วและมันดูน่าทึ่งอยู่แล้ว ฉันตื่นเต้นมากที่ได้ใช้การสนับสนุน ActiveJob, Web Console, Adequate Record และ Foreign Key ในแอปของฉันเอง

แต่ความสวยงามของ Rails อยู่ที่รายละเอียด และหากคุณขุดค้นเพียงเล็กน้อย คุณจะพบคุณลักษณะที่โฆษณาน้อยกว่าที่จะปรับปรุงงานประจำวันของคุณด้วย Rails โดยสิ้นเชิง

โหลดไฟล์กำหนดค่าได้อย่างง่ายดาย

โอเค ฉันอาจจะลำเอียง แต่การมีวิธีโหลดไฟล์ปรับแต่งในตัวนั้นถือว่ายอดเยี่ยมมาก

config_for ใหม่ใน Rails 4.2 ทำงานเหมือนกับที่คุณคาดหวัง:

config/redis.yml
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 ของคุณได้อีกด้วย:

config/redis.yml
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 และดูว่ามีการปรับปรุงที่เป็นประโยชน์ใดบ้างที่คุณสามารถหาได้

(และถ้าคุณ ทำ หาของเจ๋งๆ อย่าเก็บไว้คนเดียว แชร์ที่นี่ เพื่อให้เราทุกคนได้เรียนรู้สิ่งใหม่ๆ!)