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

วิธีการใช้ตัวแปรสภาพแวดล้อมใน Ruby

ตัวแปรสภาพแวดล้อมเป็นคู่คีย์/ค่า มีลักษณะดังนี้:

KEY=VALUE

เราใช้ตัวแปรเหล่านี้เพื่อแชร์ตัวเลือกการกำหนดค่าระหว่างโปรแกรมทั้งหมดในคอมพิวเตอร์ของคุณ

จึงต้องเรียนรู้วิธีทำงานและวิธีเข้าถึงจากโปรแกรม Ruby โดยใช้ ENV ตัวแปรพิเศษ

ตัวอย่างตัวแปรสภาพแวดล้อม :

  • การกำหนดค่าตัวแก้ไขเริ่มต้นของคุณ
  • บอก Ruby ว่าจะหาอัญมณีได้ที่ไหน (GEM_PATH / GEM_HOME )
  • ส่งคีย์ API ไปยังแอปพลิเคชันของคุณ โดยไม่ต้องคอมมิตกับซอร์สคอนโทรล (git)
  • การกำหนดตำแหน่งที่ระบบปฏิบัติการของคุณควรค้นหาไฟล์ไบนารี (.exe ใน Windows)
  • การผลิตรางเริ่มต้นในโหมดทดสอบ/พัฒนา/การผลิต

คุณสามารถค้นหารายการตัวแปรสภาพแวดล้อมทั้งหมดของคุณได้ด้วย env คำสั่งใน Linux / Mac และ set คำสั่งใน Windows

ตัวอย่าง :

PWD=/home/jesus
SHELL=/usr/bin/zsh
RUBY_ENGINE=ruby
RUBY_VERSION=2.6.0
GEM_ROOT=/opt/rubies/ruby-2.6.0/lib/ruby/gems/2.6.0

# ...

รายการอาจยาวหน่อย แต่คุณไม่จำเป็นต้องจำ

คุณยังสามารถพิมพ์ตัวแปรและการกำหนดค่าเฉพาะอัญมณีทั้งหมดด้วย gem env คำสั่ง

ตอนนี้ :

หากคุณต้องการเข้าถึงตัวแปรสภาพแวดล้อมเหล่านี้จาก Ruby มีอ็อบเจ็กต์พิเศษที่คุณสามารถใช้ได้

มาดูกันว่ามันทำงานอย่างไร!

การใช้ตัวแปรสภาพแวดล้อมใน Ruby

Ruby มีวัตถุ ENV ที่ทำงานเหมือนแฮช &ให้คุณเข้าถึงตัวแปรสภาพแวดล้อมทั้งหมดที่พร้อมใช้งานสำหรับคุณ

นี่คือตัวอย่างบางส่วน…

คุณสามารถดูจำนวนกุญแจที่คุณมีได้ :

ENV.size
# 48

รับรายชื่อ :

ENV.keys

และเข้าถึงคีย์เฉพาะ :

ENV["GEM_HOME"]
# "/home/jesus/.gem/ruby/2.6.0"

คุณสามารถใช้วิธีการต่างๆ เช่น แผนที่ &เลือก:

ENV.select { |k,v| k.size < 4 }

แต่คุณจะตั้งค่าตัวแปรสภาพแวดล้อมเหล่านี้นอก Ruby ได้อย่างไร

วิธีตั้งค่าตัวแปรสภาพแวดล้อม

คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมสำหรับการใช้งานครั้งเดียวได้

ถูกใจสิ่งนี้ :

API_KEY=1 ruby -e 'p ENV["API_KEY"]'

ใช้สิ่งนี้ในเทอร์มินัล นอก irb จากนั้น Ruby จะสามารถเข้าถึง API_KEY นี้ ค่า

สิ่งนี้มีประโยชน์สำหรับคีย์ API แต่ยังรวมถึงการตั้งค่าโหมด Rails ด้วย

ตัวอย่าง :

RAILS_ENV=production rails console

จำไว้ :

ซึ่งจะกำหนดตัวแปรสภาพแวดล้อมเฉพาะสำหรับกระบวนการนี้ที่คุณกำลังเปิดตัวในขณะนี้

หมายความว่าถ้าฉันทำ API_KEY=1 <command> ...

มันจะใช้ได้กับคำสั่งนั้นเท่านั้น!

หากคุณต้องการให้ตัวแปรนี้ถูกใช้โดยคำสั่งอื่นๆ ทั้งหมดที่คุณเรียกใช้จากเซสชันเทอร์มินัลปัจจุบันของคุณ

ทำเช่นนี้ :

export API_KEY=1

ตอนนี้ถ้าคุณทำ :

ruby -e 'p ENV["API_KEY"]'

คุณจะได้รับ 1 แม้จะไม่มีตัวแปรนำหน้า

คำเตือน :

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

ลองใช้อัญมณีที่กำหนดค่าได้แบบแห้งสำหรับตัวเลือกการกำหนดค่าภายใน

คุณลักษณะที่สำคัญของตัวแปรสภาพแวดล้อม

คุณอาจพบว่าแอตทริบิวต์เหล่านี้มีประโยชน์เพราะอธิบายพฤติกรรม (อาจคาดไม่ถึง)

  • สแนปชอต , ตัวแปรสภาพแวดล้อมจะถูกตั้งค่าเมื่อคุณเปิดโปรแกรม &ไม่ได้รับผลกระทบจากการเปลี่ยนแปลงภายนอก
  • สภาพแวดล้อมแบบปิด การเปลี่ยนตัวแปรภายในกระบวนการ (โปรแกรม Ruby ของคุณเป็นกระบวนการ) จะไม่เปลี่ยนตัวแปรสภาพแวดล้อมภายนอกกระบวนการ
  • ตัวแปรสภาพแวดล้อมไม่ถาวร เมื่อคุณรีคอมพิวเตอร์ของคุณใหม่ หรือแม้แต่เมื่อคุณปิดเทอร์มินัล การเปลี่ยนแปลงของตัวแปรสภาพแวดล้อมจะหายไป (แม้ว่าคุณจะใช้ export Linux + Mac / set ใน Windows)

โปรดจำไว้!

Rails Credentials

Rails 5.2 เปิดตัวระบบใหม่เพื่อช่วยคุณจัดการคีย์ API

ทำงานโดยบันทึกข้อมูลประจำตัวลงใน config/credentials.yml.enc โดยตรง นี่เป็นไฟล์ที่เข้ารหัสซึ่งคุณสามารถอ่านได้ก็ต่อเมื่อคุณมี master.key ไฟล์.

แนวคิดคือคุณยอมรับเฉพาะ credentials.yml.enc และคุณเก็บกุญแจไว้เป็นส่วนตัว

คุณจะเพิ่มข้อมูลรับรองใหม่ได้อย่างไร

คุณไม่สามารถแก้ไข .enc ไฟล์โดยตรง

ใช้คำสั่งนี้แทน :

bin/rails credentials:edit

นี่คือไฟล์ YAML ตรวจสอบให้แน่ใจว่าได้จัดรูปแบบอย่างถูกต้อง

ตอนนี้ :

คุณสามารถอ่านข้อมูลรับรองจากแอป Rails ของคุณได้ดังนี้...

Rails.application.credentials.github_api_key

ชมวิดีโอการสอน

สรุป

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

วิธีการใช้ตัวแปรสภาพแวดล้อมใน Ruby

โปรดแบ่งปันบทความนี้กับเพื่อนของคุณเพื่อให้คนอื่นค้นพบ 🙂

ขอบคุณสำหรับการอ่าน!