ตัวแปรสภาพแวดล้อมเป็นคู่คีย์/ค่า มีลักษณะดังนี้:
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 ไว้เป็นส่วนตัว
โปรดแบ่งปันบทความนี้กับเพื่อนของคุณเพื่อให้คนอื่นค้นพบ 🙂
ขอบคุณสำหรับการอ่าน!