5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

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

Rubyについて Part46

1 :デフォルトの名無しさん:2011/12/26(月) 00:26:17.77
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

= 前スレ
Rubyについて Part 45
http://toro.2ch.net/test/read.cgi/tech/1317639700/


666 :デフォルトの名無しさん:2012/02/20(月) 18:56:55.65
>>641
IOのバグってどんなのでした?
ruby 1.9.3p125 (2012-02-16 revision 34643) [i386-mingw32]をビルドしてみたところ
・テキストモードなのにLFしか出力しない
・なんだかIOが遅い
・File.expand_path のエンコーディング
っていうのは直ってるみたいなんですけど

・File.chmodで日本語がエラー
・IO.foreach('hogehoge',mode:'rb') がバイナリモードにならない(2.0dev snapshotでも直ってねー)
・Dir.openに \区切りのパスを渡すと開けないことがある(2.0dev snapshotでも直ってねー)
ってのは未修正でした
File.chmodで日本語が通らないとFileUtil(src,dst, preserve:true) がエラーになるんだよね
あとなんかあったかな

・IOの直接ファイル入力メソッド(read,readlines,foreach)で オプション binmode:true がエラーになる
ってのは仕様の変更?
2.0でもダメだった、1.9.2なら受け付けるんだけど


667 :641:2012/02/20(月) 21:26:30.79
>>666
俺が待ってるのは
・IO.foreach('hogehoge',mode:'rb') がバイナリモードにならない(2.0dev snapshotでも直ってねー)


668 :デフォルトの名無しさん:2012/02/20(月) 21:43:17.16
ちゃんとバグ報告しているか?

669 :デフォルトの名無しさん:2012/02/20(月) 22:53:02.23
IO.foreachはmodeというキーワードを受け付ける仕様になってないんじゃないの
Windowsで試してないけど、open_args:["rb"]とかどうかね
modeを受け付けないなんて仕様バグだ!open_argsなんてキモイ!という主張ならわからんでもない

670 :669:2012/02/20(月) 22:58:36.49
ああごめん適当なこといったあげく下げ忘れ
open_key_argsは中でrb_io_open呼んでるんだからmode受け付けないとおかしいわな

671 :デフォルトの名無しさん:2012/02/21(火) 00:35:32.32
1.9.2だと
IO.foreach('hogehoge',mode:'rb') がちゃんとバイナリモードになるんですよ

ちょっと訂正
File.chmodで日本語が通らないとFileUtil.cp(src,dst, preserve:true) がエラーになる

>>666 は全部Windows環境だけの話ですから
あまり影響を受ける人がいないのでしょうか

>>668
小心者なので
そんなことはできません


672 :デフォルトの名無しさん:2012/02/21(火) 11:37:10.02
小飼弾の喋り方は気持ち悪すぎなんだよ
どっから声出してんだよ


673 :デフォルトの名無しさん:2012/02/21(火) 12:36:44.99
LLバトロワスレ逝けやゴミカス >>672

674 :デフォルトの名無しさん:2012/02/21(火) 12:47:58.00
>>673
まだ表示してるの?
2chではまともな文脈がつかない単語なのに

675 :デフォルトの名無しさん:2012/02/21(火) 18:29:13.22
訂正
IO.foreach がバイナリモードにならないのはEnumeratorだけでした
普通のブロック内ではバイナリモードになってました

IO.foreach('hogehoge',mode:'rb').first.match(/\r/) #だとバイナリモードにならないのでマッチしない
IO.foreach('hogehoge',mode:'rb'){|line| break line.match(/\r/)} #はちゃんとバイナリモードになるのでマッチする

で、原因はソースの順序が一行前後してるだけ
先にハッシュオプション取り除いてから
Enumeratorを生成しちゃってるので
ハッシュオプションがEnumeratorには反映されない
ブロックが与えられているとEnumeratorの生成はされずに
ハッシュオプションを使ってIOが生成される
Ruby 1.9.3-p125のio.cの8489行と8490行を入れ替えると直る

binmode:trueがエラーになるのはバグみたい
mode指定が無いときに、デフォルトでテキストモードが設定されてしまい
そのあとで binmode:true の解釈時にバイナリモード指定とバッティングしてエラーになる
そもそもはtextmode:trueとbinmode:trueを同時指定したときのエラーだったみたい


220 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50


read.cgi ver 05.05 2022/08/31 Walang Kapalit ★
FOX ★