我制作了一个Gem,可选择使用Sentry或Airbrake进行记录,具体取决于ENV变量。我在我的Gemspec中有这些,但我只需要一个或另一个:
spec.add_runtime_dependency "sentry-raven"
spec.add_runtime_dependency "airbrake"
有没有办法只根据ENV变量包含最终用户需要的那个?
答案 0 :(得分:1)
您可能最好不要依赖这两个依赖项并添加到自述文件中,用户需要将依赖项添加到自己的Gemfile
。我已经看到一些宝石检查以查看定义的内容,如果他们找不到任何内容则会引发错误,并允许用户在其应用程序中配置要使用的工具。
答案 1 :(得分:0)
不,这是不可能的,原因很简单,Gemspec是在您的计算机上执行的,而不是用户的计算机上。执行 build Gem,而不是安装它。
RubyGems没有复杂的依赖系统,例如dpkg
/ APT有:宝石要么取决于另一个宝石,要么它不依赖。