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