【问题标题】:Can gems have circular dependencies?宝石可以有循环依赖吗?
【发布时间】:2012-04-17 03:48:50
【问题描述】:

我开发了一个小型 gem 生态系统,某些功能将导致它们相互依赖。

RubyGems 是否支持循环依赖?换句话说,以这些规格推送 gem 是否安全?

Gem::Specification.new 'essentials' do |gem|
  gem.add_development_dependency 'development_tools'
end

Gem::Specification.new 'development_tools' do |gem|
  gem.add_runtime_dependency 'essentials'
end

【问题讨论】:

    标签: ruby rubygems dependencies dependency-management circular-dependency


    【解决方案1】:

    这在技术上不是循环依赖,因为每个依赖都是不同的类型。如果这是一个真正的循环依赖,我会建议将两者合并到一个 gem 中,但你的 gem 名称说明了意图,这是理智的。

    它应该可以正常工作。

    【讨论】:

      【解决方案2】:

      没有循环的运行时依赖。

      如果一个 gem 有一个 development 依赖于另一个 gem,而另一个 gem 有一个 runtime 依赖于第一个 gem,这应该没问题。

      不过,我会推荐它。我建议确保您的依赖关系图完全没有循环。

      【讨论】:

      • 请问,您能提供更多详细信息吗?可能会出现什么问题?它们是 RubyGems 特有的吗?
      • 一般来说,要避免循环依赖。如果图有循环,我们需要对依赖图做很多重要的事情。我们需要做的一件重要事情的一个例子是:对依赖图进行排序:但是无法对具有循环的有向图进行排序。
      • 这是什么答案?问题是 RubyGems 是否支持循环依赖,而不是 @yfeldblum 是否推荐它们。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多