Saya menginstal rbenv sesuai dengan petunjuk github. Saya menjalankan OSX tapi saya sudah mencoba ini pada Ubuntu 12,04 VM dan mendapat hasil yang sama. Berikut ini adalah apa yang saya dapatkan di terminal saya ketika saya mencoba mengubah versi ruby:
rbenv versions
* 1.9.3-p0 (set by /Users/user/.rbenv/version)
1.9.3-p125
rbenv global
1.9.3-p0
rbenv rehash
ruby -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]
which ruby
/usr/bin/ruby
Adakah yang tahu mengapa rbenv tidak mengganti versi ruby seperti yang dianggapnya? Juga tidak ada file .rbenv di direktori lokal yang akan menyebabkan versi ruby default ke 1.8.7
rbenv local
rbenv: no local version configured for this directory
Jawaban:
Periksa apakah PATH berisi $ HOME / .rbenv / shims dan $ HOME / .rbenv / bin
Juga periksa apakah Anda memiliki yang berikut di ~ / .bash_profile Anda jika menggunakan bash atau ~ / .zshenv jika menggunakan zsh
CATATAN: Pastikan ini adalah pengaturan terakhir di ~ / .bash_profile Anda. Saya mengalami masalah di mana saya menginstal program yang memperbarui .bash_profile dan mengatur ulang PATH.
Terakhir, pastikan
$HOME
folder Anda tidak memiliki.ruby-version
file yang mungkin Anda buat secara tidak sengaja jika dilakukan$ rbenv local <ruby-version>
di$HOME
folder Anda . Melakukan$ rbenv global <ruby-version>' modifies the
$ HOME / .rbenv / versifile, and the existence of a
.ruby-versifile in the
$ HOMEfolder would override the version set by
$ HOME / .rbenv / version`.Dari dokumen:
sumber
exec $SHELL -l
(lower L)export RBENV_ROOT="$HOME/.rbenv" if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
Bekerja cukup bagus :) Juga memeriksa PATH init setelah deklarasi rbenv.Saya memperbaikinya dengan menambahkan berikut ini ke ~ / .bash_profile saya:
Inilah yang didokumentasikan di https://github.com/sstephenson/rbenv .
Dari apa yang saya tahu tidak ada direktori ~ / .rbenv / bin, yang disebutkan dalam pos oleh @rodowi.
sumber
export PATH="$HOME/.rbenv/bin:$PATH
bekerja (seperti yang gagal bagi saya)?~/.rbenv/bin/
jika Anda menginstal melalui homebrew atau linuxbrew. Dan Anda tidak harus mengatur sendiri shims path, sepertirbenv init
halnya ini (dan banyak lagi) untuk Anda .Ini mungkin pertanyaan lama, tetapi Google membawa saya ke sini dan, demi anak cucu, saya pikir saya akan berbagi.
Masalah saya tetap ada setelah banyak solusi yang direkomendasikan di atas. Seperti OP, saya menginstal rbenv dan kemudian versi ruby, tetapi laptop saya default ke sistem. Apa yang saya abaikan adalah ketika saya berlari:
TKI, itu masih default ke sistem. Cepat
beralih ke versi baru.
sumber
Langkah pertama adalah mencari tahu ruby mana yang dipanggil:
which ruby
Sistem Anda mengatakan:
/usr/bin/ruby
Ini BUKAN shim yang digunakan oleh rbenv, yang (pada MacOS) akan terlihat seperti:
/Users/<username>/.rbenv/shims/ruby
Shim sebenarnya adalah skrip yang bertindak seperti pengalihan ke versi ruby yang Anda atur.
rbenv global 1.9.3 rbenv local --unset rbenv shell --unset
Saya merekomendasikan bahwa untuk pemecahan masalah Anda membatalkan versi "lokal" spesifik proyek, dan versi "shell" khusus shell dan hanya menguji menggunakan pengaturan versi "global" yang ditentukan dalam file teks biasa di ~ / .rbenv / verion yang hanya akan menjadi nomor versi "1.9.3" dalam kasus Anda. Anda dapat melakukan "ls -laG" di root folder proyek Anda (bukan folder home) untuk memastikan tidak ada lagi file ".ruby-version" di sana.
Anda dapat menggunakan "versi rbenv" untuk mengidentifikasi versi rbenv mana yang diatur untuk digunakan (dan lokasi serta nama file yang mengaturnya).
rbenv versions
TIDAK ADA MASALAH YANG: sampai Anda mengatur jalur dengan benar.
Gunakan ini untuk memastikan * MacOS Anda akan mematuhi Anda:
eval "$(rbenv init -)"
Diikuti oleh:
which ruby
Untuk memastikannya terlihat seperti: / Pengguna //.rbenv/shims/ruby
Kemudian tambahkan baris ke profil Anda sehingga berjalan setiap kali Anda membuka jendela terminal baru:
~/.bash_profile eval "$(rbenv init -)"
Ada cara lain untuk memodifikasi path, jangan ragu untuk mengganti salah satunya, daripada menjalankan rbenv init.
CATATAN: pasang kembali Rails dengan:
gem install rails
Jika Anda mencoba menjalankan Ruby on Rails, maka Anda harus menjalankan semua ini terlebih dahulu, lalu pasang gem rails lagi. Pemasangan Rails sebelumnya akan menggunakan jalur kode keras ke ruby yang salah dan beberapa hal lain akan berada di tempat yang salah, jadi pasang saja permata itu lagi.
NB. Jika MacOS Anda tidak mematuhi Anda (* disebutkan di atas) maka Anda mungkin harus menemukan cara lain untuk memodifikasi jalur Anda, tetapi itu tidak akan menjadi masalah karena "Mac hanya berfungsi";)
sumber
Saya baru saja menemukan masalah yang sama. Apa yang saya lakukan adalah menghapus rbenv (via homebrew) dan menginstalnya kembali. Saya juga menambahkan
ke ~ / .bash_profile ketika saya menginstal ulang rbenv. Bekerja dengan baik sekarang.
sumber
Dalam kasus saya mengubah
~/.zshenv
tidak berhasil. Saya harus membuat perubahan di dalam~/.zshrc
.Saya baru saja menambahkan:
di bagian atas
~/.zshrc
, restart shell dan keluar.Periksa apakah berhasil:
sumber
Jalankan perintah ini
Tambahkan rbenv ke bash sehingga memuat setiap kali Anda membuka terminal
ini akan menyelesaikan Referensi masalah Anda
sumber
Jika Anda menggunakan bash , buka
dan tambahkan baris berikut (jika belum ada di sana)
Jika Anda menggunakan Zsh, buka
dan tambahkan baris kode yang sama, di akhir file .zshrc.
Maka cukup restart terminal Anda dan itu akan baik-baik saja sekarang.
sumber
rbenv help shell
"Mengatur versi Ruby khusus shell dengan mengatur variabel lingkungan 'RBENV_VERSION' di shell Anda. Versi ini mengesampingkan versi khusus aplikasi lokal dan versi global. Harus berupa string yang cocok dengan versi Ruby yang dikenal oleh rbenv. Sistem string versi khusus ' 'akan menggunakan sistem default Anda Ruby. Jalankan versi rbenv' untuk daftar versi Ruby yang tersedia. "
Asalkan rbenv diinstal dengan benar, ruby -v akan sesuai dengan
rbenv shell 1.9.3-p125
sumber
Bagi saya cara termudah untuk digunakan
rbenv
bersama denganzsh
menambahrbenv
ke bagian plugin di.zshrc
config. Dalam kasus saya, tampilannya mirip dengan:Setelah itu tidak ada masalah saat menginstal, beralih, menggunakan versi ruby dengan bantuan
rbenv
.Pikiran untuk memulai kembali sesi terminal Anda setelah membuat perubahan.
sumber
Saya memiliki masalah yang sama, tetapi disebabkan oleh Homebrew:
Entah bagaimana saya telah menginstal Ruby melalui Homebrew juga, dan jalur Homebrew berada di depan jalur rbenv di saya
$PATH
. Menjalankanbrew uninstall ruby
memperbaikinya untukku.sumber
Lari:
Setelah saya menjalankannya, ketika saya mengatur versi rbenv lokal saya:
kemudian versi
ruby -v
saya dan sayarbenv local
bertepatan.Catatan: Anda mungkin juga ingin keluar dari direktori tempat Anda berada dan kemudian kembali ke dalamnya, saya telah memperhatikan bahwa itu perlu bagi saya untuk menyelesaikan pekerjaan.
sumber
Saya datang ke masalah yang sama. Memperbaiki ini dengan menjalankan perintah "rbenv global" dengan "sudo". Saya pikir itu adalah masalah izin.
pembaruan: Saya akhirnya menemukan solusinya. Ada satu file "versi" yang sama pada mac saya, yang berada di bawah "/usr/local/Cellar/rbenv/0.3.0/". Saya pikir itu diciptakan oleh kesalahan sesekali. Anda harus menghapusnya.
sumber
Ketika saya memiliki gejala-gejala ini, masalahnya ternyata instalasi gagal setengah jalan untuk versi Ruby baru yang saya coba untuk beralih, tanpa saya sadari. Cara mengatasinya adalah menghapus & menginstalnya kembali.
(Ini berarti bahwa meskipun ruby 1.9.3 muncul di daftar rbenv versi yang tersedia, ruby tidak dapat dieksekusi di jalan yang diasumsikan oleh rbenv. Karena rbenv mencoba mengubah versi ruby Anda hanya dengan menambahkan lokasi ke jalur Anda, jika tidak ada yang benar-benar ada di lokasi yang diawali, OS Anda akan dengan senang hati melanjutkan pencarian jalur default Anda dan menemukan versi sistem Anda, dalam kasus saya seperti pertanyaan 1.8.7.)
sumber
untuk pengguna kerang ikan
sumber
Ini terjadi pada saya tepat setelah saya menginstal ulang
rbenv
. Rupanya saya punya.ruby-version
file di direktori home saya, menentukan versi yang tidak ada lagi. Setelah saya menghapus file, semuanya berfungsi.sumber
Pastikan baris terakhir Anda
.bash_profile
adalah:sumber
Jawaban yang diterima menyarankan untuk menambahkan yang berikut:
Ini tidak akan berfungsi pada Mac OSX, yang menjadi referensi OP. Bahkan, jika Anda menginstal rbenv via
brew install rbenv
, yang merupakan satu-satunya metode instalasi di Mac OSX, karenacurl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash
FAIL akan ada di OSX, maka executable rbenv akan diinstal di:Namun, bahkan di OSX, root rbenv akan tetap berada di direktori $ HOME:
Apa artinya ini? Itu berarti ketika Anda menginstal rubi, mereka akan menginstal di direktori home yang diberikan di bawah .rbenv:
Sekarang instalasi brew melakukan beberapa pekerjaan yang harus Anda lakukan secara manual di Linux. Misalnya, di Linux, Anda harus menginstal ruby-build secara manual sebagai plugin:
Ini sudah dilakukan dengan instalasi homebrew. Ada satu langkah penting yang harus dilakukan dalam instalasi homebrew, seperti pada instalasi Linux. Anda harus menambahkan rbenv shims ke jalur Anda. Untuk melakukan itu, ketika shell Anda mulai, Anda harus mengevaluasi perintah berikut (yang pada gilirannya akan menambahkan rbenv shims ke awal $ PATH Anda):
Sekarang saat Anda berlari
echo $PATH
, Anda akan melihat rbenv shims:Sekarang periksa versi ruby Anda dan itu akan mencerminkan rubi rbenv diinstal:
sumber
Anehnya, versi rbenv tidak mengatur file .rbenv Periksa dengan: ls -ltra -> untuk melihat apakah rbenv ditulis
sumber
Anda bisa mencoba menggunakan chruby ? chruby tidak bergantung pada shims, bukan hanya memodifikasi
PATH
,GEM_HOME
,GEM_PATH
.sumber
Saya lupa menghapus rvm sebelum menginstal rbenv. Saya menghapus rvm dan menginstal ulang rbenv, tetapi sistem masih tidak menggunakan versi Ruby yang ditetapkan sebagai global oleh rbenv. Saya mencoba mematikan Terminal, tetapi hanya berhasil setelah saya me-restart seluruh mesin.
sumber