рейки пучок чистим


88

Після оновлення набору у вас з’являться деякі дорогоцінні камені, які можуть бути застарілими, оскільки встановлена ​​нова версія цього дорогоцінного каменя. Під bundleвиконуваним файлом такої команди немає, тобто bundle clean. Як можна позбутися цих застарілих самоцвітів?

Це спроба зменшити розмір кулі в моїй програмі рейок.

Відповіді:


132

Якщо ви використовуєте Bundler 1.1 або пізнішу версію, ви можете використовувати її bundle cleanтак, як ви собі уявляли. Це зайве, якщо ви використовуєте bundle install --path(Bundler управляє розташуванням, яке ви вказали за допомогою --path, тому бере на себе відповідальність за видалення застарілих дорогоцінних каменів), але якщо ви використовували Bundler для встановлення самоцвітів як системних дорогоцінних каменів, тоді bundle clean --forceвсі системні камені, які не вимагається вашим Gemfile. Очевидно очевидне застереження: не робіть цього, якщо у вас є інші програми, які покладаються на системні дорогоцінні камені, яких немає у вашому Gemfile!

Pat Shaughnessy має хороший опис bundle cleanта інші нові доповнення в пакеті 1.1 .


30
Для тих, хто використовує rvm, зверніть увагу, що bundle clean --forceце не стосується ваших глобальних дорогоцінних каменів, а лише тих, що є у вашому поточному наборі. Таким чином, ми bundle clean --forceотримуємо той самий результат, що й швидший, ніж rvm gemset emptyнаступний bundle install.
Gabe Kopley

19
ВІДМОВА ПРО ВІДПОВІДАЛЬНІСТЬ: "Пучок чистий - сила" може підірвати велику кількість дорогоцінних каменів, якщо ви не будете обережні. Це має бути перший рядок цієї відповіді ... тим більше, що вона має стільки голосів. БУДЬ ОБЕРЕЖНИЙ!
jerrylroberts

36

Якщо ви використовуєте RVM, ви можете використовувати його rvm gemset emptyдля поточного gemset - ця команда видалить усі дорогоцінні камені, встановлені в поточному gemset (сам gemset залишиться на місці). Потім запустіть bundle install, щоб встановити фактичні версії самоцвітів. Також переконайтеся, що ви не видаляєте такі загальні дорогоцінні камені, як граблі, пакети тощо, під час rvm gemset empty(якщо це так, встановіть їх вручну через gem installдо bundle install).


22

Якщо ви використовуєте RVM, ви можете встановити свої дорогоцінні камені в набори самоцвітів . Таким чином, коли ви хочете виконати повне очищення, ви можете просто видалити набір самоцвітів, який, у свою чергу, видаляє всі встановлені в ньому дорогоцінні камені. Інший варіант - просто видалити невикористані дорогоцінні камені та повторно запустити bundle installкоманду.

Оскільки пакувальник має бути інструментом bundle cleanкерування версіями самоцвітів для кожного проекту, він не надає команди. Це означало б можливість видалення дорогоцінних каменів, пов’язаних з іншими проектами, що було б небажано. Це означає, що пакувач - це, мабуть, неправильний інструмент для управління вашим каталогом самоцвітів. Моя особиста рекомендація полягала б у використанні наборів каменів RVM для виділення пісочниці у певні проекти або рубінові версії.


41
Не потрібно видаляти gemset, ви можете просто ввести 'rvm gemset empty gemset_name', а потім знову запустити 'bundle install'.
JAG

Чудове пояснення. Знання того, що стосується пакету, допомагає. Дякую.
Вольте

9
пучок чистий - сила зробить цю справу
матрос

з rvm, протріть папку .rvm / gems / ruby-xxxxxx / специфікації, якщо "bundle install" відмовляється повторно завантажувати gems.
barbacan

@JAG Я хотів би додати, що вам потрібно "очистити gemset" після очищення gemset, щоб мати можливість викликати bundle install
maleta

13

Чесно кажучи, у мене були проблеми з циклічними залежностями пакету, і найкращий спосіб це зробити rm -rf .bundle. Збережіть собі головний біль і просто використовуйте молоток.


1
Мені довелося це зробити, щоб змусити мене перестати прислуховуватися про те, що "ти повинен викликати bundle install за допомогою --no-deployment". Дякую
Кевін

2
Дякую за ідею. Хоча мені допомогло використання більшого молотка. rvm implode --forceа потім перевстановити rvm
Райан

1

Я припускаю, що ви встановлюєте дорогоцінні камені в vendor/bundle? Якщо так, чому б просто не видалити всі дорогоцінні камені та не зробити чистоту bundle install?


мій каталог постачальників відстежує лише активи та встановлені плагіни. I'm on Rails 3.1
iGbanam

Тоді в чому причина видалення невикористаних самоцвітів, якщо вони не скопійовані при розгортанні? Вони не займають так багато місця.
Леонід Шевцов

я розгортаю цей додаток rails в інтрамережі; це означає, що я обробляю файли та середовище локально. якщо ви знаєте будь-які рішення, які я можу використати для цього, поділіться.
iGbanam


0

Просто видаліть застарілі дорогоцінні камені зі свого Gemfile. Якщо ви говорите про Heroku (ви про це не згадували), тоді slug компілюється кожен новий випуск, просто використовуючи поточний вміст цього файлу.


це не обов'язково для героку. Я хочу зменшити розмір самого додатка для рейок.
iGbanam

0

Просто виконайте, щоб очистити застарілі дорогоцінні камені та видалити попередження про друк після комплекту.

bundle clean --force

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.