ruby - 将 Gem 推送到托管的认证提要失败

标签 ruby windows gem artifactory

我正在尝试将 gem 推送到托管的 Artifactory,并且在每一步都遇到问题。

我的环境是:

  • 操作系统:Windows 7 x64 Professional
  • ruby : ruby 1.9.3p545

我不得不使用 cacert.pem 来将人工 url 添加到我的源列表中,但那部分现在可以正常工作了。下一步Artifactory documentation是获取一个 api key 并将其通过管道传输到 ~/.gem/credentials。

当我这样做时,api key 下载成功,但 gem 完全崩溃。

gem
C:/ruby193/lib/ruby/1.9.1/psych.rb:203:in `parse': (<unknown>): control characters are not allowed at line 1 column 1 (Psych::SyntaxError)
        from C:/ruby193/lib/ruby/1.9.1/psych.rb:203:in `parse_stream'
        from C:/ruby193/lib/ruby/1.9.1/psych.rb:151:in `parse'
        from C:/ruby193/lib/ruby/1.9.1/psych.rb:127:in `load'
        from C:/ruby193/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:253:in `load_file'
        from C:/ruby193/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:223:in `load_api_keys'
        from C:/ruby193/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:208:in `initialize'
        from C:/ruby193/lib/ruby/site_ruby/1.9.1/rubygems/gem_runner.rb:78:in `new'
        from C:/ruby193/lib/ruby/site_ruby/1.9.1/rubygems/gem_runner.rb:78:in `do_configuration'
        from C:/ruby193/lib/ruby/site_ruby/1.9.1/rubygems/gem_runner.rb:51:in `run'

只要凭据文件存在,我什至不能使用 gem,所以我必须删除它。

如果我尝试在没有凭证文件的情况下使用 --host 选项进行推送,gem 似乎会忽略 --host 选项。

gem push .\my_gem-0.0.1.0.beta.gem --host $artifactory.source
Enter your RubyGems.org credentials.
Don't have an account yet? Create one at http://rubygems.org/sign_up
   Email:
Password:
Pushing gem to https://rubygems.org...
HTTP Basic: Access denied.

这是专有的 gem,因此不能发布到 ruby​​gems.org。我的环境似乎确实存在问题,但我一直无法弄清楚它是什么——而且其他关于 SO 问题的文档似乎都不是重点。

我知道我需要让 gem 读取凭证文件才能成功推送,但 gem 忽略 --host 参数似乎是一个更基本的问题。

最佳答案

这花了很多功夫,但我想我已经解决了我的问题。这是两个部分的问题。

解决方案第 1 部分

关于 gem 忽略 --host 选项的问题,这已由 updating gem. 解决

显然,Windows 上 ruby​​ 1.9.3v545 附带的 gem 版本已损坏。更新 gem 后,它的行为就像是在尝试上传到正确的 url。

解决方案第 2 部分

第二个问题涉及损坏的凭据文件。这里发生的事情是,当将 curl 命令的输出通过管道传输到凭据文件时,凭据文件正在使用 Unicode 进行编码。为了解决这个问题,我使用了一个稍微不同的 curl 命令(在 powershell 中)

curl $url | Out-File ~/.gem/credentials -Encoding "ASCII"

现在我可以成功上传 gem。

关于ruby - 将 Gem 推送到托管的认证提要失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25171821/

相关文章:

Java - 如何在 Windows 中运行控制台程序

ruby - 在模块中讨论实例/类方法的约定

ruby - 是否有 ruby​​ 的 'standard' 读/写锁实现?

java - 批处理文件不会运行 Java Main 类

windows - 如何将我的 perl 脚本打包为 32 位可执行文件?

ruby - 在安装 compass 时定义要安装的 sass 版本

ruby - 执行特定版本的 gem

ruby-on-rails - 离线安装 ruby​​ gems/代理配置

ruby-on-rails - 排序用户对象

ruby-on-rails - rails RSolr::Error::ConnectionRefused:连接被拒绝错误