Ruby Gems с гибкими гем-зависимостями? - PullRequest
4 голосов
/ 31 августа 2010

Я собираюсь извлечь основные функциональные возможности более крупного проекта в рубиновую жемчужину.

Небольшой созданный мною фреймворк использует несколько дополнительных гемов для разных вариантов импорта / экспорта. Т.е..

  • FasterCSV (для ruby ​​1.8) для импорта / экспорта csv
  • Nokogiri для CSV импорта / экспорта
  • GraphViz для графа ...
  • PDF
  • ...

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

Возможно ли это вообще?

1 Ответ

0 голосов
/ 14 сентября 2010

Код в вашем инициализаторе - это просто код ... вы можете попросить своего пользователя gem пройти через набор параметров конфигурации и сделать так, чтобы зависимости config.gem загружались только при наличии этих параметров. Один из способов сделать это - настроить глобальные значения в config environemtn. например, в config / environment.rb:

CSV_EXPORTS = XML_EXPORTS = true
PDF_EXPORTS = false

Тогда в своем собственном камне вы бы написали:

config.gem 'fastercsv' if defined?(CSV_EXPORTS)
config.gem 'nokogiri'  if defined?(XML_EXPORTS)
if defined?(PDF_EXPORTS)
  config.gem 'prawn' 
  config.gem 'prawn-layout'
end
# etc 

использовать "определен?" так что если они вообще не настроены, драгоценные камни не будут пытаться загружаться. Это также означает, что вы можете использовать их по умолчанию.

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