如何解决我可以基于命令行输入为我的gem指定动态依赖项吗?
| 简介:我正在开发一个gem,默认情况下,它将信息从一些XML数据中提取出来,并对文档进行某种处理。我正在使用nokogiri解析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
[edit]我不想过多地关注上面的gemspec代码,因为我知道它不起作用-它只是我想做的事情的一个示例。 [/编辑]
gem install crazy_gem --ignore-dependencies
非常有用,直到有其他依赖项为止。
解决方法
我不认为您可以完全按照自己的意愿去做,但是如果您重新构造宝石的用途,则可以找到可行的解决方案。而不是默认情况下,gem解析一些XML并处理数据,但可以选择地允许您传入预解析的数据,而不是主要与处理有关的gem,但是可以选择地为您解析XML(如果你有Nokogiri)。
为此,只需将Nokogiri排除在gemspec依赖项之外即可(您可以将其添加为开发依赖项或需求)。
在代码内部,请确保仅在带有ѭ5的
begin..end
块中调用require \'nokogiri\'
并进行适当处理。
,Gemspec在构建时会变成静态文件,因此将无法正常工作。您可以尝试使用-f
,它绕过依赖性检查。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。