2015-05-21 18 views
6

Ai đó hãy giúp tôi hiểu làm thế nào một ứng dụng ruby ​​quản lý cả gemfile và gems rvm cho một ứng dụng. Nếu tôi hiện đang sử dụng một Gemset, với một loạt các đá quý được cài đặt, và tôi cũng có đá quý trong gemfile của tôi, là ứng dụng Ruby sử dụng đá quý từ gemfile hoặc từ gemset cho ứng dụng?RVM Gemsets và Ruby Gemfile nhầm lẫn

Trả lời

4

Để hiểu điều này, bạn cần phải quay lại và hiểu cách đá quý ruby ​​hoạt động nói chung.
Hãy bắt đầu với một hệ thống không có rvm hoặc Gemfile.
Khi bạn cài đặt một viên ngọc qua "cài đặt đá quý", nó sẽ đi vào vị trí đá quý hệ thống.
Bất cứ khi nào bạn viết kịch bản ruby ​​và yêu cầu đá quý, nó sẽ được chọn từ đó.

Bây giờ giả sử bạn cần sử dụng phiên bản khác nhau của đá quý cho các dự án khác nhau. Đây là nơi mà bundler đi vào. Bạn tạo một Gemfile và khi bạn "bundle install" các gem được liệt kê trong Gemfile sẽ được đưa vào và được sử dụng trong bối cảnh của dự án đó. Bạn sẽ cần phải thực hiện "bundle install" để đưa chúng vào và sau đó "bundle exec ruby" để chạy với phiên bản gem. Bạn có thể có nhiều phiên bản đá quý và chọn một phiên bản để sử dụng. Nếu bạn không đi qua bundler bạn sẽ sử dụng bất cứ điều gì là trong hệ thống.

Rvm ngay bây giờ. Giả sử bạn muốn thay đổi "hệ thống" đá quý và phiên bản ruby ​​theo cách có tổ chức. Đây là cơ bản những gì một gemset rvm. bởi sự kỳ diệu của indirection thông qua đường dẫn, bạn có thể cài đặt đá quý cho các bộ đá quý khác nhau và giả vờ là đá quý hệ thống.

Vì vậy, đá quý và gemfiles là trực giao với nhau. nếu bạn sử dụng một tập tin đá quý, các viên đá quý sẽ được cài đặt trong bộ đá quý, nhưng bạn thường không quan tâm đến điều đó nếu bạn sử dụng trình bao.

Thông thường bạn sẽ muốn sử dụng Gemfile.

+0

Điều này giúp ích rất nhiều. Cảm ơn! –