Другое

Сделать --no-document по умолчанию для установки gem

Узнайте, как настроить RubyGems для пропуска генерации документации по умолчанию. Ускорьте установку gem с помощью --no-document в ~/.gemrc. Полное руководство с советами по устранению неполадок.

Как сделать --no-ri --no-rdoc по умолчанию для команды gem install?

Я не использую документацию RI или RDoc из гемов, которые устанавливаю на своих компьютерах или серверах, так как полагаюсь на другие источники документации. Каждый раз при установке гема он генерирует документацию RI и RDoc по умолчанию, потому что я забываю включить флаги --no-ri --no-rdoc. Есть ли способ настроить RubyGems так, чтобы эти флаги были поведением по умолчанию для всех установок гемов?

Чтобы сделать --no-ri --no-rdoc по умолчанию для gem install, вы можете настроить RubyGems, добавив флаг --no-document (который заменяет более старые флаги --no-ri --no-rdoc) в ваш файл конфигурации ~/.gemrc. Это будет автоматически пропускать генерацию документации для всех установок gem, не требуя от вас каждый раз вручную указывать эти флаги.

Содержание

Проблема генерации документации

При установке Ruby gems с помощью gem install, RubyGems автоматически генерирует документацию RI и RDoc по умолчанию. Этот процесс генерации документации может значительно замедлять установку gem, особенно для больших gem или при одновременной установке нескольких gem. Для разработчиков, которые в основном используют онлайн-документацию, исходный код или другие справочные материалы, эта автоматическая генерация создает ненужные накладные расходы.

Старые флаги --no-ri и --no-rdoc использовались для отключения генерации документации RI (Ruby Interactive) и RDoc соответственно. Начиная с версии RubyGems 2.0.0, они были заменены более унифицированным флагом --no-document, который отключает всю генерацию документации.


Настройка RubyGems с помощью ~/.gemrc

Наиболее надежный способ установить флаги по умолчанию для установок gem — это создание или редактирование файла ~/.gemrc, который является файлом конфигурации RubyGems. Этот файл использует формат YAML и позволяет указывать параметры по умолчанию для всех команд gem.

Создание или редактирование ~/.gemrc

Сначала проверьте, существует ли у вас уже файл ~/.gemrc:

bash
ls -la ~/.gemrc

Если файл не существует, создайте его с помощью вашего предпочитаемого текстового редактора:

bash
nano ~/.gemrc

Пример базовой конфигурации

Вот минимальная конфигурация, которая отключает генерацию документации:

yaml
---
gem: --no-document

Пример комплексной конфигурации

Для более полной настройки вы можете включить другие полезные параметры:

yaml
---
:update_sources: true
:sources:
  - https://rubygems.org
:backtrace: false
:bulk_threshold: 1000
:verbose: false
gem: --no-document

Эта конфигурация:

  • Автоматически обновляет источники gem
  • Использует официальный репозиторий RubyGems
  • Отключает backtrace для более чистого вывода
  • Устанавливает порог для пакетной обработки для лучшей производительности
  • Делает --no-document по умолчанию для всех операций gem

Примечание: Строка gem: --no-document — это ключ, который указывает RubyGems пропускать генерацию документации для всех установок и обновлений.


Использование современного флага --no-document

Начиная с RubyGems 2.0.0, флаг --no-document заменил более старую комбинацию --no-ri --no-rdoc. Этот унифицированный подход более удобен в поддержке и легче запоминается.

Эквиваленты флагов

  • --no-ri --no-rdoc (устаревший) = --no-document (современный)
  • --document=rdoc (только RDoc) = --document (вся документация)

Конфигурация для отдельных команд

Если вы хотите применять эти флаги только к определенным командам (таким как install и update), вы можете настроить их отдельно:

yaml
---
install: --no-document
update: --no-document

Этот подход дает вам более детальный контроль над тем, когда генерация документации отключена.


Альтернативные подходы к настройке

Системная настройка с помощью /etc/gemrc

Для системной настройки, влияющей на всех пользователей, вы можете создать или отредактировать /etc/gemrc. Синтаксис такой же, как для пользовательского файла ~/.gemrc:

yaml
---
gem: --no-document

Однако учтите, что некоторые системы (особенно те, которые используют RVM) могут переопределять системные настройки.

Использование переменных окружения

