[#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:46036] Re: cgi をするときのデバック方法について

From: Nobuyuki Inaba <nobuyuki.inaba@...>
Date: 2009-05-25 02:01:06 UTC
List: ruby-list #46036
方法をお教えいただきありがとうございます。
えーと、すみませんが、今の私のレベルでは理解できない点がいくつかあります。
まず、irb では Fileを渡したとき用のデバッグ方法というのはないのでしょうか?

それと、サンプルを
/usr/lib/cgi-bin/
に
test.cgi
と言う名前で保存しました。
それで、コンソールが面から
http://127.0.0.1:9998/test.cgi?hoge=1&boke=22&boke=33
と入れるのでしょうか?
cd /usr/lib/cgi-bin
http://127.0.0.1:9998/test.cgi?hoge=1&boke=22&boke=33
としますと、
=======================================
bash: http://127.0.0.1:9998/test.cgi?hoge=1: No such file or directory
[1] 29623
[2] 29624
[1]   Exit 127                http://127.0.0.1:9998/test.cgi?hoge=1
[2]+  Done                    boke=22
====================================================================
と表示されます。

それともブラウザーのアドレスに
http://127.0.0.1:9998/test.cgi?hoge=1&boke=22&boke=33
といれるのでしょうか?
================================
エラー: このリンクは無効です。
================================
と表示されます。

何となく、これが使えれば便利そうに思えますが、
:9998という部分の意味がわかりません。
多分、私の分からないという部分を説明となるとキリがなくなるのだろうとおもい、
分かりませんというのもためらいましたが、まあ、ネットで検索なり、本を調べたり、
して解決したいと思います。済みませんが、参考になる書籍なり、
場所なり分かりましたらお教え願えないでしょうか?

教えていただいた事が理解できなくて残念です。本当にすみません。


2009/05/23 12:42  <rubikitch@ruby-lang.org>:
> 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