宝石和宝石的依赖性的麻烦

时间:2013-08-08 22:30:22

标签: ruby rvm bundler

我有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级依赖关系?

1 个答案:

答案 0 :(得分:2)

您需要在gem的规范中指定所有依赖项,使用Gemfile for gems不是rubygems“standard”的一部分,rubygems只知道gem.add_dependencygem.add_development_dependencygem.add_runtime_dependency ,其中add_dependency是:add_runtime_dependency的别名。