我正在编写一个可以与 Sinatra 和 Rails 一起使用的 gem,但是,gem 依赖项根据开发人员使用 gem 的框架而有所不同。
如果它是一个 Rails 应用程序,我们需要 'sass-rails' 和 'coffee-rails' 如果它是 sinatra 应用程序,我们需要 'sass' 和 'coffee-script'
理想情况下, bundle 程序只会根据该 gem 加载到的框架来安装必要的 gem,但我似乎不知道如何有条件地指定依赖项。
如有任何建议,我们将不胜感激。
最佳答案
我建议你不要这样做。这将是黑客行为且不可靠。
但是你能做的就是分而治之!构建一个与框架无关并且仅处理逻辑的 gem 通用版本,我们将其称为 yourgem-core
,然后您可以基于第一个 gem 构建另外两个 gem,称为 yourgem- Rails
和 yourgems-sinatra
。
好多了,yourgem-core
中只进行逻辑和逻辑测试,yourgem-rails
中只进行rails集成测试,yourgem-中只进行sinatra集成测试西纳特拉
关于ruby-on-rails - 有条件地需要基于 Rails 或 Sinatra 框架的 Gemfile 中的 gem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21846067/