Не удается отправить Gem в размещенный фид с учетными данными

Я пытаюсь разместить драгоценный камень на хостинге Artifactory и сталкиваюсь с проблемами на каждом этапе.

Моя среда:

  • Операционная система: Windows 7 x64 Профессиональная
  • Рубин: рубин 1.9.3p545

Мне пришлось проделать трюк с cacert.pem, чтобы добавить URL-адрес артефакта в мой список источников, но теперь эта часть работает. Следующим шагом в документации Artifactory является получение ключа API и передача его в ~/.gem/credentials.

Когда я это делаю, ключ API загружается успешно, но 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'

Я даже не могу использовать драгоценный камень, пока есть файл учетных данных, поэтому я должен удалить его.

Если я попытаюсь нажать без файла учетных данных и с использованием параметра --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.

Это проприетарный драгоценный камень, поэтому публикация на rubygems.org невозможна. Кажется, что в моей среде определенно есть проблема, но я не смог понять, что это такое, и ни одна из других документов по вопросам SO не кажется актуальной.

Я знаю, что мне нужно заставить gem прочитать файл учетных данных для успешной отправки, но похоже, что более основная проблема заключается в том, что gem игнорирует параметр --host.


person Chris McKenzie    schedule 06.08.2014    source источник
comment
Вы проверили правильность содержимого файла %USERPROFILE%/.gem/credentials? Вы пытались использовать переменную окружения RUBYGEMS_HOST вместо --host?   -  person Dror Bereznitsky    schedule 07.08.2014
comment
Похоже, ваш ключ API содержит недопустимые символы. Это может быть ошибка. Можете ли вы легко изменить пароль в Artifactory (я имею в виду - он не исходит от LDAP или чего-то еще)? Если можете, поделитесь, пожалуйста, своим API-ключом в вопросе (и, конечно, потом смените пароль). Это поможет ответить.   -  person JBaruch    schedule 07.08.2014
comment
Установка переменной среды RUBYGEMS_HOST, кажется, помогает, хотя я не понимаю, зачем это нужно и почему опция --host не работает. Я также не понимаю, почему драгоценные камни все еще запрашивают у меня учетные данные rubygems.org, когда я не нажимаю на rubygems.org. Я все еще не могу нажать драгоценный камень из-за проблемы с учетными данными. Вывод в следующем комментарии:   -  person Chris McKenzie    schedule 07.08.2014
comment
$env:RUBYGEMS_HOST = $artifactory.url gem push .\my_gem-0.0.1.0.beta.gem Введите свои учетные данные RubyGems.org. У вас еще нет аккаунта? Создайте его на rubygems.org/sign_up Электронная почта: Пароль: Отправка gem на myartifactoryurl.com... {ошибки: [{статус: 401, сообщение: неверные учетные данные}]}   -  person Chris McKenzie    schedule 07.08.2014
comment
---\n :rubygems_api_key: Basic Z3Vlc3RhZG1pbjpwYXNzd29yZDE= Очевидно, я изменю пароль. :)   -  person Chris McKenzie    schedule 07.08.2014


Ответы (2)


Потребовалось много усилий, но я думаю, что решил свои проблемы. Это была проблема в 2 части.

Решение, часть 1

Что касается проблемы с игнорированием gem параметра --host, это решается обновлением gem.

По-видимому, версия gem, поставляемая с ruby ​​1.9.3v545 для Windows, не работает. После обновления драгоценного камня он действовал так, как будто пытался загрузить правильный URL-адрес.

Решение, часть 2

Вторая проблема связана с поврежденным файлом учетных данных. Здесь происходит то, что при передаче вывода команды curl в файл учетных данных файл учетных данных кодируется с помощью Unicode. Чтобы решить эту проблему, я использовал немного другую команду curl (в powershell).

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

Теперь я могу успешно загрузить драгоценный камень.

person Chris McKenzie    schedule 07.08.2014

Если трюк с переменной среды SSL_CERT_FILE не работает, вы также можете попробовать отредактировать файл .gemrc следующим образом:

:ssl_ca_cert: C:\\path\\to\\cacert.pem
person Chris McKenzie    schedule 19.09.2014