Как превратить статический perl-скрипт в стиле CGI (xxx.pl) в динамическое приложение PSGI?

Perl-скрипты в стиле CGI трудно тестировать в этом стиле:

def test_it_says_hello_to_a_person
   get '/home.pl', :name => 'Simon'
   assert last_response.body.include?('Simon')
end

(Примечание: код на рубине с использованием Rack::Test).

Но если я смогу превратить статический файл в приложение PSGI (ссылка на код, принять $env в качестве параметра, вернуть [$status, $header, $body]), все будет легко, а Plack::Test сделает все остальное.

Я читаю спецификацию PSGI, обычно я вижу путь к этому. Но я все еще хочу знать, есть ли в этом какое-то колесо существования?

Кроме того, я думаю, что интерфейс Plack::Test не так красив, как Rack::Test, какие-нибудь альтернативы?


person winteen    schedule 23.02.2012    source источник


Ответы (1)


Я думаю, вам стоит взглянуть на Plack::App::WrapCGI. Когда вы передаете ему скрипт Perl в качестве аргумента, он использует метод, аналогичный ModPerl::Registry чтобы скомпилировать ваш CGI-скрипт в PSGI-приложение. И даже если он не может понять, как это сделать, у него есть возможность эмулировать полную среду CGI из среды PSGI, что означает, что он может разветвлять и выполнять настоящий сценарий CGI (даже написанный на другом языке) и запустите его под любым обработчиком Plack, включая Plack::Test.

person hobbs    schedule 23.02.2012