トップページ⇒php
982コメント335KB

【Ruby】RubyでCGI

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2001/05/04(金) 12:57ID:c4hRtzGY
Rubyについて語るスレッドです。
関連リンクは>>2-3
0247nobodyさん03/05/08 21:06ID:???
フォント?
テーマ機能つかって、css で制御するんじゃない?
0248nobodyさん03/05/09 15:05ID:???
test<font face="Arial">test</font>
ってな感じに、部分的にフォントを変えたいのだけど、
タグを使えるような抜け道が用意されているのかなと思って。
0249nobodyさん03/05/09 19:15ID:???
>>248
フォントを指定するプラグインを作ってください。
0250山崎渉03/05/22 02:04ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
0251山崎渉03/05/28 17:18ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0252るびきち03/06/11 04:39ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      rubikitch
0253nobodyさん03/06/17 10:18ID:CDKrfOSa
Rubyでオブジェクト指向の勉強に最適なサイトはないですか?
0254nobodyさん03/06/17 11:43ID:???
これだな。
http://www.pragmaticprogrammer.com/ruby/index.html
0255あぼーんNGNG
あぼーん
0256nobodyさん03/06/19 21:56ID:c0HjpDNQ
IPからホスト名の取得と、ホスト名からIPの取得
どちらも行うスクリプトを書く時、
どのライブラリをrequireしてどのメソッドを使うのが効率がいいですか?
0257nobodyさん03/06/20 02:08ID:???
>>256
resolv.rb
0258nobodyさん03/06/20 20:09ID:???
cgi.rbを使いたくないので、フォームから取得するモジュールを書いてみたのですが、
足りないノウハウ等がありましたら、どうかご教授ください。
以下にコードを挙げます。
ちなみに、複数選択可能なselectは考慮してませんし、使う気がございません。
025925803/06/20 20:12ID:???
module CGITool
  FNAME = {}
  CONTENT_TYPE = {}
  def CGITool.getForm()
    if ENV['CONTENT_TYPE'] =~ /^multipart/
      return getFormMultipart()
    end
    data = ""
    if(ENV['REQUEST_METHOD'] == 'POST')
      data = $stdin.read(ENV['CONTENT_LENGTH'].to_i)
    else
      data = ENV['QUERY_STRING']
    end
    form = {}
    if(data != nil)
      data.split(/&/).each{|pair|
        key, value = pair.split(/=/, 2)
        key = unescape(key)
        value = unescape(value)
        if(form.include?(key))
          form[key] += " " + value
        else
          form[key] = value
        end
      }
    end
    form
  end
