错误:没有这样的 API 密钥。请将其添加到您的配置中(在初始“gem Push”时自动完成)。如何解决这个问题?

Gre*_*een 5 ruby rubygems

我想在 Rubygems 上推送宝石。但我总是收到这样的消息:

C:\ruby\my_gem>gem push my_gem-0.0.1.gem -k rubygems_api_key
Pushing gem to https://rubygems.org...
ERROR:  No such API key. Please add it to your configuration (done automatically on initial `gem push`).
Run Code Online (Sandbox Code Playgroud)

我已将密钥设置为C:\Documents and Settings\User\.gem\credentials

---
rubygems_api_key: e06b38 ...
:rubygems_api_key: e06b38 ...
Run Code Online (Sandbox Code Playgroud)

我从 Rubygems 的个人资料页面复制/粘贴它。所以它是正确的。但我收到错误。问题是什么?怎么解决呢?

bla*_*jid 6

由于某种原因 ruby​​gemsapi_keyrubygems_api_key钥匙中删除了该部分。但是您可以将任何其他密钥添加到凭据文件中,并通过其完整名称引用它。

https://github.com/rubygems/rubygems/blob/4305567f0182bc08e27c63dcc99842a094af38c6/lib/rubygems/config_file.rb#L289-L293

如果您在以下内容中.gem/credentials

---
:rubygems_api_key: e06b38 ...
:someother_api_key: 43240230...
:secret: 08n23u30...
Run Code Online (Sandbox Code Playgroud)

你应该能够运行

gem push my_gem-0.0.1.gem -k rubygems
# this is the same as not using the -k/--key arg
gem push my_gem-0.0.1.gem
Run Code Online (Sandbox Code Playgroud)

或者

gem push my_gem-0.0.1.gem -k someother_api_key
gem push my_gem-0.0.1.gem -k secret
Run Code Online (Sandbox Code Playgroud)


Dai*_*iku 2

我认为您的凭据文件中的第二行不正确。在我的文件中,第一行是三个破折号,第二行以冒号开头。所以我认为应该是:

---
:rubygems_api_key: e06b38 ...
Run Code Online (Sandbox Code Playgroud)

如果您转到 ruby​​gems.org 上的个人资料页面,您会发现一个curl命令,您可以将其剪切并粘贴到命令行中,该命令将为您创建此文件。