【问题标题】:Ruby Gems with flexible gem dependencies?具有灵活 gem 依赖项的 Ruby Gems?
【发布时间】:2011-04-06 05:37:17
【问题描述】:

我即将将一个大型项目的主要功能提取到一个 ruby​​ gem 中。

我创建的小框架使用了一些额外的 gem,用于不同的导入/导出选项。即。

  • 用于 csv 导入/导出的 FasterCSV(适用于 ruby​​ 1.8)
  • 用于 csv 导入/导出的 Nokogiri
  • GraphViz 用于图形 ...
  • PDF
  • ...

我不希望 gem 的用户在不需要时安装和加载所有 gem。

这可能吗?

【问题讨论】:

  • 你认为 graphviz 是一颗宝石吗?
  • graphviz 与 ruby​​-graphviz gem 一样。不是最好的例子

标签: ruby rubygems dependencies gem bundler


【解决方案1】:

初始化程序中的代码只是代码...您可以让 gem-user 传递一组配置选项,并使 config.gem 依赖项仅在这些选项存在时才加载。一种方法是让他们在 config environemtn 中设置全局值 例如在 config/environment.rb:

CSV_EXPORTS = XML_EXPORTS = true
PDF_EXPORTS = false

然后在你自己的 gem 中,你会写:

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 

使用“定义?”因此,如果他们根本没有设置,宝石将不会尝试加载。这也意味着您可以将它们默认为您喜欢的任何内容。

【讨论】:

    猜你喜欢
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多