2011-10-06 33 views
17

Tôi có hai dự án trên máy tính của mình: - Ứng dụng Rails 2.3 cũ cần rubygems 1.6 và sẽ không chạy dưới rubygems 1.8; - Một ứng dụng mới hơn cần rubygems 1.8 và không chạy dưới rubygems 1.6.Sử dụng nhiều phiên bản rubygems với rvm?

Mỗi dự án có gemset RVM riêng của mình, nhưng tôi không thể tìm ra cách để cung cấp cho họ các phiên bản khác nhau của rubygems bản thân:

  • ngọc cập nhật --system [version] kết quả trong đá quý --version hiến cùng một câu trả lời trong cả hai;
  • rvm gemset [phiên bản] có cùng kết quả.

Làm cách nào để chạy rubygems 1.6.2 trong một dự án và 1.8.11 trong một dự án khác?


Để làm rõ, đây là những gì tôi muốn làm:

  • Trong thư mục A, có một .rvmrc với lệnh chọn gemset A và rubygems 1.6.2
  • Trong thư mục B , có một .rvmrc với các lệnh chọn gemset B và rubygems mới nhất
  • Có hai phiên đầu cuối mở cùng một lúc, một trong thư mục A và một trong thư mục B
  • Loại "viên ngọc --version" trong thư mục A và xem "1.6.2"
  • Loại "viên ngọc --version" trong thư mục B và xem "1.8.11"

Trả lời

17

Cách đúng là để tạo ra khác nhau được đặt tên (-n) cài đặt của ruby ​​bạn muốn đã cài đặt và đặt tên cho chúng theo phiên bản rubygem bạn muốn, chẳng hạn như

rvm --install use 1.9.2-nrg186 && rvm rubygems 1.8.6 && gem --list 
rvm --install use 1.9.2-nrg1810 && rvm rubygems 1.8.10 && gem --list 

Lý do là bạn chỉ có thể có 1 bản n của rubygems hoạt động một thời gian nhất định. Điều này cũng là do thực tế là mỗi ruby ​​xác định một sự phụ thuộc vào một phiên bản rubygems cụ thể mà phiên bản được biết hoặc được mong đợi làm việc với (bất kể nó có thể làm việc với nhau hay không).

Đây là cách dự kiến ​​để xử lý yêu cầu nhiều rubygems và để loại bỏ các vấn đề tiềm ẩn. Xem https://gist.github.com/1273035 để biết chi tiết cụ thể về điều này.

9

RVM có một tính năng mới cho này:

sử dụng "rvm rubygems 1.6.2" để chọn phiên bản rubygems đó.

rvm rubygems 1.6.2 

https://rvm.io/rubies/rubygems/ (xem: "RubyGems CLI API" về phía cuối trang)

http://groups.google.com/group/rubyversionmanager/browse_thread/thread/e39fc7827d2d22e8

+0

Điều này không trả lời được câu hỏi, cụ thể là cách sử dụng phiên bản khác nhau của 'gem' có thể thực thi được, không phải phiên bản khác nhau của các loại đá quý khác nhau. –

+0

chỉ nhận ra điều này là tốt, và thay đổi câu trả lời của tôi – Tilo

+1

Có vẻ tốt. Thử nghiệm nó ra và bạn có thể đặt nó trong một tập tin '.rvmrc' mà không gặp rắc rối gì. –

Các vấn đề liên quan