Làm cách nào để sử dụng chỉ định phiên bản ruby ​​cho shell script với rbenv?


8

Tôi sẽ viết một số kịch bản ngắn bằng ruby. Và tôi muốn chỉ định phiên bản ruby ​​bằng shebang hoặc theo một cách khác.

Tôi sẽ sử dụng tập lệnh trong nhiều môi trường. Tôi đang sử dụng rbenv trong các phần mở rộng, nhưng không chắc phiên bản ruby ​​nào được cài đặt.

Kịch bản phải thất bại nếu phiên bản chỉ định của ruby ​​không được cài đặt.

Tôi làm nó như thế nào? Có cách nào tốt mà tôi nên làm theo?

Câu trả lời:


7

Theo các tài liệu chính thức , có vẻ như bạn chỉ cần thêm tiền tố vào tập lệnh của mình như thế này:

#!/usr/bin/env ruby

Và sau đó thực hiện một trong những điều sau đây để cho biết rbenvphiên bản nào của Ruby sẽ sử dụng:

trích đoạn: https://github.com/sstephenson/rbenv

Chọn phiên bản Ruby

Khi bạn thực hiện shim, rbenvxác định phiên bản Ruby nào sẽ sử dụng bằng cách đọc nó từ các nguồn sau, theo thứ tự sau:

  1. Biến RBENV_VERSIONmôi trường, nếu được chỉ định. Bạn có thể sử dụng rbenvlệnh shell để đặt biến môi trường này trong phiên shell hiện tại của bạn.

  2. Tệp đầu tiên .ruby-versionđược tìm thấy bằng cách tìm kiếm thư mục của tập lệnh mà bạn đang thực thi và từng thư mục mẹ của nó cho đến khi đến thư mục gốc của hệ thống tệp của bạn.

  3. Tệp đầu tiên .ruby-versionđược tìm thấy bằng cách tìm kiếm thư mục làm việc hiện tại và từng thư mục mẹ của nó cho đến khi đến thư mục gốc của hệ thống tệp của bạn. Bạn có thể sửa đổi .ruby-versiontệp trong thư mục làm việc hiện tại bằng rbenvlệnh cục bộ.

  4. Các ~/.rbenv/versiontập tin toàn cầu . Bạn có thể sửa đổi tập tin này bằng cách sử dụng rbenvlệnh toàn cầu. Nếu không có tệp phiên bản toàn cầu, rbenvgiả sử bạn muốn sử dụng "hệ thống" Ruby, tức là bất kỳ phiên bản nào sẽ được chạy nếu rbenvkhông có trong đường dẫn của bạn.

Sau đó, bạn có thể sử dụng lệnh này để tạo một .ruby-versiontệp trong thư mục cùng với tập lệnh Ruby.

$ rbenv local 1.9.3-p327

Không dùng nữa; Mỗi tài liệu được chỉ định; Bây giờ, khi bạn chạy tập lệnh hoặc binstub trong ứng dụng có tệp phiên bản .ruby, rbenv sẽ tự động sử dụng phiên bản Ruby được chỉ định của ứng dụng, bất kể chúng chạy từ thư mục nào.
AnneTheAgile
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.