Executando aplicativos PHP juntamente com aplicativos Rails no Pow (pow.cx)

Na Firmhouse, fazemos um pouco de desenvolvimento PHP e muito desenvolvimento Rails. Nas últimas semanas, eu estava lutando para encontrar uma solução fácil para rodar PHP (especialmente WordPress) junto com meus aplicativos Rails no Pow.

Tentei redirecionar a porta para um servidor PHP interno e certamente não tentei recorrer ao Apache (bah!). Ontem, pesquisei no Google e encontrei a solução:

http://stuff-things.net/2011/05/16/legacy-development-with-pow/

Este artigo explica como usar a gema “legado de rack” para chamar aplicativos CGI legados usando middleware Rack. Acabei de configurar um “aplicativo” WordPress para usar minha instalação cgi php 5.4 local adicionando um config.ru:

~ / Code / wordpress / config.ru

require 'rack'
require 'rack-legacy'
require 'rack-rewrite'

INDEXES
= ['index.html','index.php', 'index.cgi']

ENV
['SERVER_PROTOCOL'] = "HTTP/1.1"

use Rack::Rewrite do
rewrite
%r{(.*/$)}, lambda {|match, rack_env|
INDEXES
.each do |index|
if File.exists?(File.join(Dir.getwd, rack_env['PATH_INFO'], index))
return rack_env['PATH_INFO'] + index
end
end
rack_env
['PATH_INFO']
}
end

use Rack::Legacy::Php, Dir.getwd, '/usr/local/bin/php-cgi'
use Rack::Legacy::Cgi, Dir.getwd
run
Rack::File.new Dir.getwd

E vinculando-o a ~ / .pow:

ln -s ~/Code/wordpress ~/.pow/wordpress

Para acessá-lo em

http://wordpress.dev/

Rocha!