Câu hỏi đường ray bó sạch


Sau khi cập nhật một gói, bạn sẽ có một số đá quý có thể đã lỗi thời - vì phiên bản mới hơn của gem đó đã được cài đặt. Không có lệnh như vậy dưới bundle thực thi tức là bundle clean. Làm thế nào để loại bỏ những viên đá quý lỗi thời này?

Đây là một nỗ lực để giảm kích thước sên trong ứng dụng đường ray của tôi.


76
2017-10-26 15:36


gốc




Các câu trả lời:


Nếu bạn đang sử dụng Bundler 1.1 hoặc mới hơn, bạn có thể sử dụng bundle clean, như bạn tưởng tượng bạn có thể. Điều này là thừa nếu bạn đang sử dụng bundle install --path (Bundler quản lý vị trí bạn đã chỉ định bằng --path, do đó phải chịu trách nhiệm xóa bỏ các đá quý lỗi thời), nhưng nếu bạn đã sử dụng Bundler để cài đặt các đá quý làm đá quý hệ thống thì bundle clean --force sẽ xóa bất kỳ đá quý hệ thống nào mà Gemfile của bạn không yêu cầu. Hiển nhiên rõ ràng: đừng làm điều này nếu bạn có các ứng dụng khác dựa vào đá quý hệ thống không có trong Gemfile của bạn!

Pat Shaughnessy có mô tả hay về bundle clean và các bổ sung mới khác trong gói 1.1.


120
2018-04-17 11:47



Đối với những người sử dụng rvm, lưu ý rằng bundle clean --force không chạm vào đá quý toàn cầu của bạn, nhưng chỉ những viên đá quý hiện tại của bạn. Vì thế bundle clean --forcetạo ra kết quả tương tự và nhanh hơn rvm gemset empty theo dõi bởi bundle install. - Gabe Kopley
DISCLAIMER: "Bundle clean --force" có thể thổi bay một số lượng lớn đá quý nếu bạn không cẩn thận. Đó sẽ là dòng đầu tiên của phản ứng này ... đặc biệt là vì nó có rất nhiều phiếu bầu. HÃY CẨN THẬN! - jerrylroberts


Nếu bạn đang sử dụng RVM, bạn có thể sử dụng rvm gemset empty đối với gemset hiện tại - lệnh này sẽ loại bỏ tất cả các gem được cài đặt vào gemset hiện tại (gemset chính nó sẽ vẫn giữ nguyên). Sau đó chạy bundle install để cài đặt phiên bản đá quý thực tế. Ngoài ra hãy chắc chắn rằng bạn không xóa đá quý nói chung như rake, bundler và như vậy trong thời gian rvm gemset empty (nếu đúng như vậy, hãy cài đặt chúng theo cách thủ công qua gem install trước bundle install).


34
2018-01-25 22:23





Nếu bạn đang sử dụng RVM bạn có thể cài đặt đá quý của bạn vào đá quý. Bằng cách đó khi bạn muốn thực hiện một dọn dẹp hoàn toàn, bạn có thể chỉ cần loại bỏ gemset, từ đó loại bỏ tất cả các gem được cài đặt trong nó. Tùy chọn khác của bạn là chỉ cần gỡ cài đặt các đá quý chưa sử dụng của bạn và chạy lại bundle install chỉ huy.

Vì bundler có nghĩa là công cụ phiên bản gem cho từng dự án nên nó không cung cấp bundle clean chỉ huy. Làm như vậy sẽ có nghĩa là khả năng loại bỏ đá quý liên kết với các dự án khác là tốt, mà sẽ không được mong muốn. Điều đó có nghĩa rằng bundler có lẽ là công cụ sai để sử dụng để quản lý thư mục gem của bạn. Đề nghị cá nhân của tôi sẽ được sử dụng đá quý RVM để sandbox đá quý của bạn trong các dự án nhất định hoặc các phiên bản ruby.


21
2017-10-26 16:03



Không cần phải loại bỏ gemset, bạn chỉ cần gõ 'rvm gemset empty gemset_name' và sau đó chạy lại 'bundle install'. - JAG
Lời giải thích tuyệt vời. Biết rằng về bundler giúp. Cảm ơn. - Volte
bundle clean --force sẽ thực hiện công việc - sailor
Cảm ơn bạn, @sailor! - Joshua Muheim
với rvm, hãy xóa thư mục .rvm / gems / ruby-xxxxxx / thông số kỹ thuật nếu "gói cài đặt" từ chối tải lại đá quý. - barbacan


Thành thật mà nói, tôi đã có vấn đề với phụ thuộc gói tròn và cách tốt nhất để đi là rm -rf .bundle. Tự cứu mình khỏi đau đầu và chỉ dùng búa.


10
2017-12-12 14:44



thực sự đã không giúp tôi, cùng một lỗi. - holms
Tôi đã phải làm điều này để làm cho nó ngừng bugging tôi về "bạn phải gọi gói cài đặt với --no-triển khai". Cảm ơn - Kevin
Cảm ơn ý tưởng. Mặc dù đối với tôi, sử dụng một cái búa lớn hơn đã giúp. rvm implode --force và sau đó cài đặt lại rvm - Ryan


Tôi cho rằng bạn cài đặt đá quý vào vendor/bundle? Nếu vậy, tại sao không chỉ xóa tất cả đá quý và làm sạch bundle install?


1
2017-10-26 16:06



thư mục nhà cung cấp của tôi chỉ theo dõi tài sản và các plugin được cài đặt. Tôi đang ở trên Rails 3.1 - iGbanam
Sau đó, lý do để loại bỏ đá quý không sử dụng nếu chúng không được sao chép khi triển khai là gì? Họ không chiếm nhiều không gian đó. - Leonid Shevtsov
tôi đang triển khai ứng dụng đường ray này trên mạng nội bộ; nghĩa là tôi xử lý các tệp và môi trường cục bộ. nếu bạn biết về bất kỳ giải pháp nào tôi có thể sử dụng cho việc này, vui lòng chia sẻ. - iGbanam


Khi tìm kiếm câu trả lời cho cùng một câu hỏi tôi đã gặp gem_unused.
Bạn cũng có thể muốn đọc bài viết này: http://chill.manilla.com/2012/12/31/clean-up-your-dirty-gemsets/
Mã nguồn có sẵn trên GitHub: https://github.com/apolzon/gem_unused


1
2018-02-07 23:26





Chỉ cần loại bỏ các đá quý lỗi thời từ Gemfile của bạn. Nếu bạn đang nói về Heroku (bạn đã không đề cập đến điều đó) thì slug được biên dịch mỗi bản phát hành mới, chỉ sử dụng nội dung hiện tại của tệp đó.


0
2017-10-26 16:10



điều này không nhất thiết đối với heroku. Tôi muốn giảm kích thước của chính ứng dụng đường ray. - iGbanam