如何在Rails应用程序中使用私人仓库宝石?

时间:2018-09-18 09:08:55

标签: ruby-on-rails ruby docker

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

所以首先我将宝石添加到我的 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。 那是加载私人宝石的好方法吗?
  2. 当我bundle install要求我登录时,可能会在生产中引起麻烦吗?

编辑

当我将令牌放置到gemfile中时,一切正常。 因此,env var调用不正确。

我尝试过:

.env

GITHUB_TOKEN=...

gemfile

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

也尝试过

secrets.yml

development:
  github_token: ...

gemfile

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

1 个答案:

答案 0 :(得分:1)

做到这一点的最好,最安全的方法是使用捆绑软件配置

在您的Gemfile中,您应该具有:

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

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

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

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