Sep. 11th, 2013

metaclass: (Default)
Сижу долблюсь в capistrano, осиливаю сделанный [livejournal.com profile] 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.
В итоге [livejournal.com profile] develop7 подсказал - у этих псов определен свой Exception где-то и он перекрывает корневой суперкласс Exception, соответственно нихрена не ловится и все падает с ошибкой вместо того чтобы дойти до ключа в агенте и его использовать.
А правильная строка: rescue ArgumentError => e или хотя бы rescue ::Exception => e

Козлопитоны, хипстеры и черти.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 6th, 2025 05:35 am
Powered by Dreamwidth Studios