1 名前:デフォルトの名無しさん [2008/01/29(火) 19:45:46 ] プログラミング言語Ruby 1.9.Xについてのスレです。 2007年12月26日にリリース!されたもののまだまだ不安定だし, 1.8.Xとの互換性の問題もあることだし, かといって,メーリングリストはほとんどROMだし(参加してないし), ということで,1.9.Xオンリーのインストールからスクリプトまでの話題などどうぞ。 エラー,バグ報告もどしどし ■質問,話題を振る人へ ポチッとな,とする前に次の3つのリンクを確認。 ・svn.ruby-lang.org/repos/ruby/tags/v1_9_0_0/doc/NEWS ・svn.ruby-lang.org/repos/ruby/tags/v1_9_0_0/ChangeLog ・eigenclass.org/hiki.rb?Changes+in+Ruby+1.9 (参考) 未完だけど,マニュアルページもね(^^) ・doc.loveruby.net/refm/api/ 質問には以下を書くこと。 ・インストール環境(OS名、configureオプションなど) ・インストールの問題なのか、スクリプト自体の問題なのかを区別すること ・エラーメッセージ(なるべくそのままで) ・1.8.Xとの違いをできるだけ確認すること(1.8.Xでは実行できたとか) 質問と回答は1.9.X(いずれはRuby2.0)に寄与発展することになる!筈だ(^^)
161 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 06:36:59 ] >>160 > つまり、1.8.7ではリンクして使えてたけど、 > 1.9.1ではできなくなったってことでいいのかなあ? 1.8でもできない。
162 名前:155 mailto:sage [2009/05/03(日) 16:07:29 ] >>161 >1.8でもできない。 えー? だって、うちのデスクトップでVC2008でコンパイルできたし、 コンパイラとか入ってないActiveScriptRuby1.8.7だけインストールしてあるノートで動いてるよ? ActiveScriptRubyってVC6だったよね・・・? なんかはげしく勘違いしてるんかなー
163 名前:155 mailto:sage [2009/05/03(日) 16:09:17 ] あ、書き忘れたけど1.9.1でもruby-1.9.1-p0-i386-mswin32とVC2008でコンパイル成功したよー 勘違いじゃなければだけど・・・。
164 名前:155 mailto:sage [2009/05/03(日) 23:05:37 ] わかった! 俺、VC2008のランタイムをスタティックリンクしてるから使えてるんだ! しょぼしょぼな話題で連投失礼。お騒がせしましたwノシ
165 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 17:54:40 ] >>164 > 俺、VC2008のランタイムをスタティックリンクしてるから使えてるんだ! それだと外部ライブラリ使う拡張ライブラリが使えなくなるぞ。
166 名前:155 mailto:sage [2009/05/06(水) 13:49:22 ] >>165 >それだと外部ライブラリ使う拡張ライブラリが使えなくなるぞ。 ヘボくてゴメン、意味がわからないorz Ruby本体(mswin32)・・・VC6ランタイムを動的参照 俺が作ったやつ・・・VC2008ランタイムを静的参照 VC6で作ったほかのライブラリ・・・VC6ランタイム(Ruby本体と同じやつ?)を動的参照 となって、問題があるようには思えないんだけど・・・ ActiveScriptRuby同梱のVisualuRubyも同時に使えてるし。
167 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 14:46:48 ] あぁ、拡張ライブラリだけをVC2008でスタティックリンクで、か。 config.hでエラーになるはずだけど、そこは当然書き換えてる? 外部に依存しない単独のライブラリなら動くかもしれんけど、 もう長いことDLLを使う形でしかコンパイルしてないから、 動くかどうか保証はできない。
168 名前:155 mailto:sage [2009/05/06(水) 21:11:11 ] config.hははじめのところをコメントアウトしてる。 外部に依存しない単独のってことは、つまり、 俺がつくったやつから他のライブラリを参照しようとすると うまくいかない可能性があるって感じかな。 VC6があれば問題なかったんだけど、 VC2008しか無いのに拡張ライブラリ作って公開しようと思うあたりが困ったちゃん。
169 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 22:04:43 ] もうみんなでmingw使おうぜ!
170 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 22:40:26 ] やだよw
171 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 18:30:12 ] 155がやってるのは「たまたま動いてる」だけで、動くことは保証されない。 例えば、fd渡しがあって大きめのI/O操作したらアウト。
172 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 18:42:22 ] fd渡しなら一切のI/Oでアウトだからやってないと思う。 でもまぁ、それでバイナリ配布とかはやめてね。
173 名前:155 mailto:sage [2009/05/07(木) 20:47:14 ] ランタイムに依存するデータはライブラリ間で渡せないっていうことかな・・・。 ふむふむ、勉強になりますφ(..)カキカキ VC6ほしいなあー
174 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 03:22:53 ] VC6から移行すべきなんだが
175 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 06:11:13 ] >>174 どういうこと? 今のrubyではVC6じゃないと動かないんじゃ?
176 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 09:29:42 ] pythonみたいに移行したほうがいいよ 誰かが音頭を取るべきだ
177 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 15:35:51 ] 今移行しようとしてるとこだよ、mingwに。
178 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 16:10:22 ] お前ら、1.9.1のパッチレベルリリースが間近らしいぞ。 問題あるなら今のうちに報告しとけよ。
179 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 16:14:26 ] わかりやすいいこうまにゅあるおつけてくださいo とくにがいじんさんにもなっとくできるえんこーでぃんぐのかいせつおつけてくださいo っていうかせっとくもうやだ
180 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 16:15:49 ] エンコーディングまわりは、その方面で痛い目にあった経験がある 日本人にすら難しいのに。
181 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 16:23:24 ] がいじんさんは 先頭に # -*- coding: utf-8 -*- つけとけ しか理解すまい
182 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 16:29:41 ] force_encodingが大活躍なんだが、ほかの対処方法はある?
183 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 18:24:46 ] どういうデータを扱おうとしてるのか分からんことにはなんとも言いようがない。 外部からエンコーディングとデータが別々に渡されるんならそれこそ force_encodingするしかないだろうし。
184 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 21:28:27 ] openするときエンコーディング指定してないだけだったりしてな。
185 名前:デフォルトの名無しさん mailto:age [2009/05/13(水) 02:24:50 ] 1.9.1-p129 age
186 名前:デフォルトの名無しさん [2009/08/12(水) 13:58:55 ] Macで1.9.1をソースからインストールしたのですが、標準添付されている gemが上手く動きません。Digest::MD5が何かおかしいんだと思いますが、 具体的にはどうすればよいのでしょうか? 以下は gem install hogeしたときの表示です。 /Users/xxx/lib/ruby/1.9.1/rubygems/digest/md5.rb:8:in `require': dlopen(Users/xxx/lib/ruby/1.9.1/i386-darwin9.8.0/digest/md5.bundle, 9): Symbol not found: _rb_Digest_MD5_Finish (LoadError) Referenced from: /Users/xxx/lib/ruby/1.9.1/i386-darwin9.8.0/digest/md5.bundle Expected in: flat namespace
187 名前:デフォルトの名無しさん mailto:age [2009/08/12(水) 14:49:05 ] dlは互換性なくなってるのだけど、hogeは1.9対応なの?
188 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 14:50:54 ] ああん、あげてもーた。
189 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 15:03:18 ] dlもhogeが1.9対応かどうかも関係ないだろ。
190 名前:デフォルトの名無しさん [2009/08/12(水) 15:04:21 ] >>187 gem install hogeのhogeに関わりなく、たとえば gem update --system でも同じエラーが出てしまうのです・・・。
191 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 17:43:13 ] >>186 1.9.1のrevisionは? あとext/digest/md5/extconf.hはどうなってる? ちなみにCONFIGURE_ARGS=--with-bundled-md5で試してみたところでは、 ちゃんと定義されてるようだ。 $ nm ext/digest/md5/*.o | grep -e MD5 -e : ext/digest/md5/md5.o: 00000ed7 T _rb_Digest_MD5_Finish 00000d60 T _rb_Digest_MD5_Init 00000da5 T _rb_Digest_MD5_Update ext/digest/md5/md5init.o: U _rb_Digest_MD5_Finish U _rb_Digest_MD5_Init U _rb_Digest_MD5_Update
192 名前:デフォルトの名無しさん [2009/08/12(水) 18:39:56 ] >>191 ruby-1.9.1-p243を使いました。 ext/digest/md5/extconf.hは次のようになっています。 #ifndef EXTCONF_H #define EXTCONF_H #define HAVE_CONFIG_H 1 #define HAVE_OPENSSL_MD5_H 1 #define HAVE_SYS_CDEFS_H 1 #define HAVE_INTTYPES_H 1 #define HAVE_UNISTD_H 1 #endif
193 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 22:47:49 ] >>179 jp.rubyist.net/magazine/?0025-Ruby19_m17n yokolet.blogspot.com/2009/07/design-and-implementation-of-ruby-m17n.html blog.grayproductions.net/articles/understanding_m17n github.com/candlerb/string19/tree/master
194 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:54:55 ] >>192 OpenSSLのMD5を使うようになってるが、それだとmd5.hはインクルードしないので #define MD5_Finish rb_Digest_MD5_Finish は無効のはずなんだが。 まっさらの状態からコンパイルしてもそうなった?
195 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 03:32:02 ] rubyって1.9になってから速くなったよね。たいしたもんだ。
196 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 17:37:53 ] 節子…、それ違う。Matzの実装が異様に遅すぎたから、普通の速度に戻しただけだ。
197 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 17:39:35 ] 普通の速度にしたというか、安全側から高速側に倒しただけ
198 名前: foi.americanprogress.org mailto:age [2009/08/17(月) 17:49:57 ] 自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L 名言集 その4 『俺、100人規模の集団サイバーテロの主犯だったこともあるんだぜ』 yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ のID:PVAf+dux0 = 自動焼人 ★ > 965 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:02:09.35 ID:PVAf+dux0 > まぁ何だ。 > 俺の過去の経歴に比べたら、割れ厨なんて鼻くそレベルなんだけどなw > 100人規模の集団サイバーテロの主犯とか、いろいろとな。 ---------------------------------------------- この自動焼人 ★メールマガジンの配信停止をご希望される方は qb5.2ch.net/test/read.cgi/sec2chd/1250169591/ にて自動焼人 ★までご連絡ください
199 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:22:23 ] >>197 ってことは、結構バグったりするのかしら? 仕事でruby使ってるんだけど、1.9.1に上げようか迷ってまふ。
200 名前:デフォルトの名無しさん [2009/08/17(月) 21:45:47 ] どういう職種でどういう用途でどのくらいの期間使うのかによる。 医療系の仕事ならやめとけ。
201 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:51:33 ] >>200 なるほど。医療系じゃなくてよかった。 うちは原発の制御しかしないので、速攻 1.9.1p129 に上げてみます。
202 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:53:09 ] 医療…原子力制御… Java並の安定性があるんだね!よかった!
203 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:59:31 ] よーし、宇宙開発で使っちゃうぞ
204 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:01:46 ] あの文言は素敵だと思う 考えた人はアジの技能あり
205 名前:200 [2009/08/18(火) 00:43:35 ] 原発も詰めとこうかと思ったけどめんどくなってやめた。 そしたら>>201 から狙い澄ましたようなボディブロー
206 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 10:14:44 ] tmpfileに何があったの?
207 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 10:32:45 ] 見てきた。 redmine.ruby-lang.org/repositories/diff/ruby-19/lib/tempfile.rb?rev=23494&rev_to=22784 Tempfile#unlinkすると勝手にcloseするようになっちまってたのか。 これはひどい。だいたい、 lib/tempfile.rb (Tempfile#unlink): close first for Windows. a patch from Florian Frank. [ruby-core:23505] とあるけど、これ全プラットフォームでこの動作になってるような。 UNIX厨のmatzが、なんでこんなパッチ採用したんだ……
208 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 18:36:27 ] ああああああ、String#size の返り値が 1.8 と違うのか まあそりゃそうだわな あああああめんどくさああああ というか 1.8.6 に String#bytesize とか入れておいてくれればよかったのに
209 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 18:50:47 ] ASCII_8BITにするのがそんなに手間かね
210 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 18:54:05 ] >>209 はい
211 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 18:57:32 ] レスから考えて1.8と1.9の共用スクリプトだろうからな sizeのためにforce_encodingするとかまあありえんわ というかASCII_8BIT厨は早く絶滅してくれないかなと思う
212 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 10:23:40 ] >>209 そんな腐った修正ですますなんて、おまえ土方だな?
213 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 12:09:39 ] 具体的にどう修正すべきかも書けよ
214 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 12:21:03 ] RUBY_VERSION で場合分けする 安全確実高利回り コードが若干長くてやや複雑で記述が煩雑になるのだけが極めてごく些細微細な欠点
215 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 12:30:47 ] >>208 > というか 1.8.6 に String#bytesize とか入れておいてくれればよかったのに 1.8.7 には入ってるよ。 1.9 用とソースを共通化したいなら 1.8.6 はいい加減捨てよう。
216 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 12:31:58 ] respond_to?(:bytesize) の方がいいと思う
217 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 13:03:09 ] >>214 それはないw
218 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 13:21:00 ] >>216 実際問題として、それではダメだ こういう場合、特定の名前のメソッドがあるかどうかが問題なのではなく、 メソッドが「どう」動作するかが重要だから あらゆるメソッドを responed_to? しなければならなくなるし、バージョン差異を埋めるのには向かないと思う
219 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 13:58:48 ] Pythonじゃないんだから互換性なんて無視してRubyらしさを追求すればいいと思う。
220 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 14:10:47 ] responed_to? がなんのために存在するメソッドか考えれば、1.8/1.9 判定に使うのが不適当とわかるはず defined?(Encoding) とかも同様 Ruby 本体のバージョンが違うことが問題なんだから、素直にバージョン比較すればいいのに なんでそこでだけ頑なに「Ruby としての読み下しやすさ」を否定した処理をしようとするのがよくわからん
221 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 14:20:59 ] if RUBY_VERSION >= 1.9.0 then … else … end という記述がヤボったくてカッコ悪いと思われてるのでは なんかこう、超クールな処理になるようにすればみんな使ってくれるかも 1.8 系列だと読み飛ばすけど 1.9 系列だと処理するブロックとか
222 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 14:25:55 ] > 1.8 系列だと読み飛ばすけど 1.9 系列だと処理するブロックとか if RUBY_VERSION < "1.9.0" ... # for Ruby 1.8 else ... # for Ruby 1.9 end
223 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 14:46:04 ] $Rv = RUBY_VERSION < "1.9.0" ? {1.8 => true} : {1.9 => true} というグローバル変数を設定してるスクリプトなら見たことがある if $Rv[1.8] ... # for Ruby 1.8 else ... # for Ruby 1.9 end とか (Ruby1.9専用処理) if $Rv[1.9] とか使うらしい
224 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 14:50:33 ] よし構文と専用演算子の導入だ。
225 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 02:53:38 ] RUBY_VERSIONで分岐すんなよ。消すぞ。
226 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 23:28:08 ] 【extname.rbの中身】 # -*- coding: utf-8 -*- a = "記録.txt" b = "設定.txt" p File.extname(a) p File.extname(b) 【実行】 C:\Usr\Ruby>ruby --version ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-mswin32] C:\Usr\Ruby>ruby extname.rb ".txt" "" ←.txtにならない 何ぞこれ
227 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 01:44:36 ] >>226 バグだろ。redmineに登録しといてくれ。
228 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 11:32:19 ] ちょっと調べてみた。 パス名関係はまだエンコーディングに対応してない。 常に外部エンコーディングと見なして処理してる。 より正確には、Windowsの場合はCharNextを使っているのでシステムのコードペー ジの設定に依存する。 詳しく説明すると、UTF-8では「設定.txt」は e8 a8 ad e5 ae 9a 2e 74 78 74 だが、 $ echo -e '\xe8\xa8\xad\xe5\xae\x9a.txt' | nkf -Swx 險ュ螳txt \xadは半角ユなので1バイトずれて\x9a\x2eが一文字と認識されてしまう。 そして.が消えてしまってextnameは空になる。
229 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 13:37:15 ] なるほど。 しかも ruby -w で pathname.rb を読むと警告でる。
230 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 20:32:49 ] 出ないぞ、と思ったら1.9.1か? trunkでは直ってるようだ。
231 名前:デフォルトの名無しさん [2009/09/26(土) 21:11:40 ] へえ
232 名前:デフォルトの名無しさん [2010/01/03(日) 12:32:43 ] 開けましておめでとうございます。
233 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 12:45:41 ] 空けましておめでとうございます。
234 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 23:51:06 ] 貫通けましておめでとうございます 姫初めはいかがでしたか?
235 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 14:35:35 ] 大量のオブジェクトが生成されるコードがあって、1.8.7で実行すると 非常に遅いんだけど、ちょっと手直しして1.9で実行すると大幅に 改善されたりしますか? 自分で試したいのはやまやまなんだけど、「ちょっと」の手直しが どのくらいか不明なので、すいませんが教えてください。
236 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 15:38:04 ] >235 DBから20万行取得するだけのスクリプトが3倍速になった。
237 名前:234 mailto:sage [2010/03/21(日) 16:22:51 ] >236 本当ですか!?やっぱりスイッチする価値ありかなあ。
238 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 19:45:27 ] 手直しが確実に必要なわけ? 試しに動かせないの?
239 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 20:33:27 ] やってみないとわからないです(´・ω・`)
240 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 21:08:44 ] 手の施しようがないほど遅くなる場合もある 足し引きの結果が速くなるか遅くなるかは実際に動かさないと判断できない
241 名前:234 mailto:sage [2010/03/21(日) 21:25:53 ] >238 1.8系と1.9系の共存はできなくないらしいけど なんかヘマをやってライブラリ関係が衝突しそうで怖いのです。 まあそんなこと言ってる時点で1.9は「待ち」ですかね。 >240 なんとそういうこともありますか。 ますます移行しにくくなりました。 Mac使いなんで、1.9がOSXにプリインストールされる ようになったらまた考えます。
242 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 22:36:36 ] >>241 いちおう、MacPportsでruby19を入れるなら、デフォルトで異なる 場所に入るし、コマンドの名前も違うので混ざりはしない。
243 名前:デフォルトの名無しさん [2010/06/13(日) 23:32:10 ] エンコード指定uzeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee マジックコメンkimeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee あのスマートだったruby君が理屈っぽいピザになってしまった。。。Railsとか言う奴のせいだ。
244 名前: ◆rT33C51l9k [2010/06/14(月) 00:11:52 ] マジックコメントはこんなことやれば一応は省略できるな ruby -Ka filename.rb ruby -Ku filename.rb つうかまさかこのままマジックコメント付けることを義務化し続けるゴミ言語で突き進む気はないだろうな? なんだろう。OSの文字コードの標準をUTF-8にしやがれっていう見えないプレッシャーでもかけてるつもりかねwww