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.
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.
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
).
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.
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.
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
?
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
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 đó.