1

我有 3 个应用程序 - 应用程序 A 是一个容器应用程序。它使用一个名为 app B 的 Gem。App B 依赖于第三个应用程序,称为 App C。

所有 3 个应用程序都使用相同版本的 ruby​​。

# inside ~/app_a: ruby-1.9.3-p327@mnhg
# $GEM_PATH: /Users/lfender/.rvm/gems/ruby-1.9.3-p327@mnhg:/Users/lfender/.rvm/gems/ruby-1.9.3-p327@global`

#app_a Gemfile
gem 'app_b', :path => '../app_b'

`bundle install` ---------------

#App A Gemfile.lock
PATH
remote: ../app_b
specs:
  app_b (0.0.8)
    dependency_1
    dependency_2

所以现在,app_b 的 .gemspec 中概述的依赖关系已由 app_a 解决,万岁。

#App B Gemspec
gem.add_dependency 'dependency_1'
gem.add_dependency 'dependency_2'

但是 app_b/Gemfile 呢,我在其中概述了第三个本地依赖项?

# using ruby-1.9.3-p327@global

#App B Gemfile
gem 'app_c', :path => '../app_c'

如果我们查看上面 App A 的 Gemfile.lock,您可以看到没有列出依赖关系。当我使用使用本地 gem 的本地应用程序使用另一个本地 gem(也解决其依赖项)时,如何加载和解决诸如此类的 2 级依赖项?

4

1 回答 1

2

您需要在 gem 的规范中指定所有依赖项,将 Gemfile 用于 gem 不是 ruby​​gems“标准”的一部分,rubygems 只知道gem.add_dependency,gem.add_development_dependencygem.add_runtime_dependency, 其中add_dependency是: 的别名add_runtime_dependency

于 2013-08-08T23:40:28.053 回答