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

标签 ruby-on-rails rubygems sinatra bundler gemspecs

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

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

理想情况下, bundle 程序只会根据该 gem 加载到的框架来安装必要的 gem,但我似乎不知道如何有条件地指定依赖项。

如有任何建议,我们将不胜感激。

最佳答案

我建议你不要这样做。这将是黑客行为且不可靠。

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

好多了,yourgem-core中只进行逻辑和逻辑测试,yourgem-rails中只进行rails集成测试,yourgem-中只进行sinatra集成测试西纳特拉

关于ruby-on-rails - 有条件地需要基于 Rails 或 Sinatra 框架的 Gemfile 中的 gem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21846067/

相关文章:

ruby - 无法构建 gem native 扩展

ruby-on-rails - Rails 2.3.5 中用于 oAuth2 消费者和提供者功能的 Gem

javascript - 在 d3 javascript 中的圆形对象中添加图像?

ruby-on-rails - 按父 ID 对记录进行分组

macos - 您没有/Library/Ruby/Gems/2.3.0 目录的写权限。 (mac 用户)

ruby - 运行 ruby​​ 应用程序时 Sinatra 不加载

ruby - Sinatra 与纯 Ruby 数据库

ruby - 使用 Ruby/Sinatra 和 Rest-Graph gem 在 Facebook 应用程序中获取 signed_request

ruby-on-rails - Rails rake 并行化阈值和注意事项

mysql - 如何在 Ruby On Rails 3 中为 MySQL 表设置别名?