026025803/06/20 20:12ID:???
  def CGITool.unescape(s)
    s.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n) do
      fconv([$1.delete('%')].pack('H*'))
    end
  end
  def CGITool.fconv(s)
    s
  end
  def CGITool.getFormMultipart(data = getMultipartData())
    data =~ /^\-+(\w+)\r?\n/
    word = $1
    array = data.split(/\r?\n?\-+#{word}\-*\r?\n/); array.shift
    form = {}
    array.each do |c|
      c.sub!(/^Content-Disposition: form-data; name="(.*?)"(?:; filename="(.*)")?\r?\n/, '')
      key = $1; filename = $2
      if filename
        FNAME[key] = filename.sub(/^.*[\\\/\:](?:.*)[\\\/\:]/, '')
      end
      cLength = c.length; c.sub!(/^\r?\n?/, '')
      if cLength != c.length
        form[key] = fconv(c)
      else
        c.sub!(/^Content-Type: (.*)\r?\n\r?\n/, '')
        CONTENT_TYPE[key] = $1
        form[key] = c
      end
    end
    form
  end
026125803/06/20 20:12ID:???
  def CGITool.getMultipartData
    $stdin.binmode
    $stdin.read(ENV['CONTENT_LENGTH'].to_i)
  end
end
0262あぼーんNGNG
あぼーん
0263本7 ◆uPD9aFm9hI 03/06/21 02:13ID:???
究極はBASICだよ
0264nobodyさん03/06/21 14:45ID:???
>>258
議論のノウハウが足りないようだが。
026525803/06/21 23:32ID:???
うっ‥それでは議論のノウハウをご教授していただきたいものです‥
それはさておき、
危惧していることは、
1.windows9xでgetMultipartData()の内容は問題ないのであろうか?また問題あるのであれば、どうすべきか?
2.getFormMultipart()のarray.eachの内容で想定していないデータが来るケースがあるであろうか?
です。大丈夫でしょうか‥?
0266nobodyさん03/06/25 00:21ID:xZOuwnMz
すいません。perlから、Rubyに挑戦しているものです。
perlスクリプトの区別を付けるため、rubyのスクリプトは.rbとしているのですが、アパッチのほうは
AddHandler cgi-script .rb
こうやっています。なにかまずいことはありますでしょうか?
あと、rubyのモジュールとはいったいどういうものなのでしょうか?
0267nobodyさん03/06/25 08:55ID:???
module M
  class C
    def to_s
      "[an instance of class C in module M]"
    end
  end
end

p M::C.new

include M
p C.new
0268nobodyさん03/06/28 17:06ID:???
>>266
Apacheはそれで良いと思う。

モジュールとは端的に言うとインスタンスが作れないクラス。

Rubyは単一継承だからクラスは一つのスーパークラスしか持てないが、
モジュールであれば複数取り入れることが出来る。

class C0
  #...
end

module M0
  #...
end

module M1
  #...
end

class C1 < C0 # スーパークラスは一つのみ
  include M0
  include M1 # モジュールはいくつでも取り込める
  #...
end

これでC1はC0、M0、M1で定義されたメソッドを継承することになる。

また、モジュールの中でクラスや他のモジュールを入れ子にすることで
名前空間を作るのにも使用する。
267はその例。
026926503/06/28 17:58ID:t6ndrw6W
>>268
なるほど、、まぁ、はじめたばっかりの私にとってはクラスとかあんまりあからないので、大丈夫かなぁ・・・
ありがとうございました。
0270nobodyさん03/06/28 17:59ID:t6ndrw6W
名前欄の数字みすった。スマソ
0271nobodyさん03/07/08 12:15ID:cQ+4nOpS
多分既出だと思いますが
cgi.rbを使ってあぷろだを作っているのですが、マルチパートの扱いがよく分かりません。
FORMのENCTYPEがmultipart/formdataのとき

values = cgi['field_name'] # <== field_nameの配列
values[0].read # <== values[0]の本文
values[0].local_path # <== values[0]のローカルファイルのパス
values[0].original_filename # <== values[0]の元の名前
values[0].content_type # <== values[0]のcontent_type

でアップロードしたファイルのデータが取得できるのでしょうか?
0272nobodyさん03/07/14 19:21ID:???
秋風が吹く頃に勉強する予定なのでageといてやる。
0273山崎 渉03/07/15 11:06ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0274nobodyさん03/07/20 18:39ID:MTCslCJP
mod_ruby+eruby。
servlet+JSPより好きなので、age。
0275nobodyさん03/07/21 05:15ID:???
ruby-listでerbの改造について盛り上がってるね。これで速さがphp並になれば……。
0276nobodyさん03/07/21 14:33ID:???
私は % のエスケープも<% # %>も使わないので、
今回の流れで色々と複雑な事情があるのだなあと知りました。
陰ながら応援sage。
0277nobodyさん03/07/21 23:32ID:???
俺も使わないなあ。規模が違うってのもあるんだろうけど。
<% か <%= のどっちかだけ。
0278nobodyさん03/07/26 01:58ID:aoovL48q
初歩的な質問で申し訳ないんですが、
Rubyに標準で添付されているCGI.rbというライブラリでは、
タグを生成するときの大文字は変更できないんでしょうか?
最近ではxmlの関係もあって小文字で出力したいと思うんですが・・・

例)大文字 → <HTML><H1>
  小文字 → <html><h1>
0279nobodyさん03/07/26 02:32ID:???
あまり、調べてなくて申し訳ないんですが
RubyでPerlでいう↓のやつできませんか?

print << 'EOS';
  <html>
    <body>パパの特盛</body>
  </html>
EOS

