2012-01-16 31 views
26

Có thể sử dụng nhiều phiên bản đường ray bằng rbenv (ví dụ: 2.3 và 3.1) không? Điều này thật dễ dàng với những viên đá quý trong rvm, nhưng tôi tự hỏi cách tốt nhất là làm gì bây giờ tôi đã chuyển sang rbenv (ngoài ra, tôi đang tìm cách để làm điều đó mà không có rbenv-gemset).Làm thế nào để bạn sử dụng nhiều phiên bản đường ray với rbenv?

+0

Câu hỏi liên quan: http://stackoverflow.com/questions/9771172/rbenv-surviving-without-gemsets (Tôi đã bỏ lỡ câu hỏi này khi tôi hỏi tôi, có lẽ vì lỗi đánh máy rbvenv) –

Trả lời

51

không chắc chắn nếu bạn có câu trả lời cho điều này, nhưng tôi nghĩ tôi sẽ cung cấp những gì tôi đã làm và dường như nó hoạt động.

Vì vậy, khi bạn cài đặt rbenv và bạn sử dụng nó để cài đặt phiên bản ruby ​​cụ thể, bạn có thể cài đặt nhiều phiên bản đường ray cho ruby ​​đó.

Bước 1. Cài đặt bất kỳ phiên bản (s) của đường ray bạn muốn mỗi phiên bản ruby ​​

% RBENV_VERSION=1.9.2-p290 rbenv exec gem install rails --version 3.0.11 

Bằng việc sử dụng "RBENV_VERSION = 1.9.2-p290" tiền tố trong dòng lệnh của bạn, bạn xác định ruby ​​rbenv cần quan tâm.

Sau đó, sau đó với lệnh "rbenv exec", bạn có thể cài đặt đường ray. Chỉ cần sử dụng cờ phiên bản như trong ví dụ để chỉ định phiên bản bạn muốn. Không chắc chắn nếu bạn có thể cài đặt nhiều phiên bản trong một shot, nhưng tôi chỉ cần chạy lệnh này nhiều lần khi cần thiết để cài đặt mỗi phiên bản tôi muốn.

Lưu ý: Tất cả điều này sẽ được quản lý trong thư mục rbenv của bạn, vì vậy nó hoàn toàn an toàn và được chứa.

BƯỚC 2. Tạo dự án đường ray mới bằng cách chỉ định phiên bản đường ray bạn muốn.

% RBENV_VERSION=1.9.2-p290 rbenv exec rails _3.0.11_ new my_project 

BƯỚC 3. Đừng quên để đi vào dự án đó và thiết lập các phiên bản rbenv ruby ​​địa phương.

% cd my_project 
% rbenv local 1.9.2-p290 

Bây giờ nếu bạn muốn xóa dự án này, chỉ cần xóa nó như bình thường.

Nếu bạn muốn xóa/quản lý một phiên bản đường ray từ đá quý rbenv, bạn có thể sử dụng lệnh ngọc bình thường, chỉ cần tiền tố dòng lệnh của bạn với:

% RBENV_VERSION=1.9.2-p290 rbenv exec gem {some command} 

Và dĩ nhiên, bạn có thể xóa một phiên bản ruby ​​hoàn chỉnh và tất cả các miếng chêm của nó, vv được quản lý trong rbenv khá dễ dàng. Tôi thích cách tự chứa mọi thứ.

Hy vọng điều này sẽ hữu ích.

Để tham khảo, đây là một bước đi khá tốt thông qua ít nhất là một số công cụ này:

http://ascarter.net/2011/09/25/modern-ruby-development.html

+0

cảm ơn câu trả lời này, nhưng tôi tự hỏi không thể bạn chỉ cần tạo dự án đường ray và chỉ định phiên bản đường ray bên trong dự án và sau đó thực hiện cài đặt bó? bạn có thể giải thích câu trả lời của bạn sẽ là giải pháp tốt hơn không? Tôi không có kinh nghiệm nên sẽ rất hữu ích nếu biết. cảm ơn – Leahcim

+0

bằng cách này, khi bạn tạo dự án với tiền tố đó, bạn có sử dụng tiền tố đó cho mọi lệnh bạn thực hiện trong dự án không? tiền tố + gói cài đặt? tiền tố + gem install {gem name} etc? – Leahcim

+0

Không, bạn không cần tiếp tục sử dụng tiền tố. Câu trả lời của tôi ở đây là một chút đáng lo ngại vì RVM là một trình quản lý gói hoàn chỉnh (phiên bản ruby ​​+ ray), và tôi đã cố gắng minh họa một cách để làm điều gì đó tương tự với rbenv, không giống như RVM chủ yếu là một người quản lý ruby. OP đã hỏi về việc sử dụng nhiều phiên bản railsv với rbenv, vì vậy tôi đã mô tả cách cài đặt phiên bản rails cụ thể cho phiên bản ruby ​​cụ thể (trong đó bạn có thể cài đặt nhiều), sau đó chọn cái nào để sử dụng khi tạo dự án với ruby ​​đó phiên bản. Điều này sẽ cung cấp cho bạn một cái gì đó tương tự như RVM. – Nathan

18

Có một plugin rbenv gọi rbenv-gemset mà nên cư xử tương tự như rvm gemset -Command nhưng vì rbenv không bao giờ có ý định làm việc theo cách này, tôi đã không thử nó.

Tôi thường quản lý các phiên bản Rails với Bundler khi Nathan đề xuất trong các nhận xét của một trong các câu trả lời khác.Tôi tạo ra một Gemfile với mong muốn phiên bản Rails của tôi, chạy bundle install, tạo ra các ứng dụng Rails, hãy để nó thay thế Gemfile và để Bundler tiếp quản:

mkdir my-rails-app 
cd my-rails-app 
echo "source 'https://rubygems.org'" > Gemfile 
echo "gem 'rails', '3.2.17'" >> Gemfile 
bundle install 

bundle exec rails new . --force --skip-bundle 
bundle update 

Nếu bạn muốn biết thêm chi tiết, tôi đã viết an article on my blog về nó.

Hy vọng điều đó sẽ hữu ích!

+0

đó là một bài viết hay. Nhờ bundler – onmyway133

+0

đó là giải pháp tôi đang tìm kiếm +1 – Qchmqs

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