Могу ли я указать динамические зависимости для моего драгоценного камня на основе ввода в командной строке? - PullRequest
1 голос
/ 26 мая 2011

Intro : я работаю над гемом, который по умолчанию извлекает информацию из некоторых XML-данных и выполняет некоторую обработку документа.Я использую нокогири для разбора XML.Однако я хочу позволить пользователю самому проанализировать XML и передать необходимую информацию для запуска моих методов обработки данных, если он не хочет устанавливать nokogiri или уже проанализировал XML.

Вопрос : Есть ли способ разрешить пользователю указывать при установке gem, что он не хочет устанавливать зависимость nokogiri?Например (здесь очень волнительно),

gem install crazy_gem --no-nokogiri

и в gemspec, возможно, что-то вроде

Gem::Specification.new do |s|
  ...
  s.add_dependency 'nokogiri' unless Proc.new { install_flags('no-nokogiri') }
  ...
end

[править] Я не хочу слишком фокусироваться на gemspecприведенный выше код, поскольку я знаю, что он не работает - это просто пример такого рода вещи , который я хочу сделать.[/ edit]

gem install crazy_gem --ignore-dependencies прекрасно работает, пока не появятся дополнительные зависимости.

Ответы [ 2 ]

3 голосов
/ 27 мая 2011

Я не думаю, что вы можете делать именно то, что вам нужно, но есть возможное решение, если вы переосмыслите то, что делает ваш драгоценный камень.Вместо драгоценного камня, который по умолчанию анализирует некоторый XML и обрабатывает данные, но при необходимости позволяет передавать предварительно проанализированные данные, как насчет драгоценного камня, который в основном связан с обработкой, но при желании проанализирует XML для вас (еслиу вас есть Nokogiri).

Для этого просто оставьте Nokogiri вне ваших зависимостей gemspec (вы можете добавить его как зависимость для разработки или требование ).

Внутри вашего кода убедитесь, что вы вызываете require 'nokogiri' только в блоке begin..end с rescue LoadError и обрабатываете его соответствующим образом.

0 голосов
/ 26 мая 2011

Gemspecs превращаются в статические файлы во время сборки, так что это не будет работать.Вы можете попробовать использовать -f, который обходит проверки зависимостей.

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