トップページ⇒tech
1001コメント329KB

Ruby 初心者スレッド Part 31

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/09/17(木) 17:31:07
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

★注意★ Ruby 1.9.1 は初心者には時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
   (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に未対応であるためです。)
 なお 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 で勉強すれば将来スムーズに 1.9 系に移行できるでしょう。

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
 ・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0153デフォルトの名無しさん2009/09/19(土) 08:32:23
俺もちょっと不思議に思ったからググってああなるほどと思ったクチだが
別に「Marshal使ってるオレかっこいい」じゃないだろw
Ruby本でも書かれるような一般的な小技なんだろ

まあ上でも言われてるが初心者にネタを見抜けってのはきついから
ネタなしかネタだと明らかに分かるよう書いてほしいのはあるが
0154デフォルトの名無しさん2009/09/19(土) 08:37:29
>>152
知らんよ
Marshal.load して dump するというのは「はいれつがこぴーできません」に対する FAQ だ
きちんとマニュアルにも書い…書…注釈に小さく書いてある
ttp://www.ruby-lang.org/ja/man/html/Object.html#footnote-1

知っていることも使用することも問題は特段存在しない
Marshal.dump を知っているレベルで for や定数を使うことが「ありえない」から叩かれてるのだろ
0155デフォルトの名無しさん2009/09/19(土) 08:39:34
Array や Hash の複製が欲しいときにいつも歯がゆく思うんだけど
なんで Object には deep copy のためのメソッドがないのかな?

サブクラス作るたびに適切にオーバーライドする必要が出て面倒だからだろうか
0156デフォルトの名無しさん2009/09/19(土) 08:56:27
>>155
実際にRubyスクリプトとして作るとわかるが循環解決でわけわかめになる
marshal.のソース流用しようとするとT_DATAであっぴゃーになる
dumpしてloadよりも早くてうまくて短い実装があるならMLで発表だ

基本、ディープトラバースして欲しくないらしいぞ
Rubyで提供されてるディープトラバース手段はMarshalだけだ
Marshalできないやつはそもそも複製できんオブジェクトだったということで
0157デフォルトの名無しさん2009/09/19(土) 09:23:29
怖いからYAMLにして戻すってのは?w
0158デフォルトの名無しさん2009/09/19(土) 09:30:36
>>154
>知っていることも使用することも問題は特段存在しない
問題はそこじゃない。初心者への回答という観点を忘れ、ろくに説明もなしにコードだけ書いて満足していることが問題。
0159デフォルトの名無しさん2009/09/19(土) 09:39:28
dump が目的の場合に Marshal ではなく YAML を使うメリットはゼロ
0160デフォルトの名無しさん2009/09/19(土) 09:40:25
>>158
説明はされた
0161デフォルトの名無しさん2009/09/19(土) 09:56:20
説明しなくても分からなきゃ自分で調べるだろ
0162デフォルトの名無しさん2009/09/19(土) 11:16:12
>>160
あとからな。ここでいっているのは、最初の>>142の時点で何の説明もないことだろ。
0163デフォルトの名無しさん2009/09/19(土) 11:26:23
どうしてもMarshalに突っかかってるようにしか見えないが
そこは全く問題ないだろ

forの方を言うならまだわかるが
0164デフォルトの名無しさん2009/09/19(土) 11:33:22
なんか一人顔真っ赤にして頑張ってる姿が目に浮かぶんだが

