Penjelasan singkat: rbenv bekerja dengan menghubungkan ke lingkungan Anda PATH
. Konsepnya sederhana, tetapi iblis ada dalam rinciannya; sendok penuh di bawah ini.
Pertama, rbenv menciptakan shims untuk semua perintah ( ruby
, irb
, rake
, gem
dan sebagainya) di semua versi Anda terpasang Ruby. Proses ini disebut pengulangan . Setiap kali Anda menginstal Ruby versi baru atau memasang permata yang menyediakan perintah, jalankan rbenv rehash
untuk memastikan setiap perintah baru tidak diikutsertakan.
Shims ini hidup dalam satu direktori ( ~/.rbenv/shims
secara default). Untuk menggunakan rbenv, Anda hanya perlu menambahkan direktori shims di bagian depan PATH
:
export PATH="$HOME/.rbenv/shims:$PATH"
Kemudian setiap kali Anda menjalankan ruby
dari baris perintah, atau menjalankan skrip yang dibaca oleh shebang #!/usr/bin/env ruby
, sistem operasi Anda akan menemukannya ~/.rbenv/shims/ruby
terlebih dahulu dan menjalankannya alih-alih ruby
executable lain yang mungkin telah Anda instal.
Setiap shim adalah skrip Bash kecil yang pada gilirannya berjalan rbenv exec
. Jadi dengan rbenv di jalur Anda, irb
sama dengan rbenv exec irb
, dan ruby -e "puts 42"
setara dengan rbenv exec ruby -e "puts 42"
.
The rbenv exec
tokoh perintah apa versi Ruby yang ingin Anda gunakan, kemudian menjalankan perintah yang sesuai untuk versi itu. Begini caranya:
- Jika
RBENV_VERSION
variabel lingkungan diatur, nilainya menentukan versi Ruby untuk digunakan.
- Jika direktori kerja saat ini memiliki
.rbenv-version
file, isinya digunakan untuk mengatur RBENV_VERSION
variabel lingkungan.
- Jika tidak ada
.rbenv-version
file di direktori saat ini, rbenv mencari setiap direktori induk untuk suatu .rbenv-version
file sampai menyentuh root sistem file Anda. Jika ditemukan, isinya digunakan untuk mengatur RBENV_VERSION
variabel lingkungan.
- Jika
RBENV_VERSION
masih belum disetel, rbenv mencoba mengaturnya menggunakan konten ~/.rbenv/version
file.
- Jika tidak ada versi yang ditentukan di mana saja, rbenv mengasumsikan Anda ingin menggunakan Ruby "sistem" —yaitu versi apa pun yang akan dijalankan jika rbenv tidak ada di jalur Anda.
(Anda dapat mengatur versi Ruby khusus proyek dengan rbenv local
perintah, yang membuat .rbenv-version
file di direktori saat ini. Demikian pula, rbenv global
perintah memodifikasi ~/.rbenv/version
file.)
Dipersenjatai dengan RBENV_VERSION
variabel lingkungan, rbenv menambah ~/.rbenv/versions/$RBENV_VERSION/bin
bagian depan Anda PATH
, kemudian mengeksekusi perintah dan argumen yang diteruskan rbenv exec
. Voila!
Untuk melihat secara seksama apa yang terjadi di bawah tenda, coba setel RBENV_DEBUG=1
dan jalankan perintah Ruby. Setiap perintah Bash yang dijalankan rbenv akan ditulis ke terminal Anda.
Sekarang, rbenv hanya peduli dengan beralih versi, tetapi ekosistem plugin yang berkembang akan membantu Anda melakukan segalanya mulai dari menginstal Ruby hingga mengatur lingkungan Anda , mengelola "permata" dan bahkan mengotomatisasibundle exec
.
Saya tidak yakin apa yang harus dilakukan dukungan IRC dengan beralih versi Ruby, dan rbenv dirancang untuk menjadi sederhana dan cukup dimengerti untuk tidak memerlukan dukungan. Tetapi jika Anda membutuhkan bantuan, pelacak masalah dan Twitter hanya dengan beberapa klik saja.
Pengungkapan: Saya adalah penulis rbenv, ruby-build, dan rbenv-vars.