我正在编写一个可以与Sinatra和Rails一起使用的gem,但是,gem依赖项根据开发人员使用gem的框架而有所不同。
如果它是一个rails应用程序,我们需要"sass-rails"和"coffee-rails"。如果它是一个Sinatra应用程序,我们需要"sass"和"coffee-script"。
理想情况下,bundler 只会根据此 gem 加载到哪个框架来安装必要的 gem,但我似乎无法弄清楚如何有条件地指定依赖项。
任何建议将不胜感激。
我建议你不要这样做。这将是黑客和不可靠的。
然而,你能做的就是分而治之!构建一个与框架无关且仅处理逻辑的 gem 的通用版本,我们称之为 yourgem-core
,然后您可以基于第一个 gem 构建另外两个 gem,称为 yourgem-rails
和 yourgems-sinatra
。
它要好得多,只有yourgem-core
中的逻辑和逻辑测试,只有yourgem-rails
中的rails集成测试,只有sinatra集成测试在yourgem-sinatra
您可以在捆绑器中使用:group
选项。
参考: http://bundler.io/v1.5/groups.html