2

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

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

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

任何建议将不胜感激。

4

2 回答 2

3

我建议你不要那样做。这将是骇人听闻且不可靠的。

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

好多了,只有逻辑和逻辑测试yourgem-core,只有rails集成测试yourgem-rails,只有sinatra集成测试yourgem-sinatra

于 2014-02-18T09:26:37.883 回答
0

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

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

于 2014-02-18T06:43:47.297 回答