basyura's blog

あしたになったらほんきだす。

cgi で rails みたいに

レンタルサーバで rails 使えなくても 、同じ url ルールで mvc したい。

dispatcher - gup.cgi

#!/usr/local/bin/ruby

require 'cgi'

print "Content-type: text/html\n\n"

cgi = CGI.new
info = cgi.path_info.split("/")
info[2] = "index" if info.length < 3 || !info[2]
load info[1] + ".rb"

app = eval(info[1].capitalize + ".new")
app.instance_variable_set("@params" , cgi.params)
app.__send__(info[2])

exit

コントローラ - test.rb (今のところ v も一緒)

class Test
  def index
    msg =<<-EOF
    <html>
      <head></head>
      <body>
        <form action="/gup/test/list" method="post">
          名前をどうぞ <input type="text" name="name">
          <input type="submit">
        </form>
      </body>
    </html>
    EOF
    puts msg
  end
  def list
    puts CGI.escapeHTML "こんにちは #{@params['name']} さん"
  end
end