Ебаная сила, убейте их всех, пожалуйста
Sep. 11th, 2013 12:44 amСижу долблюсь в 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
Козлопитоны, хипстеры и черти.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Ну, с настройками более-менее разобрался.
Капистрано использует 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]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
А правильная строка: rescue ArgumentError => e или хотя бы rescue ::Exception => e
Козлопитоны, хипстеры и черти.