Computer >> คอมพิวเตอร์ >  >> ระบบ >> MAC

อย่าใช้ Mac System Ruby – ใช้สิ่งนี้แทน

อาจมีคนเคยบอกคุณว่า "อย่าใช้ระบบ Ruby" เป็นคำแนะนำที่ดี แต่ทำไม? มาหาคำตอบกัน

คุณมีรูบี้ตัวไหน

MacOS มาพร้อมกับ "ระบบ Ruby" ที่ติดตั้งไว้ล่วงหน้า

ใช้ which คำสั่งเพื่อดูว่าติดตั้ง Ruby ไว้ที่ใด:

$ which ruby
/usr/bin/ruby

หากคุณเห็น /usr/bin/ruby มันคือ Ruby ระบบ macOS ที่ติดตั้งไว้ล่วงหน้า

คุณสามารถใช้ระบบ Ruby ในการรันสคริปต์ดูแลระบบได้ ตราบใดที่คุณไม่แก้ไขระบบ Ruby โดยพยายามอัปเดตหรือเพิ่มอัญมณี

แต่คุณไม่ต้องการใช้มันเมื่อคุณกำลังพัฒนาโครงการใน Ruby

ทับทิมสำหรับการพัฒนา

สำหรับการพัฒนาโครงการด้วย Ruby คุณควรติดตั้ง Ruby ด้วย Homebrew หรือใช้ตัวจัดการเวอร์ชัน เช่น asdf, chruby, rbenv หรือ rvm

ตัวจัดการเวอร์ชันช่วยคุณได้หากคุณกำลังเล่นกลหลายโปรเจ็กต์และไม่สามารถอัปเดตทั้งหมดในคราวเดียวได้ สำหรับคำแนะนำที่เปรียบเทียบตัวจัดการเวอร์ชันและแสดงวิธีที่ดีที่สุดในการติดตั้ง Ruby โปรดดูบทความของฉันในการติดตั้ง Ruby บน Mac

แต่ทำไมไม่ใช้ Ruby เริ่มต้นของ macOS ล่ะ มาดูสาเหตุที่ไม่ควรใช้ Ruby เริ่มต้นของ Mac เพื่อการพัฒนา

ความยุ่งยากในการติดตั้งอัญมณี

RubyGems เป็นไลบรารีซอฟต์แวร์สำเร็จรูปที่ช่วยให้การพัฒนา Ruby เป็นเรื่องง่ายและสนุก โปรเจ็กต์ Ruby ส่วนใหญ่ใช้อัญมณีอย่างน้อยสองสามตัว

หากคุณใช้ระบบ Mac Ruby ให้รัน gem install จะพยายามบันทึกอัญมณีลงในไดเรกทอรี Ruby ระบบ /Library/Ruby/Gems/2.6.0 . ไดเรกทอรีนั้นเป็นของ root , ผู้ใช้ระดับสูงของระบบ ผู้ใช้ทั่วไปไม่ได้รับอนุญาตให้เขียนถึงโฟลเดอร์นี้ (และคุณไม่ควรแก้ไขโฟลเดอร์นี้จริงๆ)

หากลองติดตั้ง gem เช่น gem install rails คุณจะได้รับข้อผิดพลาดในการอนุญาต:

ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory

ละเมิดความปลอดภัยของระบบ

ระบบที่ใช้ Unix นั้นทรงพลัง ดังนั้นจึงมีวิธีแก้ปัญหา คุณสามารถติดตั้งอัญมณีในฐานะผู้ใช้ระดับสูงเพื่อแทนที่การจำกัดสิทธิ์ แต่อย่าทำเช่นนี้!

$ sudo gem install rails

ทุกครั้งที่คุณกำลังจะเรียกใช้ sudo คุณควรหยุดและถามว่าคุณกำลังจะยิงตัวเองที่เท้าหรือไม่

