Time to Read

5分

皆さん、楽しくテスト書いてますか~~~

今日は、 rack-legacy を使うことで、 PHP のアプリケーションなのになぜか Ruby のコードでテストできて(受け入れテストのあたりですけど)、そうすると本物の RSpec とかが使えて楽ですよ、と言う話をします。

rack-legacy とは。

まず、 Rack とは、 Ruby 製のウェブアプリケーション(Ruby on Rails、Sinatraなどをご存知かもしれません)とサーバ(Apache/Passenger、NginX、Lighttpdなどなど…)をつなぐ一種の規格です。 Perl や Python にも似たような仕組みがあります。

ここで、 Rack::Legacy というミドルウェアを使うと、他の言語の CGI や、 PHP のアプリケーションが Rack の上で動かせます。

そして、 Rack の上で動くということは、つまり Ruby の他のテストツール一式が使えるようになる、ということです。 Ruby を書く人は概ねテストの自動化のことばかり考えているので、おかげで Ruby のテストツールは大変豊富でパワフルです。その恩恵を PHP のアプリで受けられるかもしれません。むろん、 PHP も Ruby もこんな用途で使われるとは誰も思っていないですし、以下のコードは無保証です。

なお、なぜ「Legacy」という言葉がライブラリの名前に入っているかというと、これはいわゆる Rubyist ジョークというやつで、ツンデレに近い何かです。決して、 PHP がレガシーである、ということでは無いと思います。ただ、僕はこのライブラリの作者では無いので詳しい意図は不明です。

PHP と Ruby の準備をする。

Read the rest of this entry »