Hmm Se fosse uma aplicação tipo REST você poderia criar o processo com as novas mudanças e depois matar o processo desatualizado e passar o trabalho só pro novo.
Isso não é exatamente um reload, mas é o mais seguro que se pode fazer Em 26/07/2013 09:11, "Blabos de Blebe" <[email protected]> escreveu: > Oi pessoal, > > Ultimamente eu tenho brincado com carregamento dinâmico e surgiu a > necessidade de fazer um "reload" de módulos que eu carreguei dinamicamente, > pois eu quero subir uma versão atualizada de um módulo sem reiniciar a > aplicação. > > Suponham o seguinte cenário de teste: > > while(<>) { > reload( 'Foo::Bar' ); > say Foo::Bar::hello(); > } > > Atualmente, eu uso um módulo que faz o load(), então para completar o > "reload" eu preciso fazer o "unload": > > sub reload { > my $module = shift; > > unload( $module ); > load( $module ); > } > > Para isso eu dei uma olhada no cpan e encontrei o módulo Class::Unload, > mas infelizmente o exemplo que ele tem na sinopse não funciona no meu > cenário. > > Pesquisando um pouco mais eu encontrei os seguinte código: > > sub unload { > my $module = shift; > my $filename = to_filename( $module ); > delete $INC{ $filename }; > } > > Esse código faz com que a cada passo do loop o módulo 'Foo::Bar' seja > carregado, e as alterações no seu fonte sejam visíveis na aplicação, > atingindo o meu objetivo. > > Entretanto, essa solução está me cheirando a gambiarra. Eu estou > preocupado com memory leaks e coisas do gênero, pois pretendo utilizar esse > "reload" em uma aplicação que teoricamente rodaria indefinidamente. > > Vocês poderiam apontar outros módulos que lidam com esse problema de forma > segura, ou documentação mais específica onde eu possa entender melhor o > processo? > > Mais do que uma solução para o meu cenário, eu estou procurando entender > melhor o processo. > > []'s > > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: [email protected] > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > >
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