Хотя для этого конкретного случая это менее распространено, вы также можете использовать переменные окружения:

bash
export GEMOPTS="--no-document"

Но этот подход обычно не рекомендуется для настройки, так как он менее постоянный и может быть легко упущен из виду.

Переопределение из командной строки

Если вам нужно временно переопределить вашу конфигурацию по умолчанию, вы можете использовать флаг --norc:

bash
gem install some_gem --document

Это проигнорирует ваши настройки ~/.gemrc и сгенерирует документацию для этой конкретной установки.


Проверка вашей конфигурации

После настройки вашего файла ~/.gemrc вы должны проверить, что он работает правильно:

Тестовая установка

Установите тестовый gem и наблюдайте за выводом:

bash
gem install bundler

Если ваша конфигурация работает правильно, вы не должны видеть в выводе никаких сообщений о генерации документации.

Проверка файла конфигурации

Вы также можете проверить, что считывает RubyGems из вашей конфигурации:

bash
gem env

Ищите путь config_file, чтобы подтвердить, что он считывается из вашего файла ~/.gemrc.


Совместимость с Bundler

Если вы используете Bundler для управления зависимостями, вы можете задаться вопросом, как эта настройка влияет на операции bundle install. По умолчанию Bundler учитывает вашу конфигурацию RubyGems, поэтому флаг --no-document также должен применяться к gem, установленным через Bundler.

Однако, если вам нужно явно контролировать генерацию документации для операций Bundler, вы можете использовать:

bash
bundle config set --local no_document true

Это устанавливает специфическую для Bundler конфигурацию, которая переопределяет глобальные настройки RubyGems для операций bundle.


Устранение распространенных проблем

Конфигурация не работает

Если ваша конфигурация, кажется, не действует:

  1. Проверьте расположение файла: Убедитесь, что вы редактируете ~/.gemrc (пользовательский), а не /etc/gemrc (системный)
  2. Проверьте синтаксис: YAML чувствителен к отступам. Убедитесь, что ваш gem: --no-document правильно отформатирован
  3. Проверьте наличие переопределения: Некоторые инструменты, такие как RVM или rbenv, могут иметь собственную конфигурацию, которая переопределяет вашу

Совместимость с версиями RubyGems

Флаг --no-document доступен в RubyGems 2.0.0 и более поздних версиях. Если вы используете более старую версию, вам нужно будет использовать устаревшие флаги:

yaml
gem: --no-ri --no-rdoc

Проблемы с правами доступа

Если вы не можете создать или отредактировать ~/.gemrc, проверьте права доступа к файлу:

bash
chmod 644 ~/.gemrc

Конфликты конфигурации

Если у вас несколько файлов конфигурации (системный и пользовательский), RubyGems загрузит их в порядке приоритета. Пользовательский (~/.gemrc) обычно переопределяет системные (/etc/gemrc) настройки.

Источники

  1. Как сделать --no-ri --no-rdoc по умолчанию для gem install? - Stack Overflow
  2. Как установить флаги --no-ri и --no-rdoc по умолчанию для установки Gem – devgem.io
  3. Как глобально отключить rdoc и ri во время установки gem - Honeybadger Developer Blog
  4. Настройка RubyGems для неустановки документации по умолчанию - makandracards
  5. –no-ri --no-rdoc по умолчанию при установке Ruby Gem (пример) - coderwall
  6. Как глобально отключить ri и rdoc во время установки gem - Anne Richardson

Заключение

Сделать --no-ri --no-rdoc по умолчанию для gem install просто с помощью конфигурации RubyGems. Добавив gem: --no-document в ваш файл ~/.gemrc, вы можете устранить ненужную генерацию документации и ускорить установку ваших gem. Современный флаг --no-document обеспечивает чистую замену устаревшим флагам, сохраняя ту же функциональность.

Для оптимальной производительности:

  • Используйте ~/.gemrc для пользовательской конфигурации
  • Предпочитайте --no-document устаревшим флагам
  • Комбинируйте с другими настройками, ориентированными на производительность, такими как :backtrace: false
  • Протестируйте вашу конфигурацию на простой установке gem

Это изменение конфигурации сэкономит вам время во время разработки и уменьшит использование диска за счет ненужных файлов документации, при этом все еще позволяя генерировать документацию при необходимости с помощью флага --document.

Авторы
Проверено модерацией
Модерация