【问题标题】:How to use private repo gem in Rails app?如何在 Rails 应用程序中使用私有 repo gem?
【发布时间】:2018-09-18 09:08:54
【问题描述】:

我想在我的 rails 应用程序中加载一个私有 gem(我正在使用 docker 和 rails 5)。

首先我将 gem 添加到我的 gemfile 中:

gem 'my_gem', '0.1.4', git: "https://#{ENV['GITHUB_TOKEN']}@github.com/Orga/my_gem"

然后当我尝试docker-compose build,这就是我得到的:

致命:无法读取“https://github.com”的用户名:没有这样的设备或地址

所以我尝试了docker-compose run web bundle install。他们要求我登录。我没有错误,但 gemfile 更新如下:

GIT
  remote: https://@github.com/Orga/my_gem
  revision: 391ae38ff06dfd360eb42a09256f4a5463fba559
  specs:
    my_gem (0.1.4)
      rails (>= 5.0.0.beta3, < 5.1)
      roo (~> 2.1.0)

GEM
  remote: https://rubygems.org/
  ...
  1. 我觉得这条线很奇怪:remote: https://@github.com/Orga/my_gem。 那么这是加载私有 gem 的好方法吗?
  2. 当我bundle install 时,它要求我登录,所以它可能会在生产中造成麻烦吗?

编辑

当我将令牌直接放入 gemfile 时,一切正常。 所以 env var 没有被正确调用。

我试过了:

.env

GITHUB_TOKEN=...

宝石文件

gem 'my_gem', '0.1.4', git: "https://#{ENV['GITHUB_TOKEN']}@github.com/Orga/my_gem"

也试过了

secrets.yml

development:
  github_token: ...

宝石文件

gem 'my_gem', '0.1.4', git: "https://#{Rails.application.secrets.github_token}@github.com/Orga/my_gem"

【问题讨论】:

  • remote: https://@github.com/Orga/my_gem --- 看来您没有正确设置ENV['GITHUB_TOKEN']。你是怎么设置的?
  • 是的,我意识到环境变量设置不正确。因为当我直接将令牌放入 gemfile 中时,一切正常。我是这样设置的:我有一个.env' file with GITHUB_TOKEN=...`。我还尝试将我的 env var 放入 secrets.yml 并使用 Rails.application.secrets.github_token 调用它,但它也不起作用。那么如何让这个 env var 可以从 gemfile 中访问呢?

标签: ruby-on-rails ruby docker


【解决方案1】:

最好和最安全的方法是使用捆绑配置

在您的 Gemfile 中,您应该有:

source 'https://gem.fury.io/youraccount/' do
  gem "your_service", "~> 1.0.0"
end

然后,如果您需要进行身份验证,可以通过运行以下终端命令来实现:

bundle config https://gem.fury.io/youraccount/ yourauthtoken

我希望这有助于回答您的问题!

本

【讨论】:

  • 注意,我上面提到的来源是 GemFury,但这适用于任何类型的私人仓库。
  • 它也不行:/
  • 您看到了什么错误?能否请您提供更多详细信息!
猜你喜欢
  • 1970-01-01
  • 2017-11-22
  • 2011-08-14
  • 1970-01-01
  • 2021-12-18
  • 2012-01-22
  • 2016-10-02
  • 1970-01-01
  • 2019-12-08
相关资源
最近更新 更多