[#46033] cgi をするときのデバック方法について — Nobuyuki Inaba <nobuyuki.inaba@...>

稲葉と申します。

15 messages 2009/05/22
[#46034] Re: cgi をするときのデバック方法について — rubikitch@... 2009/05/23

From: Nobuyuki Inaba <nobuyuki.inaba@gmail.com>

[ruby-list:46034] Re: cgi をするときのデバック方法について

From: rubikitch@...
Date: 2009-05-23 03:42:41 UTC
List: ruby-list #46034
From: Nobuyuki Inaba <nobuyuki.inaba@gmail.com>
Subject: [ruby-list:46033] cgi をするときのデバック方法について
Date: Sat, 23 May 2009 07:42:14 +0900

るびきちです。

> それで、デバッグ等で、「irb」がとても役に立って助かっています。
> <input type=hidden name=pass value=”test">
> などと言う場合
> コンソールから、
> pass=test
> ^d
> などと入れて本当に助かっていますが、

この機能は知っているけど、毎回入力するのが面倒で使っていません。

CGI#debug_paramsなんてのを定義してしまえば、それを呼んだ時点でのCGIパラメータがわかります。
Fileを渡したらCGIパラメータにStringIOが渡るので、StringIO#inspectも再定義しておきます。
====
#!/usr/local/bin/ruby
require 'cgi'
require 'enumerator'
require 'stringio'
class StringIO  # Fileを渡したとき用
  def inspect
    %Q!#<StringIO: #{string.inspect}>!
  end
end

class CGI
  def debug_params
    # すべてのパラメータを表示して
    out("type"=>"text/plain") do 
      params.enum_for(:each_pair).map {|k,v| "#{k}=#{v.inspect}\n" }.join
    end
    exit                        # 強制終了
  end
end


cgi = CGI.new
cgi.debug_params

cgi.out("type"=>"text/plain") {
  "hoge=#{cgi['hoge'].inspect}"
}
====

http://127.0.0.1:9998/test.cgi?hoge=1&boke=22&boke=33
というふうにこのCGIを起動すれば、

hoge=["1"]
boke=["22", "33"]

と表示されます。

--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/

In This Thread