Closed westpaddy closed 9 years ago
standalone での実行と cgi の両立を目標にします。
WEBrick を利用して
require "webrick"
include WEBrick
DOCUMENT_ROOT = File.dirname(__FILE__)
srv = HTTPServer.new(
DocumentRoot: DOCUMENT_ROOT,
Port: 3000
)
def srv.mount_cgi(name)
mount(
"api/#{name}",
HTTPServlet::CGIHandler,
File.join(DOCUMENT_ROOT, "api/#{name}")
)
end
srv.mount_cgi("browse.cgi")
srv.mount_cgi("comment.cgi")
...
trap("INT") { srv.shutdown }
srv.start
のようなサーバを作ると standalone で実行できると思います。認証周りについては Apache 互換のクラスを使えばよさそうです( HTTP digest の場合: http://docs.ruby-lang.org/ja/2.1.0/class/WEBrick=3a=3aHTTPAuth=3a=3aHtdigest.html )。
次に、各 cgi から機能を分離して、リクエストからレスポンスを生成するメソッドを定義し、それをサーバと cgi の両方で使うようにします。
srv.mount_proc("/some_api.cgi") do |req, res|
res.body = some_api(req)
end
helper = CGIHelper.new
puts header
puts body
サーバと認証関係のコードが書けたら、各 cgi の機能分離については並行して進められるといいな〜と思っていますが、どうでしょうか。
いいとおもいます :sparkles:
できたとおもう
やるやる言うて issue に立っていなかった。 Sinatra とかがいいんですかね。