ในกรณีนี้ คุณต้องมี sudo เพราะคุณกำลังแก้ไขไฟล์ระบบที่จัดการโดยระบบปฏิบัติการ อย่าทำมัน! คุณอาจปล่อยให้ระบบอยู่ในสภาพเสียหรือถูกบุกรุก ที่แย่ไปกว่านั้น อัญมณีอาจมีโค้ดอันตรายที่รบกวนคอมพิวเตอร์ของคุณ

การจัดการอัญมณี

นักพัฒนาที่มีประสบการณ์ใช้ Bundler เพื่อติดตั้ง gem และจัดการการขึ้นต่อกัน

ลองนึกภาพว่าคุณมีโปรเจ็กต์ที่ใช้ gem เวอร์ชันต่างๆ กัน (อาจมีการเปิดตัว gem ใหม่ระหว่างโปรเจ็กต์ของคุณ) หรืออาจมีอัญมณีที่แตกต่างกันสองอย่างในโปรเจ็กต์ของคุณขึ้นอยู่กับรุ่นของอัญมณีที่ขึ้นต่อกัน

Bundler ใช้ Gemfile ในไดเรกทอรีโครงการของคุณเพื่อติดตามอัญมณีที่คุณต้องการ หากคุณจะใช้ sudo ในการติดตั้งอัญมณีกับระบบ Ruby คุณจะจบลงด้วยอัญมณีที่เข้ากันไม่ได้ในไดเรกทอรี Ruby ของระบบ

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

ใช้ Ruby ใหม่ล่าสุด

เมื่อคุณเริ่มโปรเจ็กต์ ให้ใช้ Ruby รุ่นใหม่ล่าสุด (ตอนนี้เป็นรุ่น 3.0)

ระบบ Ruby ใน macOS Catalina หรือ Big Sur คือ Ruby 2.6.3 ซึ่งเก่าแล้ว หากคุณเพิ่งเริ่มต้นกับ Ruby ให้ติดตั้งด้วย Homebrew และทำงานในโครงการด้วย Ruby 3.0 เมื่อคุณเริ่มสร้างโปรเจ็กต์อื่น อาจถึงเวลาที่ต้องติดตั้งตัวจัดการเวอร์ชันเพื่อให้คุณสามารถเล่นกลโปรเจ็กต์ที่มี Ruby เวอร์ชันต่างๆ ได้

MacOS หลังบิ๊กเซอร์

MacOS Big Sur เป็นเวอร์ชันปัจจุบันแล้ว Apple พูดว่า:

"รันไทม์ของภาษาสคริปต์ เช่น Python, Ruby และ Perl รวมอยู่ใน macOS เพื่อความเข้ากันได้กับซอฟต์แวร์รุ่นเก่า macOS เวอร์ชันต่อๆ ไปจะไม่รวมรันไทม์ของภาษาสคริปต์ตามค่าเริ่มต้น และอาจจำเป็นต้องให้คุณติดตั้งแพ็คเกจเพิ่มเติม ."

หากคุณกำลังอ่านข้อความนี้เมื่อปลายปี 2021 ระบบ Ruby อาจหายไปแล้ว หากไม่เป็นเช่นนั้น ให้เตรียมตัวโดยติดตั้ง Ruby ด้วย Homebrew หรือตัวจัดการเวอร์ชัน

สนุกกับทับทิม

สำหรับนักพัฒนาที่วางแผนจะสร้างเว็บแอปพลิเคชันด้วย Rails ฉันได้เขียนคู่มือ Install Rails บน Mac ซึ่งมากกว่า Install Ruby บน Mac เพื่อแสดงวิธีเลือกตัวจัดการเวอร์ชันที่จะทำงานร่วมกับ Node เช่นเดียวกับ Ruby

สนุกกับการเขียนโค้ดใน Ruby! ท้ายที่สุดมันเป็นที่รู้จักในฐานะภาษาที่อุทิศให้กับความสุขของโปรแกรมเมอร์ แต่อย่าลืมว่าระบบ Ruby มีไว้สำหรับ macOS ไม่ใช่สำหรับคุณ