【问题标题】:How do I require a private ruby gem from another private ruby gem?我如何从另一个私人红宝石宝石中获取私人红宝石宝石?
【发布时间】:2017-02-09 19:36:33
【问题描述】:

我有一个私有 gem,名为 X,其源代码托管在 Github 上。如果我想在项目中使用X,我将gem 'X', :git => 'git@github.com:my-org/x.git' 添加到我项目的Gemfile。然后我可以启动irb 并输入require 'bundler/setup',然后输入require 'x'。 X 的功能可用。

现在,我有一个不同的私有 gem,名为 Y,它的源代码也托管在 Github 上。我想在Y 中使用X。

我怎样才能做到这一点?

【问题讨论】:

    标签: ruby github rubygems gemspecs


    【解决方案1】:

    如果你的 ssh 密钥是在 github 上配置的,这将起作用:

    gem 'gem', :git => 'git@github.com:user/gem.git', :ref => 'ref'
    

    你可以通过运行ssh -t git@github.com来测试它

    其他选项是使用您的用户名和密码以及基本身份验证:

    gem 'gem', git: 'https://user:password@github.com/user/gem.git'
    

    或者更安全地使用环境变量来保护您的密码:

    gem 'gem', :git => "https://#{ENV['gem_username']}:#{ENV['gem_password']}@github.com/gem.git"
    

    如果您使用 CI 服务器部署项目,最后一个示例也是一个好主意。

    【讨论】:

    • 假设您建议将这些行放在 gem 的 Gemfile 中,这是行不通的。运行 gem build y.gemspec 时,您将收到一条错误消息:The git source git@github.com:my-org/x.git is not yet checked out. Please run `bundle install` before trying to start your application。
    • 是的,你需要在构建之前运行bundle install
    猜你喜欢
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多