Skip to content

Instantly share code, notes, and snippets.

@nanto
Created February 18, 2014 07:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nanto/9066170 to your computer and use it in GitHub Desktop.
Save nanto/9066170 to your computer and use it in GitHub Desktop.
Run legacy applications which depend on environment variables.
package Plack::Middleware::ENV;
use strict;
use warnings;
use parent qw(Plack::Middleware);
sub call {
my ($self, $env) = @_;
my @fields = grep { m/^(?:HTTP.*|REMOTE_ADDR)$/ } keys %$env;
local @ENV{@fields} = @$env{@fields};
return $self->app->($env);
}
1;
package main;
use Test::More;
use Plack::Builder;
$INC{'Plack/Middleware/ENV.pm'} = __FILE__;
my $app = builder {
enable 'Plack::Middleware::ENV';
sub {
is $ENV{HTTP_USER_AGENT}, 'MyAgent/1.0';
};
};
$app->({ HTTP_USER_AGENT => 'MyAgent/1.0' });
done_testing;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment