rack-legacyを試してみようとしてMacではダメだった件

Ruby, RubyGemsの制限

  • rack-legacy 0.3.0 は本当は RubyGems 1.8 以降対応
    • bin/rack_legacy が Gem::Specification.find_by_name を使っているから
  • rack_legacy コマンドを使えば内部の rack_legacy.ru を使ってくれるので、require とか use とか run とか自分で書く必要なし。アプリのある場所でいきなり叩けば ok
  • Ruby 1.8 でも 1.9 でも動く

PHPの制限

`php-cgi` を呼んでいるので

  • PHP 5 以降1
  • Mac 標準の PHP では動かない(入ってないから)

※ php-cli と php-cgi とバカ正直にバイナリを分けなきゃいけないもんなんだろうか。php-cgi という名前で呼び出されたら CGI 用のモードで動く、とかできそうなもんだけど。

使ってみようとしたんだけど

実は Mac では Apache + mod_php の環境はすぐに動かせるんだけど、

  1. システム全体で Web サーバが動いてる必要は全然ない
  2. PHP のコードを書くときだけ軽く動かせればよい
  3. いちいち VirtualHost の設定とかしたくない
    • 本来そんなもの必要ないはずなんだけど、しておかないと PATH が変わってしまう
  4. システム全体にライブラリを突っ込んでいって汚すのもイヤ

と思ってる。

そこで rack-legacy を使えないかなと思ったんだけど、上の php-cgi で躓いてしまった。他のバージョンは知らないけど少なくとも OSX 10.5 標準の PHP には CGI バイナリは入っていない。それだけをインストールする方法もない。MacPorts などで PHP を丸ごと一式入れ直す方法もなくはないけど、それだったら MAMP 入れたり VM で Linux 入れてしまっても手間的には大して変わらない気がするというか、Linux 入れてしまう方が構成的に最も素直だと思う。どうせ本番環境は Linux なんだから、それに近い方がトラブルは少ない。

実際、入れてあった CentOS 上には php-cgi はあったので、こっちでやった方が楽そうだ。問題は VM を動かすのは「少しも手軽じゃない」ってことだけ。

ということで見送りになってしまった。うーん残念。本格的に受け入れテスト用の環境として使うなら rack-legacy + RSpec よりは Cucumber になるんじゃないかなと思うし、面白いんだけどちょっと使いどころが難しい。

  1. 本物のレガシーをなめちゃいけない 

More