rbenv เป็นเครื่องมือจัดการเวอร์ชันสำหรับภาษาการเขียนโปรแกรม Ruby บนระบบที่คล้าย Unix มีประโยชน์สำหรับการสลับระหว่างเวอร์ชัน Ruby หลายเวอร์ชันบนเครื่องเดียวกัน และเพื่อให้แน่ใจว่าแต่ละโปรเจ็กต์ที่คุณกำลังทำงานอยู่จะทำงานบนเวอร์ชัน Ruby ที่ถูกต้องเสมอ
หลังจากที่ rbenv ใส่ตัวเองลงใน PATH ของคุณ ณ เวลาติดตั้ง การเรียกใช้ ruby
, gem
, bundler
หรือไฟล์ปฏิบัติการอื่นๆ ที่เกี่ยวข้องกับ Ruby จะเปิดใช้งาน rbenv ก่อน จากนั้น rbenv จะสแกนไดเร็กทอรีโปรเจ็กต์ปัจจุบันเพื่อหาไฟล์ชื่อ . .ruby-version
หากพบ ไฟล์นั้นจะกำหนดเวอร์ชันของ Ruby ที่ควรใช้ภายในไดเร็กทอรีนั้น ในที่สุด rbenv จะค้นหาเวอร์ชัน Ruby นั้น ~/.rbenv/versions/
~/.rbenv/versions/
คุณสามารถเลือกเวอร์ชัน Ruby สำหรับโปรเจ็กต์ของคุณได้ เช่น:
cd myproject
# choose Ruby version 3.1.2:
rbenv local 3.1.2
การทำเช่นนี้จะสร้างหรืออัปเดตไฟล์ .ruby-version
ในไดเร็กทอรีปัจจุบันด้วยเวอร์ชันที่คุณเลือก โปรเจ็กต์อื่นของคุณซึ่งเป็นไดเร็กทอรีอื่นอาจใช้ Ruby เวอร์ชันอื่นโดยสิ้นเชิง rbenv จะเปลี่ยนจาก Ruby เวอร์ชันหนึ่งไปอีกเวอร์ชันหนึ่งได้อย่างราบรื่นเมื่อคุณสลับโปรเจ็กต์
ในที่สุด กลไกของ rbenv เกือบทุกด้านสามารถปรับแต่งได้ผ่านปลั๊กอินที่เขียนด้วย bash
ความเรียบง่ายของ rbenv มีประโยชน์ แต่ก็มีข้อเสียอยู่บ้างเช่นกัน ดูการเปรียบเทียบตัวจัดการเวอร์ชันสำหรับรายละเอียดเพิ่มเติมและทางเลือกอื่นๆ
บนระบบที่มีตัวจัดการแพ็คเกจ Homebrew แนะนำให้ใช้วิธี "การใช้ตัวจัดการแพ็คเกจ" ในระบบอื่นๆ “Basic Git Checkout” อาจเป็นวิธีที่ง่ายที่สุดในการตรวจสอบให้แน่ใจว่าคุณติดตั้ง rbenv เวอร์ชันล่าสุดอยู่เสมอ
ติดตั้ง rbenv โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้
บน macOS หรือ Linux เราขอแนะนำให้ติดตั้ง rbenv ด้วย Homebrew
brew install rbenv
[!คำเตือน]
เวอร์ชันของ rbenv ที่ได้รับการบรรจุและบำรุงรักษาในที่เก็บ Debian และ Ubuntu อย่างเป็นทางการนั้น ล้าสมัย หากต้องการติดตั้งเวอร์ชันล่าสุด ขอแนะนำให้ติดตั้ง rbenv โดยใช้ git
sudo apt install rbenv
Archlinux มีแพ็คเกจ AUR สำหรับ rbenv และคุณสามารถติดตั้งได้จาก AUR โดยใช้คำแนะนำจากหน้าวิกินี้
Fedora มีแพ็คเกจอย่างเป็นทางการที่คุณสามารถติดตั้งได้:
sudo dnf install rbenv
ตั้งค่าเชลล์ของคุณเพื่อโหลด rbenv
rbenv init
ปิดหน้าต่าง Terminal ของคุณแล้วเปิดหน้าต่างใหม่เพื่อให้การเปลี่ยนแปลงมีผล
แค่นั้นแหละ! ตอนนี้คุณพร้อมที่จะติดตั้ง Ruby บางเวอร์ชันแล้ว
บันทึก
สำหรับการติดตั้งแบบอัตโนมัติมากขึ้น คุณสามารถใช้ rbenv-installer หากคุณไม่ต้องการรันสคริปต์ที่ดาวน์โหลดจาก URL ของเว็บ หรือเพียงแค่ต้องการดำเนินการด้วยตนเอง ให้ทำตามขั้นตอนด้านล่าง
สิ่งนี้จะช่วยให้คุณใช้งาน rbenv เวอร์ชันล่าสุดได้โดยไม่จำเป็นต้องติดตั้งทั้งระบบ
โคลน rbenv เข้าไป ~/.rbenv
git clone https://github.com/rbenv/rbenv.git ~ /.rbenv
ตั้งค่าเชลล์ของคุณเพื่อโหลด rbenv
~ /.rbenv/bin/rbenv init
หากคุณสงสัย โปรดดูที่นี่เพื่อทำความเข้าใจว่า init
ทำอะไร
รีสตาร์ทเชลล์ของคุณเพื่อให้การเปลี่ยนแปลงเหล่านี้มีผล (โดยปกติแล้วการเปิดแท็บเทอร์มินัลใหม่จะทำได้)
เมื่อติดตั้ง rbenv ด้วยตนเอง อาจเป็นประโยชน์ที่จะทราบว่าสคริปต์การเสร็จสิ้นสำหรับเชลล์ต่างๆ ทำงานอย่างไร สคริปต์การเสร็จสิ้นช่วยในการพิมพ์คำสั่ง rbenv โดยขยายชื่อคำสั่ง rbenv ที่ป้อนบางส่วนและแฟล็กตัวเลือก โดยทั่วไปสิ่งนี้จะถูกเรียกใช้โดยการกดปุ่ม Tab ในเชลล์แบบโต้ตอบ
สคริปต์การเสร็จสิ้น การทุบตี สำหรับ rbenv มาพร้อมกับโปรเจ็กต์และได้รับการโหลดโดยกลไก rbenv init
สคริปต์การกรอก zsh มาพร้อมกับโปรเจ็กต์ แต่ต้องเพิ่มให้กับ FPATH ใน zsh ก่อนจึงจะสามารถค้นพบได้โดยเชลล์ วิธีหนึ่งในการทำเช่นนี้คือแก้ไข ~/.zshrc
:
# assuming that rbenv was installed to `~/.rbenv`
FPATH= ~ /.rbenv/completions: " $FPATH "
autoload -U compinit
compinit
สคริปต์การเติม ปลา ให้สมบูรณ์สำหรับ rbenv จัดส่งมาพร้อมกับตัวเปลือกปลา และไม่ได้รับการดูแลโดยโปรเจ็กต์ rbenv
คำสั่ง rbenv install
ไม่ได้มาพร้อมกับ rbenv แบบสำเร็จรูป แต่จัดเตรียมโดยปลั๊กอิน ruby-build
ก่อนที่จะพยายามติดตั้ง Ruby ให้ตรวจสอบว่าสภาพแวดล้อมบิลด์ของคุณมีเครื่องมือและไลบรารีที่จำเป็น แล้ว:
# list latest stable versions:
rbenv install -l
# list all local versions:
rbenv install -L
# install a Ruby version:
rbenv install 3.1.2
สำหรับการแก้ไขปัญหาสถานการณ์ BUILD FAILED
โปรดตรวจสอบส่วนการสนทนา Ruby-build
บันทึก
หากไม่พบคำสั่ง rbenv install
คุณสามารถติดตั้ง ruby-build เป็นปลั๊กอินได้:
git clone https://github.com/rbenv/ruby-build.git " $( rbenv root ) " /plugins/ruby-build
ตั้งค่าเวอร์ชัน Ruby เพื่อสิ้นสุดการติดตั้งและเริ่มใช้ Ruby:
rbenv global 3.1.2 # set the default Ruby version for this machine
# or:
rbenv local 3.1.2 # set the Ruby version for this directory
อีกทางเลือกหนึ่งสำหรับคำสั่ง rbenv install
คุณสามารถดาวน์โหลดและคอมไพล์ Ruby ด้วยตนเองเป็นไดเร็กทอรีย่อยของ ~/.rbenv/versions
รายการในไดเร็กทอรีนั้นสามารถเป็นลิงก์ไปยังเวอร์ชัน Ruby ที่ติดตั้งไว้ที่อื่นในระบบไฟล์ได้
เลือกเวอร์ชัน Ruby สำหรับโปรเจ็กต์ของคุณโดยใช้ rbenv local 3.1.2
เป็นต้น จากนั้น ดำเนินการติดตั้งอัญมณีตามปกติ:
gem install bundler
บันทึก
คุณ ไม่ควรใช้ sudo เพื่อติดตั้งอัญมณี โดยทั่วไปแล้ว เวอร์ชัน Ruby จะถูกติดตั้งใต้โฮมไดเร็กตอรี่ของคุณ และผู้ใช้ของคุณจะสามารถเขียนได้ หากคุณได้รับข้อผิดพลาด “คุณไม่มีสิทธิ์ในการเขียน” เมื่อติดตั้ง Gems อาจเป็นไปได้ว่าเวอร์ชัน Ruby "ระบบ" ของคุณยังคงเป็นค่าเริ่มต้นทั่วโลก เปลี่ยนสิ่งนั้นด้วย rbenv global <version>
แล้วลองอีกครั้ง
ตรวจสอบตำแหน่งที่ติดตั้ง gem ด้วย gem env
:
gem env home
# => ~/.rbenv/versions/<version>/lib/ruby/gems/...
เมื่อเวลาผ่านไป เวอร์ชัน Ruby ที่คุณติดตั้งจะสะสมอยู่ในไดเร็กทอรี ~/.rbenv/versions
ของคุณ
หากต้องการลบ Ruby เวอร์ชันเก่า เพียง rm -rf
ไปยังไดเร็กทอรีของเวอร์ชันที่คุณต้องการลบ คุณสามารถค้นหาไดเร็กทอรีของ Ruby เวอร์ชันใดเวอร์ชันหนึ่งได้ด้วยคำสั่ง rbenv prefix
เช่น rbenv prefix 2.7.0
ปลั๊กอิน Ruby-build จัดเตรียมคำสั่ง rbenv uninstall
เพื่อทำให้กระบวนการลบเป็นแบบอัตโนมัติ
คำสั่ง rbenv หลักที่คุณต้องรู้คือ:
แสดงรายการเวอร์ชัน Ruby ทั้งหมดที่ rbenv รู้จัก และแสดงเครื่องหมายดอกจันถัดจากเวอร์ชันที่ใช้งานอยู่ในปัจจุบัน
$ rbenv versions
1.8.7-p352
1.9.2-p290
* 1.9.3-p327 (set by /Users/sam/.rbenv/version)
jruby-1.7.1
rbx-1.2.4
ree-1.8.7-2011.03
แสดงเวอร์ชัน Ruby ที่ใช้งานอยู่ในปัจจุบัน พร้อมด้วยข้อมูลเกี่ยวกับวิธีการตั้งค่า
$ rbenv version
1.9.3-p327 (set by /Users/sam/.rbenv/version)
ตั้งค่าเวอร์ชัน Ruby เฉพาะแอปพลิเคชันเฉพาะเครื่องโดยการเขียนชื่อเวอร์ชันลงในไฟล์ .ruby-version
ในไดเร็กทอรีปัจจุบัน เวอร์ชันนี้จะแทนที่เวอร์ชันสากล และสามารถแทนที่ตัวเองได้โดยการตั้งค่าตัวแปรสภาพแวดล้อม RBENV_VERSION
หรือด้วยคำสั่ง rbenv shell
rbenv local 3.1.2
เมื่อรันโดยไม่มีหมายเลขเวอร์ชัน rbenv local
จะรายงานเวอร์ชันโลคัลที่กำหนดค่าไว้ในปัจจุบัน คุณยังสามารถยกเลิกการตั้งค่าเวอร์ชันท้องถิ่นได้:
rbenv local --unset
ตั้งค่า Ruby เวอร์ชันสากลที่จะใช้ในเชลล์ทั้งหมดโดยการเขียนชื่อเวอร์ชันลงในไฟล์ ~/.rbenv/version
เวอร์ชันนี้สามารถแทนที่ได้ด้วยไฟล์ .ruby-version
เฉพาะแอปพลิเคชัน หรือโดยการตั้งค่าตัวแปรสภาพแวดล้อม RBENV_VERSION
rbenv global 3.1.2
system
ชื่อเวอร์ชันพิเศษบอกให้ rbenv ใช้ระบบ Ruby (ตรวจพบโดยการค้นหาของคุณ $PATH
)
เมื่อรันโดยไม่มีหมายเลขเวอร์ชัน rbenv global
จะรายงานเวอร์ชันสากลที่กำหนดค่าไว้ในปัจจุบัน
ตั้งค่าเวอร์ชัน Ruby เฉพาะเชลล์โดยการตั้งค่าตัวแปรสภาพแวดล้อม RBENV_VERSION
ในเชลล์ของคุณ เวอร์ชันนี้จะแทนที่เวอร์ชันเฉพาะแอปพลิเคชันและเวอร์ชันสากล
rbenv shell jruby-1.7.1
เมื่อรันโดยไม่มีหมายเลขเวอร์ชัน rbenv shell
จะรายงานค่าปัจจุบันของ RBENV_VERSION
คุณสามารถยกเลิกการตั้งค่าเวอร์ชันเชลล์ได้:
rbenv shell --unset
โปรดทราบว่าคุณจะต้องเปิดใช้งานการรวมเชลล์ของ rbenv (ขั้นตอนที่ 3 ของคำแนะนำในการติดตั้ง) เพื่อที่จะใช้คำสั่งนี้ หากคุณไม่ต้องการใช้การรวมเชลล์ คุณสามารถตั้งค่าตัวแปร RBENV_VERSION
ด้วยตัวเองได้:
export RBENV_VERSION=jruby-1.7.1
ติดตั้ง shims สำหรับโปรแกรมปฏิบัติการ Ruby ทั้งหมดที่ rbenv รู้จัก ( ~/.rbenv/versions/*/bin/*
) โดยปกติแล้ว คุณไม่จำเป็นต้องรันคำสั่งนี้ เนื่องจากคำสั่งจะทำงานโดยอัตโนมัติหลังจากติดตั้ง Gem
rbenv rehash
แสดงพาธแบบเต็มไปยังไฟล์เรียกทำงานที่ rbenv จะเรียกใช้เมื่อคุณรันคำสั่งที่กำหนด
$ rbenv which irb
/Users/sam/.rbenv/versions/1.9.3-p327/bin/irb
แสดงรายการเวอร์ชัน Ruby ทั้งหมดที่มีชื่อปฏิบัติการที่ระบุ
$ rbenv whence rackup
1.9.3-p327
jruby-1.7.1
ree-1.8.7-2011.03
คุณสามารถส่งผลต่อวิธีการทำงานของ rbenv ได้ด้วยการตั้งค่าต่อไปนี้:
ชื่อ | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|
RBENV_VERSION | ระบุเวอร์ชัน Ruby ที่จะใช้ ดู rbenv shell ด้วย | |
RBENV_ROOT | ~/.rbenv | กำหนดไดเร็กทอรีที่มีเวอร์ชัน Ruby และ shims อยู่ ดู rbenv root ด้วย |
RBENV_DEBUG | ส่งออกข้อมูลการดีบัก ยังเป็น: rbenv --debug <subcommand> | |
RBENV_HOOK_PATH | ดูวิกิ | รายการเส้นทางที่คั่นด้วยโคลอนค้นหา rbenv hooks |
RBENV_DIR | $PWD | ไดเร็กทอรีเพื่อเริ่มค้นหาไฟล์ . .ruby-version |
rbenv init
เป็นคำสั่งตัวช่วยในการบูต rbenv ลงในเชลล์ ตัวช่วยนี้เป็นส่วนหนึ่งของคำแนะนำในการติดตั้งที่แนะนำ แต่เป็นทางเลือก เนื่องจากผู้ใช้ขั้นสูงสามารถตั้งค่างานต่อไปนี้ได้ด้วยตนเอง นี่คือสิ่งที่คำสั่งทำเมื่อเอาต์พุตได้ eval
โดยเชลล์ระหว่างการเริ่มต้นระบบ:
เพิ่มไฟล์ปฏิบัติการ rbenv
ให้กับ PATH หากจำเป็น
เพิ่มไดเร็กทอรี ~/.rbenv/shims
ไปที่ PATH นี่เป็นข้อกำหนดเพียงอย่างเดียวสำหรับ rbenv ในการทำงานอย่างถูกต้อง
ติดตั้ง bash shell เสร็จสิ้นสำหรับคำสั่ง rbenv
สร้าง shims rbenv ใหม่ หากขั้นตอนนี้ทำให้การเริ่มต้นเชลล์ของคุณช้าลง คุณสามารถเรียกใช้ rbenv init -
ได้โดยใช้แฟล็ก --no-rehash
ติดตั้งโปรแกรมเลือกจ่ายงาน "sh" บิตนี้ยังเป็นทางเลือก แต่อนุญาตให้ rbenv และปลั๊กอินเปลี่ยนตัวแปรในเชลล์ปัจจุบันของคุณ ทำให้คำสั่งเช่น rbenv shell
เป็นไปได้
คุณสามารถเรียกใช้ rbenv init -
เพื่อตัวคุณเองเพื่อตรวจสอบสคริปต์ที่สร้างขึ้น
ความเรียบง่ายของ rbenv ทำให้ง่ายต่อการปิดการใช้งานชั่วคราวหรือถอนการติดตั้งออกจากระบบ
หากต้องการ ปิดใช้งาน rbenv ในการจัดการเวอร์ชัน Ruby ของคุณ เพียงแสดงความคิดเห็นหรือลบบรรทัด rbenv init
ออกจากการกำหนดค่าการเริ่มต้นเชลล์ของคุณ การดำเนินการนี้จะลบไดเร็กทอรี rbenv shims ออกจาก PATH และการเรียกใช้ในอนาคต เช่น ruby
จะดำเนินการเวอร์ชัน Ruby ของระบบ โดยข้าม rbenv ไปโดยสิ้นเชิง
ในขณะที่ปิดใช้งาน rbenv
จะยังคงสามารถเข้าถึงได้บนบรรทัดคำสั่ง แต่แอป Ruby ของคุณจะไม่ได้รับผลกระทบจากการเปลี่ยนเวอร์ชัน
หากต้องการ ถอนการติดตั้ง rbenv โดยสมบูรณ์ ให้ทำตามขั้นตอน (1) จากนั้นลบไดเร็กทอรีราก rbenv สิ่งนี้จะ ลบเวอร์ชัน Ruby ทั้งหมด ที่ติดตั้งภายใต้ `rbenv root`/versions/
:
rm -rf "$(rbenv root)"
หากคุณได้ติดตั้ง rbenv โดยใช้ตัวจัดการแพ็คเกจ ขั้นตอนสุดท้ายคือการลบแพ็คเกจ rbenv:
brew uninstall rbenv
sudo apt purge rbenv
sudo pacman -R rbenv
การทดสอบดำเนินการโดยใช้ Bats:
$ bats test
$ bats test/<file>.bats
โปรดส่งคำขอดึงและแจ้งข้อบกพร่องในตัวติดตามปัญหา