我即将将更大项目的主要功能提取到红宝石中。
我创建的小框架使用了一些额外的宝石,用于不同的导入/导出选项。即
我不希望gem的用户在不需要时安装和加载所有gem。
这可能吗?
答案 0 :(得分:0)
初始化程序中的代码只是代码...您可以让您的gem-user通过一组配置选项,并且只有在存在这些选项时才会加载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
使用“已定义?”因此,如果他们根本没有设置,宝石将不会尝试加载。这也意味着您可以将它们默认为您喜欢的任何内容。