2010-08-27 36 views
28

Trình quản lý phiên bản Ruby cho phép chúng tôi sử dụng tệp .rvmrc trong mỗi dự án để thiết lập phiên bản ruby ​​và gem được đặt để tải. Tệp này có nên được kiểm tra trong kiểm soát nguồn không? Hay liệu điều này có quá nhiều về môi trường làm việc của các nhà phát triển khác không?Bạn có kiểm tra tệp rvmrc của mình không?

Trả lời

31

Quản lý kiểm soát nguồn chủ yếu là khoảng khả năng tái sản xuất: bạn có thể tạo lại phiên bản nỗ lực phát triển dựa trên những gì bạn đã lưu trữ trong SCM không?

Nếu tệp .rvmrc là cần thiết cho bất kỳ nhà phát triển nào trong dự án của bạn để có thể làm việc (với các tạo tác phù hợp), thì có, bạn nên phiên bản nó.

Như đã đề cập trong RVM Best Practices:

số 2 - Kiểm tra rvmrc của bạn vào kiểm soát nguồn.

Bằng cách kiểm tra rvmrc đã nói trên trong điều khiển nguồn dọc theo ứng dụng của bạn, bạn đảm bảo rằng tất cả người dùng đều có môi trường nhất quán khi họ đang sử dụng rvm.

Bằng cách tự động cài đặt gemset và tương tự (ví dụ: kiểm tra rvmrc trong kho lưu trữ rvm-site hoặc rvmrc repostory của TEDxPerth), bạn cũng bắt đầu đơn giản như thay đổi thư mục.

Trên hết, bạn cũng có thể tự động triển khai thiết lập môi trường ứng dụng cụ thể của mình.

các nhà phát triển khác có thể biến sử dụng của gemsets trên RVM của họ với:

echo rvm_ignore_gemsets_flag=1 >> ~/.rvmrc 

này sẽ làm cho họ sử dụng gemset mặc định luôn.

+0

điểm thú vị. Tôi giữ rvmrc trong thư mục nhà của tôi, sẽ phải xem xét làm khác. –

+4

Điều này có buộc các nhà phát triển khác trong nhóm của bạn sử dụng một gemset có cùng tên với người tạo .rvmrc không? – ybakos

+3

Tôi thường không bao gồm một gemset trong rvmrc nếu dự án đang sử dụng bundler. Nếu nó không sử dụng bundler thì hãy đặt cho nó một tên gemset khớp với dự án với cờ --create để nó được tạo tự động. –

11

Tôi thực sự khuyên bạn không nên giữ .rvmrc trong SCM. Có hai lý do cụ thể:

  1. Nếu bạn sử dụng gemsets bạn thực thi các nhà phát triển khác để sử dụng gemset cùng (trong khi một số có thể thích để có tất cả đá quý của họ trong gemset toàn cầu).

  2. Bạn gây khó khăn cho (các) nhà phát triển khác chạy dự án trên một phiên bản Ruby khác. Chắc chắn, về quá trình sản xuất, nó có thể chạy trên 1.9.2-p290, nhưng tại sao tôi không được phép chạy ứng dụng cục bộ trên 1.9.3-p0?

Nói chung nó thực thi quá nhiều vào mỗi nhà phát triển (giống câu chuyện như database.yml, mà cũng không nên được giữ trong SCM). Một lưu ý trong README của dự án "chạy sản xuất" phiên bản Ruby là đủ imo.

+0

Tôi nghĩ rằng nó cũng phụ thuộc vào dự án.Tôi có một tình huống mà các nhà phát triển chạy một số phiên bản ruby ​​của cùng một dự án (các nền tảng khác nhau, yêu cầu) từ sản xuất - theo thiết kế. * Các bài kiểm tra * của chúng tôi cho chúng tôi biết rằng mọi thứ đều hoạt động đúng. Sự tự do thay đổi hồng ngọc cho phép chúng tôi chẩn đoán các sự cố về phiên bản cụ thể và chạy điểm chuẩn. – foz

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