Làm cách nào để “kích hoạt” một phiên bản khác của một viên ngọc cụ thể?


85

Tôi muốn chuyển đổi giữa rails 2.3.10 làm đá quý "hoạt động" cho hệ điều hành của mình, để tôi có thể gọi nó trong dòng lệnh.

có khả năng làm cái này không? Tôi không sử dụng rvm. Có lẽ đã đến lúc bắt đầu.

Tôi đã thử gem install rails --version=2.3.10, nhưng điều đó chỉ đảm bảo rằng phiên bản đá quý đó đã được cài đặt, nó không đưa nó vào /usr/bin/rails.

(Tôi đã sử dụng Bundler cho các ứng dụng của mình - nhưng vẫn chưa cần bất kỳ kiểm soát chính xác nào đối với đá quý ở cấp hệ điều hành cho đến nay)

Câu trả lời:


154

Nếu vấn đề của bạn là chạy mã nhị phân của một phiên bản nhất định, thì:

rails --version # => the latest version
rails _2.3.10_ --version # => Rails 2.3.10

Mẫu này ( gem-binary _gem-version_) hoạt động cho bất kỳ hệ nhị phân đá quý nào.

Hy vọng nó giúp.


1
Ồ, điều này vừa giúp tôi tiết kiệm một ngày cuối tuần dài trong văn phòng, cảm ơn!
Lachlan McD.

2
Đó dường như không làm việc cho tất cả trong số họ: rackup _1.4.3_ --version<br> Rack 1.1 (Release: 1.4)
Chloe

1
rackup chỉ in phiên bản phát hành (xem Rack.versionRack.release github.com/rack/rack/blob/master/lib/rack.rb ). Hãy thử gem install rack --version=1.3 && rackup _1.3.0_ --version, nó sẽ inRack 1.1 (Release: 1.3)
Daniel Vartanov

Và chỉ trong trường hợp, đây là cách hoạt động:which rackup | xargs cat
Daniel Vartanov

Cảm ơn Daniel rất hữu ích
tuyến đường

12

Sử dụng RVM

RVM cho phép bạn quản lý các phiên bản khác nhau của Ruby và Gems. Bạn có thể cài đặt một phiên bản của ruby, chẳng hạn như

rvm install 1.9.2

Sau đó, bạn có thể sử dụng nó bằng cách sử dụng:

rvm use 1.9.2

Sử dụng các loại đá quý cụ thể trên cơ sở mỗi dự án với các bộ đá quý.

Nếu bạn muốn thêm không gian tên, bạn có thể thiết lập các bộ đá quý; thư mục sẽ chứa các đá quý cụ thể cho một dự án cụ thể.

rvm gemset create myproject

thì bạn có thể sử dụng chúng như vậy:

rvm use 1.9.2@myproject

Tự động hóa

Để tự động hóa quá trình chuyển đổi các gem , hãy bật các tệp .ruby-version.ruby-gemset trong thư mục gốc dự án của bạn. Bật phiên bản Ruby và tên của bộ đá quý bạn muốn sử dụng bên trong chúng và RVM sẽ chọn bộ đá quý chính xác khi bạn cd vào thư mục dự án của mình.

Cài đặt đá quý vào bộ đá quý của bạn

Cài đặt các viên ngọc của bạn vào bộ đá quý của bạn theo cách thông thường bằng cách sử dụng Bundler nếu bạn đang sử dụng:

bundle install

hoặc chỉ sử dụng cái cũ thông thường:

gem install mygem

Các viên ngọc sẽ đi trong bộ đá quý phù hợp.

Giải pháp thay thế RVM

Bạn cũng có thể muốn xem rbenv, nó thực hiện công việc tương tự.


1
vấn đề với rvm là (như bạn đã đề cập) rằng nó xử lý các phiên bản ruby ​​và các phiên bản đá quý. rbenv chỉ xử lý các phiên bản ruby ​​và cho phép Bundler xử lý các phiên bản đá quý.
daslicious

7

Bạn có thể sử dụng RVM

Sau đó, bạn cũng có thể sử dụng Bundler để quản lý các phụ thuộc đá quý.

Trong của bạn Gemfile

gem "rails", "2.3.10"

và trong ứng dụng của bạn

require 'rubygems'
require 'bundler/setup'

và bạn đã hoàn thành.


Thêm vào đó, nếu bạn muốn có một số kịch bản để chỉ "nhìn thấy" các phiên bản khai báo trong Gemfile của bạn, hãy chạy chúng như "exec bó <script-name>", ví dụ:bundle exec warble
rustyx

3

CHỈNH SỬA: Vừa thấy đề cập RVM của bạn trong bài đăng. Chắc chắn là con đường để đi.

Bạn sẽ muốn cài đặt RVM - đó là một gói tuyệt vời cho phép bạn quản lý các viên Rubys khác nhau và các bộ đá quý khác nhau trên cùng một máy. Bạn có thể chuyển đổi qua lại một cách hoàn toàn dễ dàng.

Đây là hướng dẫn cài đặt: http://rvm.beginrescueend.com/rvm/install/

Khi bạn đã hoàn tất mọi thứ, bạn có thể thấy tất cả các ruby ​​đã cài đặt của mình tại dòng lệnh với ví dụ: với rvm listvà chuyển đổi với rvm use ruby-head. RVM giữ các viên ngọc trên mỗi viên ruby ​​riêng biệt, điều này sẽ giúp giải đáp thắc mắc của bạn.

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.