3

我想在 Rubygems 上推送一个 gem。但我总是收到这样的信息:

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`).

我设置了钥匙C:\Documents and Settings\User\.gem\credentials

---
rubygems_api_key: e06b38 ...
:rubygems_api_key: e06b38 ...

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

4

3 回答 3

4

出于某种原因,rubygems从密钥中删除了该api_key部分。rubygems_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...

你应该能够运行

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

或者

gem push my_gem-0.0.1.gem -k someother_api_key
gem push my_gem-0.0.1.gem -k secret
于 2016-03-22T17:27:26.853 回答
2

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

---
:rubygems_api_key: e06b38 ...

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

于 2013-06-18T19:11:06.830 回答
0

键名应以冒号为前缀。当 Ruby 导入一个 yaml 文件时,前面没有冒号的键被解释为字符串;以冒号为前缀的键被解释为符号。下面的例子:

{"string_key" => "value 1", :symbol_key => "value 2"}.to_yaml

输出这个:

---
string_key: value 1
:symbol_key: value 2
于 2014-08-27T16:26:55.230 回答