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

时间:2014-02-18 06:37:21

标签: ruby-on-rails gem sinatra bundler gemspecs

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

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

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

我们非常感谢任何建议。

2 个答案:

答案 0 :(得分:3)

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

然而你能做的就是分而治之!构建一个与框架无关的gem的通用版本,只处理逻辑,我们称之为yourgem-core,然后你可以基于第一个构建另外两个gems,称为yourgem-rails和{{1} }。

更好,只有yourgems-sinatra中的逻辑和逻辑测试,只有yourgem-core中的rails集成测试,yourgem-rails中只有sinatra集成测试

答案 1 :(得分:0)

您可以在bundler中使用:group选项。

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