Kısa açıklama: rbenv, ortamınızın içine girerek çalışır PATH
. Kavram basit, ama şeytan ayrıntılarda; tam kepçe aşağıda.
İlk olarak, rbenv yaratır şim tüm komutlar için ( ruby
, irb
, rake
, gem
vb) Ruby tüm yüklü sürümleri arasında. Bu işleme rehashing denir . Ruby'nin yeni bir sürümünü her yüklediğinizde veya komut sağlayan bir mücevher yüklediğinizde, rbenv rehash
yeni komutların yandığından emin olmak için çalıştırın .
Bu şimler tek bir dizinde yaşar ( ~/.rbenv/shims
varsayılan olarak). Rbenv kullanmak için, shims dizinini yalnızca önünüze eklemeniz gerekir PATH
:
export PATH="$HOME/.rbenv/shims:$PATH"
Daha sonra ruby
komut satırından her çalıştırdığınızda veya shebang'ın okuduğu bir komut dosyasını çalıştırdığınızda #!/usr/bin/env ruby
, işletim sisteminiz ~/.rbenv/shims/ruby
ilk önce bulabilir ve yükleyebileceğiniz diğer ruby
yürütülebilir dosyalar yerine çalıştırır.
Her şim, sırayla çalışan küçük bir Bash betiğidir rbenv exec
. Yani yolunuzdaki rbenv irb
ile eşdeğerdir rbenv exec irb
ve ruby -e "puts 42"
eşdeğerdir rbenv exec ruby -e "puts 42"
.
rbenv exec
Eğer kullanım istediğiniz Ruby hangi sürümünü komut rakamlar, daha sonra bu sürümün ilgili komutu çalıştırır. Bunu nasıl yapacağınız aşağıda açıklanmıştır:
- Eğer
RBENV_VERSION
ortam değişkeni ayarlanır, değeri kullanımına Ruby sürümünü belirler.
- Geçerli çalışma dizininde bir
.rbenv-version
dosya varsa, içeriği RBENV_VERSION
ortam değişkenini ayarlamak için kullanılır .
.rbenv-version
Geçerli dizinde dosya yoksa , rbenv .rbenv-version
dosya sisteminizin kök dizinine ulaşana kadar her üst dizinde bir dosya arar . Biri bulunursa, içeriği RBENV_VERSION
ortam değişkenini ayarlamak için kullanılır .
- Eğer
RBENV_VERSION
hala ayarlanmazsa, rbenv çalışır içeriğini kullanarak ayarlamak için ~/.rbenv/version
dosyanın.
- Hiçbir yerde herhangi bir sürüm belirtilmemişse, rbenv "system" Ruby'yi kullanmak istediğinizi varsayar; yani, rbenv yolunuzda olmasaydı hangi sürümü çalıştırırsınız.
( Geçerli dizinde rbenv local
bir .rbenv-version
dosya oluşturan komutla projeye özgü bir Ruby sürümü ayarlayabilirsiniz . Benzer şekilde, rbenv global
komut ~/.rbenv/version
dosyayı değiştirir .)
Bir donanmış RBENV_VERSION
ortam değişkeni, rbenv ekler ~/.rbenv/versions/$RBENV_VERSION/bin
, aramalarınızdan önüne PATH
daha sonra geçirilen komuta ve argümanları execs, rbenv exec
. İşte bu kadar!
Tam olarak kaputun altında neler olduğuna bakmak için RBENV_DEBUG=1
bir Ruby komutu ayarlamayı ve çalıştırmayı deneyin . Rbenv'in çalıştırdığı her Bash komutu terminalinize yazılır.
Şimdi, rbenv sadece anahtarlama sürümleri ile ilgilidir, ancak eklentileri gelişen ekosistem size gelen her şeyi yapmak yardımcı olacaktır Ruby yüklemeden için ortamınızı ayarlama , "gemsets" yönetme ve hatta otomatik halebundle exec
.
IRC desteğinin Ruby sürümlerini değiştirmekle ne yapacağından emin değilim ve rbenv, destek gerektirmeyecek kadar basit ve anlaşılır olacak şekilde tasarlanmıştır. Ancak yardıma ihtiyacınız olursa, sorun izleyici ve Twitter yalnızca birkaç tıklama uzaklıktadır.
Açıklama: Ben rbenv, ruby-build ve rbenv-vars'in yazarıyım.