Sử dụng tệp rvmrc hoặc phiên bản ruby ​​để đặt một viên ngọc dự án với RVM?


230

Tôi sử dụng RVM, Trình quản lý phiên bản Ruby để chỉ định phiên bản Ruby và một bộ đá quý cho mỗi dự án Rails của tôi.

Tôi có một .rvmrctệp để tự động chọn phiên bản Ruby và gemet bất cứ khi nào tôi cdvào thư mục dự án.

Sau khi cài đặt RVM 1.19.0, tôi nhận được một tin nhắn

Bạn đang sử dụng .rvmrc, nó đòi hỏi phải tin tưởng, nó chậm hơn và không tương thích với các trình quản lý ruby ​​khác, bạn có thể chuyển sang .ruby-versionsử dụng rvm rvmrc to [.]ruby-versionhoặc bỏ qua cảnh báo này rvm rvmrc warning ignore /Users/userName/code/railsapps/rails-prelaunch-signup/.rvmrc, .rvmrcsẽ tiếp tục là tệp dự án mặc định trong RVM 1 và RVM 2, để bỏ qua cảnh báo cho tất cả các tập tin chạy rvm rvmrc warning ignore all.rvmrcs.

Tôi nên tiếp tục sử dụng .rvmrctệp của mình hay tôi nên chuyển sang một .ruby-versiontệp? Cái nào là tối ưu? Sự phân nhánh là gì?

Câu trả lời:


372

Nếu .rvmrctệp của bạn chứa mã shell tùy chỉnh, hãy tiếp tục sử dụng .rvmrcvì nó cho phép bạn bao gồm bất kỳ mã shell nào.

Nếu mục đích duy nhất của bạn là chuyển đổi các phiên bản Ruby, thì hãy sử dụng .ruby-versioncác công cụ chuyển đổi phiên bản Ruby khác như rbenv hoặc chruby . Tệp này cũng không yêu cầu tin tưởng vì nó chỉ là tên của phiên bản Ruby và sẽ không được thực thi dưới bất kỳ hình thức nào.

Nếu bạn sử dụng, .ruby-versionbạn có thể bao gồm @gemsettrong tệp nhưng điều này sẽ không tương thích với các trình chuyển đổi khác. Để duy trì khả năng tương thích, hãy sử dụng tên gemet trong một tệp riêng biệt .ruby-gemsetbị bỏ qua bởi các công cụ khác (nó chỉ hoạt động cùng với .ruby-version) .

Ví dụ: nếu bạn có một đơn giản .rvmrc:

rvm use 1.9.3@my-app

Nó có thể được chuyển đổi thành .ruby-version:

1.9.3

.ruby-gemset:

my-app

Hãy chắc chắn xóa .rvmrctệp vì nó được ưu tiên hơn bất kỳ tệp cấu hình dự án nào khác:

rm .rvmrc

9
Lưu ý rằng không phải tất cả các ứng dụng đều hỗ trợ các tệp .ruby-version và .ruby-Gemet mới hơn mà chỉ có .rvmrc. (Đặc biệt là RubyMine). Điều này tất nhiên sẽ ảnh hưởng đến sự lựa chọn của bạn về việc có nên chuyển sang hệ thống mới hay không. Tôi đã chỉ ra điều này trong một câu trả lời vì tôi mất rất nhiều thời gian để theo dõi điều này. Tuy nhiên, câu trả lời của tôi đã bị xóa vì một số lý do ..
giorgio

2
Có một liên kết đến bất kỳ tài liệu "chính thức" về điều này? Tôi bắt đầu xem xét cách thức hoạt động của nó trong trang RVM nhưng chỉ thấy một số đề cập mơ hồ về nó như là tệp rvmrc mới nhưng không có gì để làm việc này.
tuần

2
Nó không được ghi chép đầy đủ, nhưng đây là những gì chúng tôi đã có rvm.io/workflow/projects/#ruby-versions
mpapis

4
Chỉ cần đặt 1.9.3-p194 vào phiên bản .ruby không hoạt động đối với tôi. Tham khảo tài liệu trên, rvm --create --ruby-version use 1.9.3-p194thực hiện công việc và nội dung bên trong thực sự làruby-1.9.3-p194
Jinzhao Huo

2
Các phiên bản hiện tại của RubyMine không hỗ trợ kiểu phiên bản .ruby. Có thể xác nhận với 6.3.2
BeepDog

76

Cách nhanh chóng và dễ dàng để chuyển từ .rvmrc sang .ruby-version + .ruby-Gemet

rvm rvmrc to .ruby-version

1
Đúng, nhưng nó đặt [] xung quanh. vì một số lý do mà tôi đã không tìm ra. (có lẽ đây là một quy ước mà tôi không quen thuộc.)
zem

2
@zem [] trong [.]ruby-versionchỉ ra rằng dấu chấm là tùy chọn ; dấu ngoặc vuông là quy ước chung để biểu thị tính tùy chọn (nói chung, không phải bằng ruby.) Vì vậy, bạn có thể sử dụng tệp có tên "phiên bản ruby", không có dấu chấm và cũng sẽ được sử dụng. Điều này có thể hữu ích nếu bạn muốn hiển thị tệp nhiều hơn trên các hệ thống ẩn "tệp chấm" theo mặc định. Tôi đồng ý rằng nó không rõ ràng, mặc dù.
Matt Gibson

Nó nóiCould not load .rvmrc
Abdullah

4

Nếu bạn muốn tạo .ruby-version.ruby-gemsettệp theo cách ngắn gọn, bạn có thể sử dụng các lệnh như thế này:

rvm use 2.1.1@nancy --create

rvm --create --ruby-version 2.1.1@nancy

2

Bạn có thể thử cả hai. Đi đến thư mục gốc của dự án của bạn, tạo tệp .rvmrc ( touch .rvmrc), sau đó chỉnh sửa rvm use 2.0.0-p451@your_gemset(phiên bản ruby ​​và tên đá quý của bạn). Sau khi lưu tệp này, bạn có thể gõ lệnh này:

cd ../your_project(bạn đang ở trong thư mục your_project ) và tập lệnh trong .rvmrc sẽ thực thi.

RVM khuyên bạn nên sử dụng phiên bản ruby. Bạn có thể chạy lệnh này để chuyển từ .rvmrc sang .ruby-version

rvm rvmrc to .ruby-version

Những gì nó làm là tạo 2 tệp tên .ruby-version.ruby-Gemet và thêm dòng này

ruby-2.0.0-p451 trong phiên bản .ruby

your_gemset trong .ruby-gemet

Bạn có thể thử làm bằng tay nếu bạn muốn :)


0

Cài đặt rvm bằng cách sử dụng:

\curl -sSL https://get.rvm.io | bash -s stable --rails

Cài đặt các phiên bản ruby ​​khác nhau:

rvm install 1.8.7
rvm install 1.9.2

Chuyển sang phiên bản ruby ​​cụ thể. Ví dụ: 1.8.7:

rvm use 1.8.7

Để tạo đá quý:

rvm gemset create project_gemset

Và để sử dụng một gemet:

rvm gemset use project_gemset
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.