Publicado por Rafael Rosa em 26 de August de 2009
Hijack – Tenha um console IRB para qualquer processo Ruby
As vezes encerrar um aplicativo para debugá-lo não é uma opção viável. Porém, uma nova ferramenta chamada Hijack pode resolver nosso problema criando um console IRB para qualquer processo Ruby sendo executado, de maneira semelhante ao hot swapping de código (trocar a definição de um sistema enquanto ele está rodando) disponível no Erlang.
O Hijack (que ainda está em fase beta, então seja prudente e não o utilize em produção) permite que você force seu acesso aos processos Ruby em execução, e então abre um console de IRB rodando sobre o DRb. Os dias de parar aplicaçãs para realizar pequenos ajustes acabaram!
Usando o GDB (GNU DeBugger), ele se conecta aos processos Ruby, injetando um pouco de código para inicializar a sessão DRb que permitirá a criação do console IRB:
$ ruby hijack 16451 => Hijacking... => Mirroring: 100% => Hijacked 16451 (my_script.rb) (ruby 1.8.7 [i686-darwin9]) >>
Talvez você já conheça o live-console que oferece funcionalidade similar. A principal diferença é que o Hijack pode "se injetar" em um processo em execução sem que ele contenha código específico para isso. Ian Leitch, seu desenvolvedor, explica:
Eu alterei o Hijack de forma que você possa "sequestrar" qualquer processo Ruby - não é necesário que o alvo contenha qualquer código especial antes que ele possa ser sequestrado. Ele consegue fazer isso injetando um pouco de código usando o gdb, que por sua vez força o processo a iniciar um servidor DRb ao qual o client do Hijack se conecta.

Clique aqui para adicionar ao del.icio.us

26 de August de 2009 às 20:35
[...] link is being shared on Twitter right now. @rubyinside_br, an influential author, said Hijack - Tenha um [...]
10 de September de 2009 às 10:23
[...] sempre que o código é salvo. Aproveitando, se você for um pouco mais corajoso, dê uma olhada no Hijack, que te oferece um prompt IRB para um processo Ruby em [...]