我想在我的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/
...
remote: https://@github.com/Orga/my_gem
。
那是加载私人宝石的好方法吗?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"
答案 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
我希望这有助于回答您的问题!
本