使用另一个来自Git的Rails引擎宝石的Rails引擎宝石

3

Rails 4 @ Ruby 2

我有两个引擎(A、B)的宝石,由于代码是私有的,无法上传到 Rubgems,因此我使用 git。

A 必须使用 B,因此基本上我应该将 B 添加为 A gemspec 的依赖项。据我所知,gemspec 不允许将基于 git 的宝石作为 gemspec 中的依赖项。

我尝试过使用 A gemfile,但没有成功。是否有办法解决?


看一下 gemfury.com,它像 rubygems 一样,但用于私有 gems,它与 .gemspec 兼容。 - rderoldan1
你在Gemfile中具体尝试了什么?我认为如果你将gem B包含到gem A的Gemfile中,它应该可以正常工作。在构建gem A之前不要忘记运行bundle install命令。依赖项应该在Gemfile.lock中。 - Matthias
1个回答

3

对于开发或测试,您可以在Gemfile中完成。您甚至可以将其指向使用本地文件夹。

gem 'gem_b', path: "/path/to/the/folder"

或者使用 Git 引用

gem 'gem_b', git: "git@github.com:user/gem_b.git"

这将使你能够进行开发和测试。
另一个选项是这样的。如果你有两个引擎,我假设你也有一个Rails应用程序来使用它们。在那个Rails应用程序中,你可以使用git引用,在Gemfile中依次要求它们。
gem 'gem_b', git: "git@github.com:user/gem_b.git"
gem 'gem_a', git: "git@github.com:user/gem_a.git"

如果您必须在gemspec中声明此依赖项,您可以使用rake构建gem;
cd /path/to/gem_b
rake build

这将在 pkg 文件夹下创建一个 gem_b.gem 文件。

然后你可以使用 gem install 命令在本地安装它,就像这样:

gem install pgk/gem_b.gem 

现在你已经在本地安装了gem_b。将其作为依赖项添加到gemspec中不会有任何问题。

当你准备发布你的应用程序时,你需要将gem_b.gem复制到你的服务器,并使用通常的方式进行安装;

gem install /full/path/to/gem_b.gem 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接