[Vienna-pm] mehrere versionen eines modules gleichzeitig benutzen

Thomas Klausner domm at zsi.at
Thu Nov 10 06:42:37 PST 2005


Hi!

On Thu, Nov 10, 2005 at 10:21:13AM +0100, peter pilsl wrote:
 
> ich hab ein module und das ist mal fertig und geht in die production. 
> gut.  nebenbei m?chte ich das module am gleichen rechner aber 
> weiterentwickeln ohne am tag 10x den productionserver zu schiessen.
> .. 
> wie tut man das am besten?

Wie schon angemerkt kannst du die Module einfach in verschiedene
Verzeichnisse spielen und dann auf eine der mannigfaltigen Wege
@INC veraendern.

Ich verwende statt PERLLIB oder -I am liebsten:

use lib ('/tes/tum/geb/ung');

Du kannst das ganze auch in einen Beginn-Block hauen und dann div.
Conditionals einbauen

BEGIN { 
  if ($hostname == 'dev') {
    push(@INC,'/testlibs');
  } else {
    push(@INC,'/production');
  }
}

Mehr zu use lib etc hast du am Perl Workshop versaeumt, aber hier sind
die Slides:
http://domm.zsi.at/talks/2005_braga_using_use/
(die YAPC-Version ist zwar english, aber besser..)


Dann gaebe es da noch das Module 'only';
http://search.cpan.org/dist/only/

Damit geht dann auch solches:

  # Only use MyModule if version is between 0.30 and 0.50
  # but not 0.36; or if version is >= to 0.55.
  
  use only MyModule => '0.30-0.50 !0.36 0.55-', qw(:all);

Hab ich aber noch nie ausprobiert, und es ist von Ingy. Schaut aber
nicht massiv boese (source filter oder so) aus...


> *zusatzfrage* f?r domm und andere mod_perls : hab ich eine chance, das 
> auch unter mod_perl hinzukriegen. vor allem, wenn das am gleichen apache 
> lauft? development hab ich meist eh nicht unter mod_perl laufen, aber in 
> der endphase dann halt doch.

Unter mod_perl verwende ich in solchen Faellen immer verschiedene
Instanzen von Apache, die auf verschiedenen Ports laufen.



-- 
#!/usr/bin/perl                               http://domm.zsi.at
for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/}


More information about the Vienna-pm mailing list