>>147が>>139,142のようなのは初心者に有害だからやってほしくないと真摯に考えるのなら
その場で「Rubyでforは滅多に使わねえよカスeach使え」
「大文字で始まる識別子は定数だからLとかそんな風に使うなボケ」
「巣に帰れ二度と戻ってくるな」といったツッコミをいれるべき
0165デフォルトの名無しさん2009/09/19(土) 11:45:02
Marshal を知らなかったのが悔しくて悔しくて悔しくて悔しくて悔しくてたまらないのだろ自称脱初心者が
0166デフォルトの名無しさん2009/09/19(土) 12:02:02
>>164は、>>142での説明がないのに「説明はされた」とほざいている>>160の必死の答弁でした。
160先生の次回作をお楽しみに。
0167デフォルトの名無しさん2009/09/19(土) 12:05:26
どっちが必死なんだよw
0168デフォルトの名無しさん2009/09/19(土) 12:06:17
マジ顔真っ赤だなあ・・・w
説明がないと思ったなら他の人が説明するもよし
分からなきゃそれを質問するもよし
だろう
0169デフォルトの名無しさん2009/09/19(土) 13:40:16
ごめん、俺がMarshalなんて・・・っていったばっかりに、こんなことに(´・ω・`)
ごめんなさい、ごめんなさい。双方とも頭冷やしてくだしあ
0170デフォルトの名無しさん2009/09/19(土) 13:44:38
いや、Marshalは正しい解答の一つでしょ
あやまるならforとか定数とか変に使ったことをあやまってくれよw

まあ(ちゃんとした)議論になればいろんな情報が出てくるからいいのかもしれんけどね
0171デフォルトの名無しさん2009/09/19(土) 13:58:09
>>142で既にあやまってるなw
0172デフォルトの名無しさん2009/09/19(土) 14:23:19
"[hoge]"とか"{hoge}"みたいな文字列の前後の括弧を取り外すのに

"[hoge]".sub(/\[(.+?)\]/){$1}

なんかじゃなくて、なんかもっとスマートな方法はありませんか?
01731722009/09/19(土) 14:26:22
できれば
"[hoge]".split(//)[1...-1].join
も無しの方向で。
0174デフォルトの名無しさん2009/09/19(土) 14:28:01
"[hoge]"[1...-1] では駄目と申すか。
0175デフォルトの名無しさん2009/09/19(土) 14:36:42
String[] の動作が期待に添っていて、短いのがスマートだと勘違いしているのなら、>>174
そのまんまの正規表現でマッチした部分を取り出す以上のわかりやすいスマートなものはないかと思われ

str =~ /\A[\(\{\[<](.+?)[\)\]\}>]\Z/; $1

開きカッコの対応を取るライブラリは標準では無いので自作してくれ
0176デフォルトの名無しさん2009/09/19(土) 14:38:04
というかカッコの対応は正規表現では本来書けない。
とCマガで大昔に読んだけど、最近の拡張しまくりのだと可能かもなー。
0177デフォルトの名無しさん2009/09/19(土) 14:48:30
後ろの1文字はchopで毟れるけど、先頭の1文字を毟り取るメソッドっ
てないよな。
0178デフォルトの名無しさん2009/09/19(土) 14:51:08
>>177
その手があったか

"[hoge]".chop.reverse.chop.reverse
0179デフォルトの名無しさん2009/09/19(土) 14:52:59
>>178
ちょwwwwwプwwwww
0180デフォルトの名無しさん2009/09/19(土) 14:54:21
小橋の回転チョップを思い出した
0181デフォルトの名無しさん2009/09/19(土) 17:26:08
右のほうをチョップされたら左のほうを差し出せ
0182デフォルトの名無しさん2009/09/19(土) 20:20:22
×ほう
○ほお
0183デフォルトの名無しさん2009/09/19(土) 20:28:43
>>172
"[hoge]"[/\[(.+?)\]/, 1]
とも書ける。

>>175
Onigurumaならできるはず。
0184デフォルトの名無しさん2009/09/19(土) 21:00:13
すんません。このスレどっからドコまで自作自演なんてしょうか?
0185デフォルトの名無しさん2009/09/19(土) 21:06:16
ココまで俺の自演
0186デフォルトの名無しさん2009/09/20(日) 05:42:36
require ってなんで複数のライブラリ名を受け付けないんでしょうか。
けっこう不便なんですけど。
0187デフォルトの名無しさん2009/09/20(日) 05:58:31
>>186
リファレンスを見たらわかることではないでしょうか?
0188デフォルトの名無しさん2009/09/20(日) 06:35:34
書いてはあるが、意図を読み取るのは不可能だと思う

>>186
require が真偽値を返すメソッドとして作られているから、がいちおうの答
複数受け取ったときは真偽値の配列を返すようにしてもいいんだけど、おおむねキモい

each で回してもいいはずなんだけど、そういう人はなぜか見ないね
0189デフォルトの名無しさん2009/09/20(日) 06:46:28
かなり初期に一瞬だけ実装されたことがあったと記憶
false が返ってきたほうが便利だということでお流れになったんでなかったかな
0190デフォルトの名無しさん2009/09/20(日) 07:50:00
ふとした疑問なのですが、Mechanizeのテストというのはどのように書いたものでしょうか?
0191デフォルトの名無しさん2009/09/20(日) 08:22:58
>>190
FakeWeb 1.2.6 API Documentation
http://fakeweb.rubyforge.org/

FakeWeb使ったらいけるかも…
0192デフォルトの名無しさん2009/09/20(日) 11:46:12
test
0193デフォルトの名無しさん2009/09/20(日) 11:51:53
>>192
それはRubyで作った2chブラウザのテストですか?
0194デフォルトの名無しさん2009/09/20(日) 12:34:04
186です。

>>188
なるほど!たしかにrequireは戻り値がありますね。でも戻り値を気にする場面っていうのはまれなので、
そういう理由で複数の引数を指定できないのはちょっと勿体ないですね。

Railsとかには require_all というのがあるそうなので、戻り値を気にしなくていいから
引数を複数とれるバージョンのrequireを、requireとは別に用意してほしいなと思いました。
0195デフォルトの名無しさん2009/09/20(日) 12:34:37
yes,we can
0196デフォルトの名無しさん2009/09/20(日) 12:59:39
>>194
なければ自分で作るという選択肢ももとう
0197デフォルトの名無しさん2009/09/20(日) 13:01:42
require を再定義すればいい。
0198デフォルトの名無しさん2009/09/20(日) 16:09:37
\
..  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                 /\(<●>)/\    /\(<●>)/\
                 /\(<●>)/\  /\(<●>)/\
                /\(<●> )/\  \(<●>)/\
             /        \\(<●>)/\
           /   ,ゝ===く   <●>)/\  
           !  γ      `ヾ,_   \
          │ :く(   r,J三;ヾ   )>   \
          l    =; {三●;= }  ,=ニ    l
           ヽ   ゝ≡三=イ       /     <>>1ワロタw
            ヽ       .,,,.    /.|
               ヽ  'ぐ'''''''' /    / ト,
             ヽ.  ヾ''" /  /  |ヽ
             ,./ヽ  `´  /    ./  \、
      -‐ '''"  ̄ /  :| \,,,__,,,, /    /    | `'''‐- 、.._\
0199デフォルトの名無しさん2009/09/20(日) 16:17:33
eRubyとMySQLをつかって、DBに写真のアップをしたいのだけど

<form action="syasinhenkou.rhtml" method="post" enctype="multipart/form-data">
<input type="file" name="syasin" size="30" maxlength="100">
<input type="hidden" name="id" value="<%= cgi["id"] %>">
<input type="submit" value="登録">
</form>

ってかんじで、ファイルを登録用のページにおくりたい

sql = "UPDATE rireki SET"
sql += " syasin = '" + cgi["syasin"] + "'"
sql += " WHERE id = '" + cgi["id"] + "'"
sql += ";"
my.query(sql)

受け側はこんな感じで書いてみた。
IDのところに変な文字列が入ってアップデートされないいのだけど
enctype="multipart/form-data"のオプションのせいだよね。
ファイルを送るときは、このオプションがいるみたいだけど
どうしたらいいかな?

DB側のidがキーで文字列、syasinがBLOB型でやってる
これでDBにファイルが送れるのかもよくわからんのだけど
教えてくれるとありがたいです。
0200デフォルトの名無しさん2009/09/20(日) 17:25:56
>>199
idの所が変になるんじゃなくて、cgi['syashin']以降が変になってるはず
blobとかのバイナリオブジェクトは文字列の連結でSQLを作れない
プリペアードステートメントとかを使え
0201デフォルトの名無しさん2009/09/20(日) 17:56:53
blobじゃなくても普通プリペアードステートメント使うとこだろ
0202デフォルトの名無しさん2009/09/20(日) 18:41:08
何で空配列がかえってくんねん
空文字列ちゃうん?

>> "a".split(/a/)
=> []
>> "aa".split(/a/)
=> []
>> "ab".split(/a/)
=> ["", "b"]
0203デフォルトの名無しさん2009/09/20(日) 18:43:58
空配列に空文字列がつっこまれるべきちゃうん?

[""]
0204デフォルトの名無しさん2009/09/20(日) 18:57:36
>>194
%w(lib0 lib1 lib2).each{|feat| require feat}
でいいじゃん
0205デフォルトの名無しさん2009/09/20(日) 19:12:10
>>202-203
新リファレンスマニュアルから抜粋

> instance method String#split
> split(sep = $/, limit = 0)

> 第 2 引数 limit は以下のいずれかです。

> limit == 0
> 分割個数制限はなしで、配列末尾の空文字列を取り除く
> limit < 0
> 分割個数の制限はなし

「配列末尾の空文字列を」いくつあっても全部「取り除く」ってことなんだろうな多分
それがデフォルトの動作である理由は知らん
0206デフォルトの名無しさん2009/09/20(日) 19:23:06
> 「配列末尾の空文字列を」いくつあっても全部「取り除く」
こんなん知らへんかったがな。おーきに

理由は実装上の都合なんやろなぁ
0207デフォルトの名無しさん2009/09/20(日) 19:33:54
Perlがそうだったから。
Perlがそうだった理由は知らん。
0208デフォルトの名無しさん2009/09/20(日) 22:23:37
>>206
web上では関西弁禁止だよ?知らないな?他の方言ならいいけど
0209デフォルトの名無しさん2009/09/20(日) 22:53:07
>>199
syasinじゃなくてphotoとかpictureつかえ
0210デフォルトの名無しさん2009/09/20(日) 23:01:59
1.9からThreadにかわりFiberというのが入ったそうですが、どうやって使うものでしょうか。
ぐぐってみたけど、上級者向けの説明しかなくてさっぱりでした。
例:Fiberはいわゆるコルーチンです。←コルーチンが何かわからないからさっぱり理解できない説明

高校生でもわかるような説明をどなたかお願いできますか。
0211デフォルトの名無しさん2009/09/20(日) 23:13:30
>>200-201
Ruby/MySQLではプリペアードステートメントつかえない?

MySQL/Rubyじゃないとだめ?
0212デフォルトの名無しさん2009/09/20(日) 23:17:15
>>210
Threadなくなったわけじゃないし、上級者(地雷踏み?)向けの機能だから忘れていいよ
否定的なこと言われてるし
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/31601
0213デフォルトの名無しさん2009/09/20(日) 23:58:30
>>211
こんなのもある
http://d.hatena.ne.jp/tmtms/20090729/1249183003
0214デフォルトの名無しさん2009/09/21(月) 00:21:13
>>211
出来るみたいだけど使ってないんで確認はしてない
ttp://planet.mysql.com/entry/?id=18088
stmt = my.prepare("select ?,?")
stmt.execute 123, "abc"
stmt.fetch # => [123, "abc"]
0215デフォルトの名無しさん2009/09/21(月) 00:43:01
refe2簡単に入れたいけどパッケージとかある?
0216デフォルトの名無しさん2009/09/21(月) 00:58:24
そんなに面倒なことはない気がするんだが
0217デフォルトの名無しさん2009/09/21(月) 01:37:34
>>213-214
プリペアードステートメントは
MySQL/Rubyをいれて解決した

あとは、ファイルのアップだけど
st = my.prepare("UPDATE rireki SET syasin = ? WHERE id = ?")
st.execute(cgi["syasin"].read,cgi["id"].read)
res = st.fetch

って書いてみたところ、MySQLのほうから

2053
Attempt to read a row while there is no result set associated with the statement

って怒られた・・・・BLOBだとだめなんか?
こんなところで詰まってるようだと、表示にもてまどりそう
っていうか、表示できるのか?
0218デフォルトの名無しさん2009/09/21(月) 03:42:41
MySQLの本でも買えよ・・・またはRails使うか
0219デフォルトの名無しさん2009/09/21(月) 04:02:16
>>217
エラーメッセージの意味はわかる?
SQL文を実行したけどresult setが返されなかった、なのに行を読み込もうとしてエラーになっている、という意味。
SQLをみるとupdate文を実行しているよね。だからresult setは返ってこない。なのに st.fetch しようとしているからエラーになっているだけ。
これがselect文だったらfetchできるけど。
0220デフォルトの名無しさん2009/09/21(月) 11:47:02
>>219
SERECTしたらはいってた〜〜!!
ありがと〜〜!!!

表示のほうも、相談にのってください
格納したデータを

<img src="data:image/jpg;base64,/9j/4AAQ....中略.....">

って感じには表示できるのですが
これだとIE6では見れない。
エンドユーザにFF入れろとか言えないし
IEでも表示させる方法ありますかね?
0221デフォルトの名無しさん2009/09/21(月) 12:24:04
もはやRuby関係なし
0222デフォルトの名無しさん2009/09/21(月) 12:41:30
どうみてもHTMLの質問です
動的か静的かは用途次第だけど、素直にURL割り当てろって
0223デフォルトの名無しさん2009/09/21(月) 12:54:14
http://pc12.2ch.net/test/read.cgi/tech/1251609039/
スレ立てるまでもない質問はここで 100匹目
http://pc12.2ch.net/test/read.cgi/tech/1054813207/
【漏れは】猫でもわかる質問スレ【猫以下です】
0224デフォルトの名無しさん2009/09/21(月) 13:26:50
>>220
アホだなぁ。
base64デコードして出力すればいいだろが。
Content-Typeヘッダも適切に吐いてね。

あ、スレチだね。
0225デフォルトの名無しさん2009/09/21(月) 13:51:04
>>220
さすがにスレ違いすぎるけど。
src="data:..." は IE6 ではサポートされてない。これはブラウザを変えてもらう以外に方法はない。
だから data: を使わずすなおに画像を別ファイルにしておこう。

あるいは http://example.com/cgi/jpg.cgi?base64=.....(base64文字列)....
が画像ファイルを返すようなCGIを用意して、
src="data:..." をすべて src="http://example.com/cgi/jpg.cgi?base64=...." に変換するとか。
0226デフォルトの名無しさん2009/09/21(月) 18:26:18
アホです。すんません。
>>224-225
URLの?以降の文字列はENV['QUERY_STRING']で受け取れるはず
そいつをデコードして元に戻すって考えて

#!/usr/local/bin/ruby
require 'base64'
file = ENV['QUERY_STRING']
out = decode64(file)
print "Content-Disposition: filename=\"syasin.jpg\"\n"
print "Content-type:image/jpge\n\n"
print out

って言う具合に組んでみた。
700バイトとかの小さいファイルだとうまく行くんだけど、
8kぐらいのファイルになると表示できなくなるな

そもそも、CGI呼べてないっぽい
これもRubyのはなじしゃないよね(涙
0227デフォルトの名無しさん2009/09/21(月) 18:59:21
アホなりに解決しました。

どうもbase64のコードが長すぎでうまく行かなかったっぽいので
idを指定してDBから画像を引っ張って垂れ流すだけのCGIを作成しました。
idなら長くても50桁とか行かんので、これで解決!!
いろいろ、ご迷惑おかけしました。
ヒント本当に助かりました。ありがとうございます。
0228デフォルトの名無しさん2009/09/21(月) 19:05:28
>>226
>700バイトとかの小さいファイルだとうまく行くんだけど、
>8kぐらいのファイルになると表示できなくなるな

ENV['QUERY_STRING'] をそのままつかってるのが問題なんじゃないかな。
(つまりENV['QUERY_STRING']に %2F や %2B が含まれているんだろう。)
URLエンコードされているからデコードしないと。
require 'cgi'
qstr = ENV['QUERY_STRING']
out = decode64(CGI.unescape(qstr || ""))
詳しくは
ttp://blog.s21g.com/articles/319
をみてくれ。
0229デフォルトの名無しさん2009/09/21(月) 20:00:17
いやいや、というか
そんな巨大なデータをクエリ文字列としてURIで渡すなよ、と。
0230デフォルトの名無しさん2009/09/21(月) 20:02:48
URLの長さ上限は、普及しているブラウザでは、一番短かいIEが
2083バイトだったかね。

0231デフォルトの名無しさん2009/09/21(月) 20:04:53
一発でroot奪取されかねない素敵コードだな
0232デフォルトの名無しさん2009/09/21(月) 21:06:05
なんかワロタw
0233デフォルトの名無しさん2009/09/22(火) 14:17:19
ルヴィーっておもしろいですか?ルヴィー使ってる友達が、開発者が日本人だから誇らしいと言ってました
0234デフォルトの名無しさん2009/09/22(火) 14:23:06
>>233
またお前か。
もういいから自分の巣に帰れ!
0235デフォルトの名無しさん2009/09/22(火) 15:31:24
URIのやり取りでトンネル掘り出すアフォとか出てきそうだな。
0236デフォルトの名無しさん2009/09/22(火) 19:39:02
$0とか__FILE__とかARGFとか・・・
最初から備わってる変数が色々ありますけど、どうしてこんなに表記法に統一性が無いのですか?
0237デフォルトの名無しさん2009/09/22(火) 20:31:24
変数
0238デフォルトの名無しさん2009/09/22(火) 21:03:37
>>236
Larry Wallに聞いてくれ
0239デフォルトの名無しさん2009/09/22(火) 21:08:08
Larryにそんなことを聞いたら
Perlの文法が言語学的にどう優れているのかの講義が始まるぞ
そしてハッシュの頭になぜ%が付くのかを聞いたらPerl信者になること確実だからやめておけ
0240デフォルトの名無しさん2009/09/22(火) 21:28:45
$0はsh
__FILE__はC
ARGFはARGVの発展系、ARGVはCのmain関数の引数argvが元になっている
どれもこれもunix+Cを知ってれば、なじみの物ばかりだ
02412362009/09/22(火) 22:02:34
ありがとうございます。他言語からの習慣に習って付けてるんですね。
でもARGFはどうして定数なんでしょうか?Cだとargvなんかは変数ですよね。
__FILE__は擬似変数で$0はグローバル変数と全部違うけど、どれもグローバルにアクセスしたいものだから
統一してしまえばいいのに、と思ったのです。
ここら辺の、定数やグローバル変数、擬似変数といった使い分けは実装内部のことが分かるような人じゃないと理解できないのでしょうか。
0242デフォルトの名無しさん2009/09/22(火) 22:06:29
ARGFは大文字で始まる
__FILE__は違う
0243デフォルトの名無しさん2009/09/22(火) 22:08:10
定数だったNILが変数nilになったりしてるから絶対的な境界は無いんだろう
ARGFをグローバル変数にするのはおかしな話だが、何でといわれても説明できん
0244デフォルトの名無しさん2009/09/22(火) 22:23:44
ARGFはARGVの発展系、ARGVが大文字でグローバルなのは多分awkが元
他の言語もそれに習ってるからrubyもそれに習っているんだろう
0245デフォルトの名無しさん2009/09/22(火) 22:27:10
>>241
どこかでMatzが
「特殊変数周りの仕様はPerlから引きずった。今では後悔している」
的なことを書いてたような

いずれにせよ、一貫性がないという意見には同意
0246デフォルトの名無しさん2009/09/22(火) 22:41:46
Perlからの脱却
ってのがRubyの精神じゃなかったっけ…
0247デフォルトの名無しさん2009/09/22(火) 22:44:06
Ruby2.0では特殊変数は一新するんじゃない?
0248デフォルトの名無しさん2009/09/22(火) 23:22:18
以下のような感じでセッションにアクセスしているのですが
リロードするたびにセッションIDが変わってしまいうまく数値を取り出せないです。
どなたか助言をよろしくおねがいします。

def GetSession()
cgi = CGI.new
session_option = {"tmpdir" => "./"}
session = CGI::Session.new(cgi, session_option)
return session
end
0249デフォルトの名無しさん2009/09/22(火) 23:43:38
色々と突っ込みたい所はあるが、まずはtmpdirにセッション情報が書き込まれたファイルが存在しているかどうかを確認するんだ。
0250デフォルトの名無しさん2009/09/22(火) 23:48:07
ファイルが作成されているのが確認できました。
リロードするたびに増えていきます。
サーバー側の問題でしょうか?
0251デフォルトの名無しさん2009/09/22(火) 23:58:52
ようし、じゃあ次はFirefoxにFirebugを入れてcookieの受信と送信ができているか確認するんだ。
CGIモジュールの仕様はよく知らんが、きっとセッションIDをクッキーに入れて送ってきてくれているはずだぞ!
0252デフォルトの名無しさん2009/09/23(水) 00:15:52
クッキーのリストが反応しないみたいです、他のサイトだとExpiresの項目にsessionというのが出てきています。
■ このスレッドは過去ログ倉庫に格納されています