lighttpd を使用して実稼働サーバーから提供するいくつかの Ruby CGI スクリプト (Ruby CGI クラスを使用) を作成しました。シンを使用して開発サーバーでそれらをテストしたい。基本的に、すべての CGI スクリプトをディレクトリにドロップし、そのディレクトリでシンを開始したいと考えています。次に、http://localhost:3000/<script > へのすべてのリクエストは、現在のディレクトリで <script> を実行し、結果を返す必要があります。シンにこれを行う方法が組み込まれている場合、私はそれを見つけることができません。自分が何をしているのかわかっていれば、このための Rack 構成ファイルは簡単だと思いますが、私にはわかりません。
アップデート:
このラックアップファイルは機能しているようです。それが最善の解決策かどうかはわかりませんが、開発環境では問題ないはずです。
run(lambda do |env|
require 'rubygems'
require 'systemu'
script = env['REQUEST_PATH'][1..-1] + '.rb'
response = ''
err = ''
systemu(['ruby', script], 'stdout' => response, 'stderr' => err, 'env' => {
'foo' => 'bar' })
if err.length > 0
[ 500, {'Content-Type' => 'text/plain'}, err ]
else
idx = 0
status = -1
headers = {}
while true
line_end = response.index("\n", idx)
line = response[idx..line_end].strip
idx = line_end+1
if status < 0
if line =~ /(\d\d\d)/
status = $1.to_i
else
raise "Invalid status line: #{line}"
end
elsif line.empty?
break
else
name, value = line.split /: ?/
headers[name] = value
end
end
content = response[idx..-1]
[status, headers, content]
end
end)