Tôi khuyên bạn nên direnv . Nó là một công cụ chuyển đổi môi trường cho vỏ.
Trước mỗi dấu nhắc, nó sẽ kiểm tra sự tồn tại của tệp ".envrc" trong thư mục hiện tại và thư mục gốc. Nếu tệp tồn tại (và được ủy quyền), nó được tải vào một vỏ con bash và tất cả các biến được xuất sau đó được direnv thu thập và sau đó cung cấp vỏ hiện tại.
Dưới đây là cách sử dụng direnv với ruby-install
+ cài đặt ruby
Thêm cái này vào ~/.direnvrc
use_ruby() {
local ruby_root=$HOME/.rubies/$1
load_prefix "$ruby_root"
layout_ruby
}
Cài đặt ruby-install ( brew install ruby-install
) và cài đặt một bó hồng ngọc.
ruby-install ruby 1.9.3
ruby-install ruby 2.0.0
ruby-install ruby 2.2.0
Và sau đó tạo một vài liên kết tượng trưng cho thuận tiện:
ln -s .rubies/1.9 ruby-1.9.3-p*
ln -s .rubies/2.0 ruby-2.0.0
ln -s .rubies/2.2 ruby-2.2.0
Và cuối cùng trong bất kỳ dự án nào .envrc
:
use ruby 2.0
Điều này sẽ đặt tất cả các đá quý trong .direnv/ruby
thư mục của dự án (làm cho việc mở đá quý dễ dàng hơn). bundler sẽ đặt các tệp nhị phân của trình bao bọc .direnv/bin
(không còn nữa bundle exec
!).
+ rbenv
Cũng có thể sử dụng rbenv bằng cách thêm use rbenv
lệnh trong bất kỳ.envrc
tệp . Điều này sẽ kích hoạt rbenv, từ đó sẽ đưa các gói ruby vào PATH.
Lưu ý rằng không cần thiết phải cài đặt rbenv trong .bashrc hoặc .zshrc để làm việc này.
+ RVM
Đây là .envrc phức tạp nhất mà tôi sử dụng cho các dự án ruby:
rvm use 1.8.7
layout ruby
PATH_add .direnv/bundler-bin
rvm được sử dụng để chọn phiên bản ruby phù hợp với bạn
lệnh layout tự động đặt một số biến môi trường thông thường. Để bây giờ chỉ có bố trí ruby tồn tại. Những gì nó làm là đặt biến môi trường GEM_HOME và thư mục bin của nó vào đường dẫn của bạn. Bởi vì nó phụ thuộc vào phiên bản ruby, hãy đảm bảo gọi nó sau "rvm". Vì mỗi thư mục bố cục của ruby có GEM_HOME riêng, bạn không cần sử dụng các viên ngọc của rvm.
PATH_add chuẩn bị trước và mở rộng đường dẫn tương đối đã cho. Trong trường hợp đó, tôi sử dụng điều này để tách riêng các binstub của trình biên dịch khỏi các tập lệnh bin của riêng tôi vớibundle install --binstubs .direnv/bundler-bin
Nếu bạn muốn tìm hiểu chính xác những lệnh đó làm gì, bây giờ: cat direnv stdlib
| ít hơn