>>278
タグの内部だけ?相当むずかしいんじゃないの?
タグ内のデータとかは大文字のままじゃないといけないんでしょ?
例:<INPUT NAME=OOMOJI> ⇒ <input name=OOMOJI>
たぶん、それはないと思う。変換機能がついたHTMLエディタとかどぞ
0280nobodyさん03/07/26 03:02ID:???
>>278
cgi.rb のかわりにこれの出力を require してみたらどうなる?

print(File.read($:.map{|i|i+"/cgi.rb"}.find{|i|File.readable?(i)}).gsub(/element\.upcase/,"element.downcase"))

>>279
×print << 'EOS';
○print <<'EOS';
028127903/07/26 03:16ID:???
>>280
うわあぁああぁぁ!
いぃち文字消したらでぇきたぁー!
サンクス!
028227803/07/27 00:09ID:zQkWZE8h
>>279-280
ご教示ありがとうございました。

結局、cgi.rbの中身を解析し、何箇所か修正を加えることで、
目的を達成することができたみたいです。
028327803/07/27 00:15ID:zQkWZE8h
補足

>>280さんの方法では、私の環境ではエラーになってしまいました。
0284nobodyさん03/07/27 01:41ID:???
cgi.rb suxx
0285nobodyさん03/07/27 02:19ID:???
>>284
CGI.pm がこの世に存在しなければあんなダメダメなライブラリにはならかったんじゃないかと想像。
0286nobodyさん03/07/27 04:47ID:???
narf のベータが取れるのを待つしか。
028727903/07/27 17:47ID:???
gsubで、引っかかった文字によって置き換える文字を変えたいのですが

print "pl rb pl rb".gsub( /(pl|rb)/, ($1=='pl') ? 'Perl': 'Ruby')
これだと ($1=='pl') がかならず false になってしまい、
Ruby Ruby Ruby Ruby になってしまいます
なにゆえでしょう?
0288nobodyさん03/07/27 18:05ID:???
>>287
簡単に言うとドラクエの勇者に「ロト」って名前付けられないのと一緒だ。
028927903/07/27 18:32ID:???
>>288
勇者にロトと名づける裏技、見つかりました

print "pl rb pl rb".gsub(/pl|rb/) {|m|
  m = (m=='pl')? 'Perl' : 'Ruby'
}
これでやったらできました。 |m| あたりが良くわからんけど。
ruby-lang.orgのgsubのリファレンスマニュアルみたらすぐ見つかりました。すみません

rubyの後方参照($1とか\1とか)はあんま柔軟なことできないみたいですね
ありがとうございました
0290nobodyさん03/07/27 21:35ID:???
>>289
> rubyの後方参照($1とか\1とか)はあんま柔軟なことできないみたいですね

下手な煽り文句ですね。
029127903/07/28 00:29ID:???
>>290
え?べつに煽ってはいませんよ
煽りに見えたならそれはすみません
0292nobodyさん03/07/28 00:51ID:???
>>289
puts "pl rb pl rb".gsub(/(pl|rb)/) { ($1 == 'pl') ? 'Perl' : 'Ruby' }
0293nobodyさん03/07/28 01:38ID:???
table = {'pl'=>'Perl', 'rb'=>'Ruby'}
pattern = Regexp.compile(table.keys.join('|'))
puts("pl rb pl rb".gsub(pattern){table[$&]})
029427903/07/28 02:04ID:???
>>292
そっちの方がカコイイ!!ありがとう

>>293
最適化されてしまった...
table.keys.join('|')って汎用的でおもしろいアイデアですね。ワラタ

おもしろいなRuby
0295nobodyさん03/07/28 22:58ID:???
> 294
キーが正規表現含むとおかしくなるから
quoteしたほうがいい

