如何将静态CGI样式的perl脚本(xxx.pl)转换为动态PSGI应用程序?

时间:2012-02-23 03:04:38

标签: perl cgi rack plack psgi

CGI风格的perl脚本很难用这种方式测试:

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

(注意:代码是ruby,使用Rack::Test)。

但是如果我可以将静态文件转换为PSGI应用程序 (代码参考,接受$env作为参数,返回[$status, $header, $body]),事情会很简单,Plack::Test将完成其余工作。

我正在阅读PSGI规范,通常我可以看到这条路线。但我仍然想知道这有什么存在的问题吗?

另外,我认为Plack::Test的界面不如Rack::Test,任何替代品都漂亮吗?

1 个答案:

答案 0 :(得分:7)

我想你想看看Plack::App::WrapCGI。当你给它一个Perl脚本作为参数时,它使用类似于ModPerl::Registry的技术将你的CGI脚本编译成PSGI应用程序。即使它无法弄清楚如何做到这一点,它也能够从PSGI环境模拟一个完整的CGI环境,这意味着它可以分叉并执行一个真正的CGI脚本(甚至用另一种语言编写的脚本)和在任何类型的Plack处理程序下运行它,包括Plack :: Test。

相关问题