SoftwareFoundationGroupAtKyotoU / automata

Other
3 stars 10 forks source link

framework上に移す #97

Closed westpaddy closed 9 years ago

westpaddy commented 9 years ago

やるやる言うて issue に立っていなかった。 Sinatra とかがいいんですかね。

krtx commented 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 の機能分離については並行して進められるといいな〜と思っていますが、どうでしょうか。

chiro commented 9 years ago

いいとおもいます :sparkles:

krtx commented 9 years ago

できたとおもう