metaclass (metaclass) wrote,
metaclass
metaclass

Ебаная сила, убейте их всех, пожалуйста

Сижу долблюсь в capistrano, осиливаю сделанный develop7 деплоймент.
Ну, с настройками более-менее разобрался.
Капистрано использует sshkit, тот использует Net::SSH и в конечном итоге, все это чюдо ВНЕЗАПНО дохнет с сообщением:
Could not parse PKey: no start line

Начинаю долбится, перекапываю стек-трейсы и исходники - .rvm\gems\ruby-2.0.0-p247@operden\gems\net-ssh-2.6.8\lib\net\ssh\key_factory.rb - оказывается это оно на ключе с пассфразой дохнет, а сообщение означает "не могу прочесть зашифрованный ключ, нечем расшифровать". Ебаные дебилы.
Причем у меня этот ключ, сука в ssh-agent, само собой.

Начинаю копать Net::SSH дальше. Понатыкал во все дыры binding.pry для вызова репла. Агент используется, как положено. В итоге читаю коммент:
https://github.com/net-ssh/net-ssh/blob/master/lib/net/ssh/authentication/key_manager.rb#L205
Смотрю код: ну бля, все ок, rescue на ошибку. И хрен этот rescue срабатывает. Сую rescue ArgumentError => e и начинаю исследовать e в pry. Херакс:
> e.superclass.superclass
Exception
> e.superclass.superclass == Exception
false

Ну думаю, с приездом нас, два разных Exception.
В итоге develop7 подсказал - у этих псов определен свой Exception где-то и он перекрывает корневой суперкласс Exception, соответственно нихрена не ловится и все падает с ошибкой вместо того чтобы дойти до ключа в агенте и его использовать.
А правильная строка: rescue ArgumentError => e или хотя бы rescue ::Exception => e

Козлопитоны, хипстеры и черти.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 12 comments