pattern = Regexp.compile(table.keys.collect {|key| Regexp.quote(key) }.join('|'))
029627903/07/29 00:45ID:???
>>295
いやぁ、やりたかったことはRubyでPHPみたいなファイルを実行するものなんですけどね。
↓こんな感じ。検索でヒットするパターンが多いからちょっと連想配列は使えないかも。
んで昨日、ERBというライブラリがあることを知ってこれは無駄になりました(´・ω・`)ショボーン

class EzRubyServerPage < Object
  @@boundary = '__BOUNDARY_EZ_RHP__'
  def eval( arg = "" )
    Kernel::eval "$_ = <<"+@@boundary+";\n" + arg.gsub( Regexp.compile('[<%][%>]=?') ){
      ($&=='<%' ) ? "\n"+@@boundary+"\nchop;print;":
      ($&=='<%=') ? "\n"+@@boundary+"\nchop;print;print ":
      ($&=='%>' ) ? "\n$_ = <<"+@@boundary+";\n":
      $&
    } + "\n"+@@boundary+"\nchop;print;"
  end
end
$tokumori = "パパの特盛"
EzRubyServerPage.new.eval("<html><body>ようこそ <%=$tokumori%>へ</body></html>\n")
029727903/07/29 00:53ID:???
>検索でヒットするパターンが多いからちょっと連想配列は使えないかも。

検索速度がorでつなげるより速そうだから [<%][%>]=? なんてしてるんですが
よく考えたらパターンは <%、%>、<%=、%>=、>%、%<、>%=、%<= の8通りだけだから連想配列の方が良いか
まあいいや、ERBとかいうのを使おう...。スレ汚しすんまそん。ハァ
0298nobodyさん03/07/29 00:57ID:???
ちなみに erb は Ruby 1.8 からは標準添付だ。
0299nobodyさん03/07/29 04:29ID:???
>>295
それじゃ自分で正規表現を指定できないではないか
0300nobodyさん03/07/29 23:02ID:SXyppRH6
CGI::Sessionを用いてセッション管理をしようと思うのですが、

利用しなくなったセッションファイルを自動で消去することは
できないんでしょうか?

ある本をよんだら、CGI::Session.sweep()を使うと書いてあった
のですが、エラーが出て使えません。
0301nobodyさん03/07/30 03:09ID:???
>>300
> ある本をよんだら、CGI::Session.sweep()を使うと書いてあった

sweepの定義はその本に書いあるのだと思われ。

利用しなくなったかどうかの判断基準は利用者によって異なる。
だから、一般的な方法は存在しない。
0302nobodyさん03/07/30 04:42ID:???
Rubikitiさん出版おめでとう。
0303nobodyさん03/08/05 00:21ID:???
843 :デフォルトの名無しさん :03/08/01 01:55
るびきち著『Rubyシェルプログラミング−irb&irbsh徹底活用−』8月4日発売です
http://www.gihyo.co.jp/books/syoseki.php/4-7741-1798-6

基本的にこの人は他人との意思疎通が不可能な引き篭り星人な為、
何を言っているのか、何を伝えたいのかが全く見えません。故に専門書としては全く使えません

ではこの本のウリは何か?それは「他人をムカつかせるにはどうすればいいのか?」という厨房必修のスキル養成本としての価値に
他ならないでしょう。礼儀をわきまえない砕けすぎた態度から始まり、徐々に高圧的な態度へ、最後は相手を全否定し卑下し、自分が
相手に比べ、如何に優れた人間であるかを延々と語り続けるその試合運びに、各地厨房サイトから歓声が上がっております
なんとあの、2ちゃんねるネトヲチ板の皆様からも「掲示板のレスが反感を買うための例文集のようだ」とのお墨付きを得ております


そして「絶対零度つまらなギャグ集」としての機能も持ち合わせております。
なぜ、ウケ狙いの小ネタが、そこまでつまらないのか?スベろうと努力したってそこまでつまらない発言できるものではありません
正に天が与え給った才能だNe!! 合コンで思いっきりスベッて周りからジト目で見られてみたいソコのあなた!必読です。

参考文献 Rubyを256倍使うための本 魔道編
0304nobodyさん03/08/06 19:53ID:???
次は農道編キボンヌ
0305山崎 渉03/08/15 22:44ID:???
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0306nobodyさん03/08/23 03:43ID:???
eruby で エラーメッセージをブラウザに表示したいんだけど
できません。
MLをみたら $DEBUG = true
にするとありますが、そうしても変化がありません。。。

どうすればいいんですか?
0307nobodyさん03/08/23 19:08ID:???
Internal Server Error とかで eruby から何も返ってこないなら、
eruby 自体が起動されてないんじゃないの?
サーバーの設定を確認した方がいいような。
サーバーのエラーログが見れるのならそこを見るべし。
0308nobodyさん03/08/23 21:49ID:Ba5Hz+Nk
erubyは動いているんですが、apacheのログを開きながらデバッグするのが
面倒くさいだけなんです。

作っている時だけブラウザにエラーを表示してくれると助かるんですが。

eruby + mod_ruby で使ってます。
手元に環境がないんでversionがわかんないんですが、どちらも最新のものだと思います。
0309nobodyさん03/08/23 22:32ID:???
生成したrubyコードが parse error になる場合はstdoutには何も返さん罠。
コマンドラインで実行してみれ。
0310nobodyさん03/08/24 00:59ID:???
>>313

ruby の parse error は apacheのログには表示されますので、
それをブラウザに表示できる設定がないかなと思ったんです。

stderrはerubyでは拾えないということですか?
0311nobodyさん03/08/24 02:40ID:???
parse error って拾えるのか?
0312nobodyさん03/08/24 05:41ID:???
つーかコマンドラインで表示されるエラーを
なんでブラウザで見たいのかがさっぱり分からん
0313nobodyさん03/08/24 06:34ID:3TVF6Tbn
>312
CGIの引数渡すのがめんどくさいんだろ
031431203/08/24 10:00ID:???
>317
めんどくさいていうか、わかんないんです。
コマンドラインでPOSTデータやcookieデータを渡す方法が。

0315あぼーんNGNG
あぼーん
0316nobodyさん03/08/24 20:16ID:???
parse error になるかどうかと入力の有無は関係ないと思うのだが
031731203/08/25 00:38ID:???
別に parse errorばかりのことをいっているんじゃなくて、
例外が発生しても Internal server errorになるわけで。

できないんなら、できないでいいんだけど。
煽られるのって楽しいね。
0318nobodyさん03/08/25 01:25ID:???
おいおい、parse error以外の例外は大抵捕捉できるだろ
つーか、311=312なの??
0319nobodyさん03/08/25 09:27ID:???
どれが>>306かいまいち分からんが、
実行時の例外は $DEBUG=true しとけばブラウザで確認できるはずだから
インタプリタがコンパイルできるかどうかだけはコマンドラインでeruby実行して
調べれっていわれてるんでしょ。
0320nobodyさん03/08/25 14:17ID:IWdWlewI
IISでeRubyって無理なのかな・・・
0321nobodyさん03/08/25 15:13ID:???
ISAPIにすればいけるんでない?
0322nobodyさん03/08/25 18:59ID:???
あれ、eRubyは昔はparse error もバッチリブラウザに出てたけど・・・
ソース丸見えになるのでデフォルトでこれは勘弁と思ったものだ。
0323nobodyさん03/08/26 01:50ID:???
>323
mod_ruby を外したらブラウザに表示できました。
mod_ruby + eruby だと表示できないようです。

--
mod_ruby 1.0.5
ruby 1.6.8 (2003-03-26)
eRuby version 1.0.3
0324nobodyさん03/08/26 11:26ID:???
>>323
なるほど、と思ってソースのあたりをいろいろ探して見た
httpd.conf で
RubyRequire apache/eruby-run -> RubyRequire apache/eruby-debug
RubyHandler Apache::ERubyRun.instance -> RubyHandler Apache::ERubyDebug.instance

に変更したらparse error もブラウザに出た
しかし、HTTPサーバごとデバッグ環境にしなけりゃならんのだなあ・・・
0325nobodyさん03/08/26 22:36ID:???
埋め込みコード系(ERB,eruby)よりHTML::Templateを勧める。

http://raa.ruby-lang.org/list.rhtml?name=html-template2

他の環境(オブジェクト、DB)を変更する副作用が一切ないから
思う存分プレゼンテーションロジックのデバッグが出来る

ビジネスロジックはTest::Unitできちんとテスト書きましょう
0326nobodyさん03/08/31 13:41ID:???
テンプレートなら、amritaと言うライブラリもあるよ。
0327nobodyさん03/09/01 20:45ID:???
>>326

amritaは名前空間が判りづらいから嫌い。
0328nobodyさん03/09/02 06:02ID:jo93f+PB
rubyでCGIを書くにあたって、使ってるデザインパターンとかあります?
0329nobodyさん03/09/03 02:26ID:???
nora はどう?
0330nobodyさん03/09/03 02:41ID:6XWfASQR
HTML::Templateについて詳しいサイトないですか?
html-template.rdだけじゃ、複雑なことしたいときどーすりゃいいか分からん
0331nobodyさん03/09/03 22:54ID:???
1.8.0にしてみた
ENV[]から代入した文字列は変更不可だった
とりあえずひっかかったのはいまのとここれだけ
0332nobodyさん03/09/04 02:16ID:???
freeze するようになったんだっけか。
変数にアサインしてもStringオブジェクト自体はかわらんからね。
dup すれ。
0333nobodyさん03/09/04 10:48ID:???
サンクス。dupで対応したけど
Rubyの使用が最も少ないサーバ(ほとんどphpとPerl)を選んで
入れたのに、いきなり出たんでちょっと別のサーバに持ってくのは
慎重にならざるをえないな・・
0334nobodyさん03/09/07 18:35ID:90cSPk+W
コマンドラインからは動くCGI(HTMLを期待通り出力する)
が、サーバから動かない時って、どんな可能性があるでしょうか?
INTERNAL_SERVER_ERRORになってしまいます。
以下のことは確認しました。何か理由思いつかないでしょうか?

実行可能になっています。
そのディレクトリにwwwがファイルを作れるようになってます。
Apacheの設定でCGIを使えるようにしています。
#!/usr/local/bin/rubyを文頭に書いてます。
print "Content-type: text/html"はあります。
0335nobodyさん03/09/07 18:46ID:???
>>334
apacheのエラーログには何か出てない?
suEXEC関連のエラーなら、そっちのログも(ディレクトリがグループ書き込みできると実行できない)
033633403/09/07 19:18ID:90cSPk+W
>>335
やっと、できました!!
あーよかった。もうちょっとで一日が無駄になるところでした(^^;)

Apacheのログみてたら、book1~ に対してPermission deniedとか書いてあったので、
book1~を削除したら、動いてくれました。
PStoreの保存するファイルの名前がbook1で、コマンドラインから実行していた時に
book1やbook1~が作られていました。
book1の方は消していたのですが、book1~は気にせず残したままでした。

ありがとうございました。これからは、CGIが動かない時、Apacheのログもよむことにします。

ちなみに、他にでてたエラーのキーワードは、こんな感じです。
同じようなエラーが出た時に検索にかかるように、載せておきます。
Premature end of script headers: wook.cgi, referer: http://localhost/cgi-bin/***.html
/usr/local/lib/ruby/1.8/ftools.rb:23:in `initialize': Permission denied - ./book1~ (Errno::EACCES), referer: http://localhost/cgi-bin/***.html
/usr/local/lib/ruby/1.8/ftools.rb:23:in `open', referer: http://localhost/cgi-bin/***.html
from /usr/local/lib/ru
by/1.8/ftools.rb:23:in `syscopy', referer: http://localhost/cgi-bin/***.html
from /usr/local/lib/ruby/1.8/ftools.rb:43:in `copy', referer: http://localhost/cgi-bin/***.html
などでした。

ホントありがとうございました!
0337nobodyさん03/09/08 00:50ID:???
すんません
URLエンコードってどうすればよいんでしょ‥?
0338nobodyさん03/09/08 01:40ID:???
>>337

require 'cgi'
CGI.escape

そういう意味じゃなくて?
まあcgi.rbの中見ればわかる
033933703/09/08 01:57ID:???
取り敢えず、エンコード部分は、CGI.escapeと同じにしてみたんだけど
どうやら、IEが返してくるENV['HTTP_COOKIE']の値が想定していたのと違うみたい
writeから始まって、値のみがカンマ区切りで入っているデータが返ってくるようで
キーはどこいったの??って感じです

値を変えてみてしてみたのですが、返ってくるENV['HTTP_COOKIE']の値が変わらず‥
path指定を消して、再度値を変えてみてしてみたのですが、変わらず‥

以下のメソッドの結果をそのままプリントしているのですが、なにかまずいでしょうか?
def mkCookie(recipe, expiryDate = 30, path = nil)
 t = (Time.new.to_i + (expiryDate * 86400)).to_i
 t = Time.at(t).gmtime.strftime("%a, %d-%b-%Y %H:%M:%S GMT")
 text = ''
 recipe.each do |key, value|
 text << "Set-Cookie: #{escape(key)}=#{escape(value)}; expires=#{t};" + (path ? " path=#{path};" : '') + "\n"
 end
 text
end


ひょっとして、クッキー使用前に使ってた
IE Powertoys Plus!のどこでもクッキーが???
034033703/09/08 08:54ID:???
おは
関係のあるCookieを全て削除したらどうやらスクリプト側で受け取るものは正常になっていました

Cookieのファイルを見た感じの違いはキー・値のペアの区切りが改行になっているか「*」になっているかの違いでした

どうしてそうなったのか、Cookieはなぜ上書きされなかったのかは不明‥
0341nobodyさん03/09/08 10:36ID:???
>>330
具体的になにがしたいんだ?
HTML::Templateでは、テンプレート側では複雑なことはできない。
複雑なこと(例えば複雑な条件式など)は、ぜんぶメインプログラム側で行う。
0342nobodyさん03/09/09 01:02ID:64dJm4LW
HTML::Templateってparam()にセットした配列がテンプレート内で
使われてないとエラーになんの?
0343nobodyさん03/09/09 09:58ID:???
>>342
どんなエラー?
実際のスクリプトとテンプレート、それにエラーメッセージをみせろ。
0344nobodyさん03/09/09 10:23ID:64dJm4LW
----hogehoge.rb----
templ = HTML::Template.new('hogehoge.html');
templ.param({'test'=>true});
array = [{'host'=>'book.2ch.net','board'=>'bizplus'},
{'host'=>'news5.2ch.net','board'=>'newsplus'},
{'host'=>'news4.2ch.net','board'=>'news'}];
templ.param({'array'=>array});
print(templ.output);
------------------

----hogehoge.html----
<!begin:test>
<!begin:array>
HOST:<!var:host>
BOARD:<!var:board>
<!end:array>
<!end:test>
---------------------

----error message----
./template.rb:78:in `node': node array not found (ArgumentError)

from ./template.rb:62:in `param'
from ./template.rb:61:in `each'
from ./template.rb:61:in `param'
from ./template.rb:59:in `each'
from ./template.rb:59:in `param'
from ./hogehoge.rb:9
--------------------
0345nobodyさん03/09/10 19:14ID:???
>>344
これって、どのHTML::Templateを使っている?
おれが使っているのは
http://raa.ruby-lang.org/list.rhtml?name=html-template2
なんだけど、テンプレートの書き方がなんか違うね。

それはそうとエラーの原因は、
(1)テンプレートで記述している木構造と
(2)テンプレートに与えているデータの木構造
が異なることが原因だろ。
(1)では test の下に array があるが、
(2)では test と array が兄弟になってないか?
034634503/09/10 20:46ID:???
>>344
おれの勘違いだったかも。

ループのまわりをif文で囲むと、どうもうまくいかないみたい。
表示する/しないをif文で制御するのではなく、
ループするデータがある/ないで表示を制御するとうまくいく。

------- sample.html ------
<TMPL_LOOP NAME="list">
HOST: <TMPL_VAR NAME="host">
BOARD: <TMPL_VAR NAME="board">
</TMPL_LOOP>
--------------------------

034734503/09/10 20:47ID:???
つづき。

-------- sample.rb -------
#!/usr/bin/ruby

require 'html/template'

test = true # or false

list = [
{ 'host' => 'book.2ch.net', 'board' => 'bizplus', },
{ 'host' => 'news5.2ch.net', 'board' => 'newsplus', },
{ 'host' => 'news4.2ch.net', 'board' => 'news', },
]
param = {}
if test then
param['list'] = list
else
param['list'] = []
end

template = HTML::Template.new('filename' => 'sample.html')
template.param(param)

print template.output
--------------------------
■ このスレッドは過去ログ倉庫に格納されています