有条件地要求基于Rails或Sinatra框架的Gemfile中的gem



我正在编写一个可以与Sinatra和Rails一起使用的gem,但是,gem依赖项根据开发人员使用gem的框架而有所不同。

如果它是一个rails应用程序,我们需要"sass-rails"和"coffee-rails"。如果它是一个Sinatra应用程序,我们需要"sass"和"coffee-script"。

理想情况下,bundler 只会根据此 gem 加载到哪个框架来安装必要的 gem,但我似乎无法弄清楚如何有条件地指定依赖项。

任何建议将不胜感激。

我建议你不要这样做。这将是黑客和不可靠的。

然而,你能做的就是分而治之!构建一个与框架无关且仅处理逻辑的 gem 的通用版本,我们称之为 yourgem-core ,然后您可以基于第一个 gem 构建另外两个 gem,称为 yourgem-railsyourgems-sinatra

它要好得多,只有yourgem-core中的逻辑和逻辑测试,只有yourgem-rails中的rails集成测试,只有sinatra集成测试在yourgem-sinatra

您可以在捆绑器中使用:group选项。

参考: http://bundler.io/v1.5/groups.html

相关内容

  • 没有找到相关文章

最新更新