魁け! Ruby 1.9.X

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2008/01/29(火) 19:45:46
プログラミング言語Ruby 1.9.Xについてのスレです。
2007年12月26日にリリース!されたもののまだまだ不安定だし,
1.8.Xとの互換性の問題もあることだし,
かといって,メーリングリストはほとんどROMだし(参加してないし),
ということで,1.9.Xオンリーのインストールからスクリプトまでの話題などどうぞ。
エラー,バグ報告もどしどし

■質問,話題を振る人へ
ポチッとな,とする前に次の3つのリンクを確認。
 ・http://svn.ruby-lang.org/repos/ruby/tags/v1_9_0_0/doc/NEWS
 ・http://svn.ruby-lang.org/repos/ruby/tags/v1_9_0_0/ChangeLog
 ・http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9 (参考)
未完だけど,マニュアルページもね(^^)
 ・http://doc.loveruby.net/refm/api/

質問には以下を書くこと。
 ・インストール環境(OS名、configureオプションなど)
 ・インストールの問題なのか、スクリプト自体の問題なのかを区別すること
 ・エラーメッセージ(なるべくそのままで)
 ・1.8.Xとの違いをできるだけ確認すること(1.8.Xでは実行できたとか)

質問と回答は1.9.X(いずれはRuby2.0)に寄与発展することになる!筈だ(^^)
2009/04/22(水) 23:25:19
普通の人は 1.8.7 を使う
1.8.7 でできないことは特にはないし、
1.8.7 を使ってる人のほうが多いし、
今後 2年くらいは1.8.7(か、その続き)が隆盛だろう(このへんちょっと自信ないが、今年中は問題ない)

1.8.7 で Ruby に慣れた頃には、Ruby 1.9.2 が出てライブラリや入門もマトモになってるはず
1.8.7 で学んだ Ruby は、1.9.2 くらいに移行するのに充分に役立つはず
今から暗中模索の徒手空拳で 1.9.1 をやろうとするのよりは何万倍もスムーズだろう
2009/04/22(水) 23:27:37
出たw1.8.7バカw
2009/04/22(水) 23:49:22
>>148
1.9.1 を勧めるのは Ruby アンチ(この期に及んでまだいる)なのであまり真に受けないように
彼はあなたが Ruby に挫折することを望んでいます
2009/04/23(木) 00:26:52
頭いっちゃってるな
2009/04/25(土) 20:42:00
あれ?家でふつうにRuby1.8.7使って色々作ってるけど、
1.9.1って初心者が使えるような状況になってるの?
まだだよねえ?

いま自作の拡張ライブラリを1.9.1に対応させようとして
コンパイルする前にextconf.rbでエラー出て困り果ててるとこw
2009/04/25(土) 21:52:45
どんなエラーだよ
2009/04/25(土) 22:37:26
ああ、教えてもらおうと思って書いたわけじゃなかったんだ、ごめん
でもよくわかんないからせっかくだから書いてみる

Could not create Makefile due to some reason,
probably lack ofnecessary libraries and/or headers.
Check the mkmf.log file for moredetails.
You may need configuration options.

って出てて、ライブラリが見つからないってことみたい
1.8.7では普通にコンパイルできるから、パスが通ってないってわけではないと思う
参照する環境変数が変わってたりするのかな?
オプションを指定する必要があるってメッセージだけど、設定方法がわからないの(゜▽゜;)
156155
垢版 |
2009/04/25(土) 22:46:15
情報が全然足りなかったw
えっと、WindowsでWin32バイナリのruby-1.9.1-p0-i386-mswin32をダウンして、
それを使ってVC2008でコンパイルしようとしてる。
あんまり関係ないかもだけどDirectXを使おうとしてて、
1個目のdxguid.libをチェックするとこでエラーが出てる。
157155
垢版 |
2009/04/25(土) 23:14:27
extconf.rbからライブラリのとこ削って、できたmakefileに自分で追加して、
コンパイルしてみたら、windowk2.hの関数の再定義エラーが大量に出た。
やっぱ俺程度で1.9.1に手を出すのが間違いなのか。
山に篭って修行して出直してきまふ
158155
垢版 |
2009/04/25(土) 23:16:10
winsock2.hだ、どういう打ち間違いなんだorz
それではまたノシ
2009/04/26(日) 19:08:21
>>156
> えっと、WindowsでWin32バイナリのruby-1.9.1-p0-i386-mswin32をダウンして、
これはVC6でコンパイルされてる。

> それを使ってVC2008でコンパイルしようとしてる。
VC6とはランタイムがあわないからリンクできない。
本体も自分でコンパイルする。
160155
垢版 |
2009/05/02(土) 17:18:47
なんか規制されて書けなかったorz
>>159
>VC6とはランタイムがあわないからリンクできない。
>本体も自分でコンパイルする。
つまり、1.8.7ではリンクして使えてたけど、
1.9.1ではできなくなったってことでいいのかなあ?
2009/05/03(日) 06:36:59
>>160
> つまり、1.8.7ではリンクして使えてたけど、
> 1.9.1ではできなくなったってことでいいのかなあ?
1.8でもできない。
162155
垢版 |
2009/05/03(日) 16:07:29
>>161
>1.8でもできない。
えー?
だって、うちのデスクトップでVC2008でコンパイルできたし、
コンパイラとか入ってないActiveScriptRuby1.8.7だけインストールしてあるノートで動いてるよ?
ActiveScriptRubyってVC6だったよね・・・?
なんかはげしく勘違いしてるんかなー
163155
垢版 |
2009/05/03(日) 16:09:17
あ、書き忘れたけど1.9.1でもruby-1.9.1-p0-i386-mswin32とVC2008でコンパイル成功したよー
勘違いじゃなければだけど・・・。
164155
垢版 |
2009/05/03(日) 23:05:37
わかった!
俺、VC2008のランタイムをスタティックリンクしてるから使えてるんだ!
しょぼしょぼな話題で連投失礼。お騒がせしましたwノシ
2009/05/05(火) 17:54:40
>>164
> 俺、VC2008のランタイムをスタティックリンクしてるから使えてるんだ!
それだと外部ライブラリ使う拡張ライブラリが使えなくなるぞ。
166155
垢版 |
2009/05/06(水) 13:49:22
>>165
>それだと外部ライブラリ使う拡張ライブラリが使えなくなるぞ。
ヘボくてゴメン、意味がわからないorz

Ruby本体(mswin32)・・・VC6ランタイムを動的参照
俺が作ったやつ・・・VC2008ランタイムを静的参照
VC6で作ったほかのライブラリ・・・VC6ランタイム(Ruby本体と同じやつ?)を動的参照

となって、問題があるようには思えないんだけど・・・
ActiveScriptRuby同梱のVisualuRubyも同時に使えてるし。
2009/05/06(水) 14:46:48
あぁ、拡張ライブラリだけをVC2008でスタティックリンクで、か。
config.hでエラーになるはずだけど、そこは当然書き換えてる?
外部に依存しない単独のライブラリなら動くかもしれんけど、
もう長いことDLLを使う形でしかコンパイルしてないから、
動くかどうか保証はできない。
168155
垢版 |
2009/05/06(水) 21:11:11
config.hははじめのところをコメントアウトしてる。
外部に依存しない単独のってことは、つまり、
俺がつくったやつから他のライブラリを参照しようとすると
うまくいかない可能性があるって感じかな。
VC6があれば問題なかったんだけど、
VC2008しか無いのに拡張ライブラリ作って公開しようと思うあたりが困ったちゃん。
2009/05/06(水) 22:04:43
もうみんなでmingw使おうぜ!
2009/05/06(水) 22:40:26
やだよw
2009/05/07(木) 18:30:12
155がやってるのは「たまたま動いてる」だけで、動くことは保証されない。
例えば、fd渡しがあって大きめのI/O操作したらアウト。
2009/05/07(木) 18:42:22
fd渡しなら一切のI/Oでアウトだからやってないと思う。
でもまぁ、それでバイナリ配布とかはやめてね。
173155
垢版 |
2009/05/07(木) 20:47:14
ランタイムに依存するデータはライブラリ間で渡せないっていうことかな・・・。
ふむふむ、勉強になりますφ(..)カキカキ
VC6ほしいなあー
2009/05/08(金) 03:22:53
VC6から移行すべきなんだが
2009/05/08(金) 06:11:13
>>174
どういうこと? 今のrubyではVC6じゃないと動かないんじゃ?
2009/05/08(金) 09:29:42
pythonみたいに移行したほうがいいよ
誰かが音頭を取るべきだ
2009/05/08(金) 15:35:51
今移行しようとしてるとこだよ、mingwに。
2009/05/11(月) 16:10:22
お前ら、1.9.1のパッチレベルリリースが間近らしいぞ。
問題あるなら今のうちに報告しとけよ。
2009/05/11(月) 16:14:26
わかりやすいいこうまにゅあるおつけてくださいo
とくにがいじんさんにもなっとくできるえんこーでぃんぐのかいせつおつけてくださいo
っていうかせっとくもうやだ
2009/05/11(月) 16:15:49
エンコーディングまわりは、その方面で痛い目にあった経験がある
日本人にすら難しいのに。
2009/05/11(月) 16:23:24
がいじんさんは
先頭に # -*- coding: utf-8 -*- つけとけ
しか理解すまい
2009/05/11(月) 16:29:41
force_encodingが大活躍なんだが、ほかの対処方法はある?
2009/05/11(月) 18:24:46
どういうデータを扱おうとしてるのか分からんことにはなんとも言いようがない。
外部からエンコーディングとデータが別々に渡されるんならそれこそ
force_encodingするしかないだろうし。
2009/05/11(月) 21:28:27
openするときエンコーディング指定してないだけだったりしてな。
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
2009/08/12(水) 14:49:05
dlは互換性なくなってるのだけど、hogeは1.9対応なの?
2009/08/12(水) 14:50:54
ああん、あげてもーた。
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
でも同じエラーが出てしまうのです・・・。
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
2009/08/12(水) 22:47:49
>>179
http://jp.rubyist.net/magazine/?0025-Ruby19_m17n
http://yokolet.blogspot.com/2009/07/design-and-implementation-of-ruby-m17n.html
http://blog.grayproductions.net/articles/understanding_m17n
http://github.com/candlerb/string19/tree/master
2009/08/14(金) 14:54:55
>>192
OpenSSLのMD5を使うようになってるが、それだとmd5.hはインクルードしないので
#define MD5_Finish rb_Digest_MD5_Finish
は無効のはずなんだが。

まっさらの状態からコンパイルしてもそうなった?
2009/08/17(月) 03:32:02
rubyって1.9になってから速くなったよね。たいしたもんだ。
2009/08/17(月) 17:37:53
節子…、それ違う。Matzの実装が異様に遅すぎたから、普通の速度に戻しただけだ。
2009/08/17(月) 17:39:35
普通の速度にしたというか、安全側から高速側に倒しただけ
2009/08/17(月) 17:49:57
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

名言集 その4
『俺、100人規模の集団サイバーテロの主犯だったこともあるんだぜ』

http://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人規模の集団サイバーテロの主犯とか、いろいろとな。


----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください
2009/08/17(月) 21:22:23
>>197
ってことは、結構バグったりするのかしら?
仕事でruby使ってるんだけど、1.9.1に上げようか迷ってまふ。
200デフォルトの名無しさん
垢版 |
2009/08/17(月) 21:45:47
どういう職種でどういう用途でどのくらいの期間使うのかによる。
医療系の仕事ならやめとけ。
2009/08/17(月) 21:51:33
>>200
なるほど。医療系じゃなくてよかった。
うちは原発の制御しかしないので、速攻 1.9.1p129 に上げてみます。
2009/08/17(月) 21:53:09
医療…原子力制御…
Java並の安定性があるんだね!よかった!
2009/08/17(月) 21:59:31
よーし、宇宙開発で使っちゃうぞ
2009/08/17(月) 22:01:46
あの文言は素敵だと思う
考えた人はアジの技能あり
205200
垢版 |
2009/08/18(火) 00:43:35
原発も詰めとこうかと思ったけどめんどくなってやめた。
そしたら>>201から狙い澄ましたようなボディブロー
2009/08/21(金) 10:14:44
tmpfileに何があったの?
2009/08/21(金) 10:32:45
見てきた。

http://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が、なんでこんなパッチ採用したんだ……
2009/08/22(土) 18:36:27
ああああああ、String#size の返り値が 1.8 と違うのか
まあそりゃそうだわな
あああああめんどくさああああ

というか 1.8.6 に String#bytesize とか入れておいてくれればよかったのに
2009/08/22(土) 18:50:47
ASCII_8BITにするのがそんなに手間かね
2009/08/22(土) 18:54:05
>>209
はい
2009/08/22(土) 18:57:32
レスから考えて1.8と1.9の共用スクリプトだろうからな
sizeのためにforce_encodingするとかまあありえんわ
というかASCII_8BIT厨は早く絶滅してくれないかなと思う
2009/08/23(日) 10:23:40
>>209
そんな腐った修正ですますなんて、おまえ土方だな?
2009/08/23(日) 12:09:39
具体的にどう修正すべきかも書けよ
2009/08/23(日) 12:21:03
RUBY_VERSION で場合分けする

安全確実高利回り
コードが若干長くてやや複雑で記述が煩雑になるのだけが極めてごく些細微細な欠点
2009/08/23(日) 12:30:47
>>208
> というか 1.8.6 に String#bytesize とか入れておいてくれればよかったのに

1.8.7 には入ってるよ。
1.9 用とソースを共通化したいなら 1.8.6 はいい加減捨てよう。
2009/08/23(日) 12:31:58
respond_to?(:bytesize)
の方がいいと思う
2009/08/23(日) 13:03:09
>>214
それはないw
2009/08/23(日) 13:21:00
>>216
実際問題として、それではダメだ
こういう場合、特定の名前のメソッドがあるかどうかが問題なのではなく、
メソッドが「どう」動作するかが重要だから
あらゆるメソッドを responed_to? しなければならなくなるし、バージョン差異を埋めるのには向かないと思う
2009/08/23(日) 13:58:48
Pythonじゃないんだから互換性なんて無視してRubyらしさを追求すればいいと思う。
2009/08/23(日) 14:10:47
responed_to? がなんのために存在するメソッドか考えれば、1.8/1.9 判定に使うのが不適当とわかるはず
defined?(Encoding) とかも同様

Ruby 本体のバージョンが違うことが問題なんだから、素直にバージョン比較すればいいのに
なんでそこでだけ頑なに「Ruby としての読み下しやすさ」を否定した処理をしようとするのがよくわからん
2009/08/23(日) 14:20:59
if RUBY_VERSION >= 1.9.0 then … else … end という記述がヤボったくてカッコ悪いと思われてるのでは

なんかこう、超クールな処理になるようにすればみんな使ってくれるかも
1.8 系列だと読み飛ばすけど 1.9 系列だと処理するブロックとか
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
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]

とか使うらしい
2009/08/23(日) 14:50:33
よし構文と専用演算子の導入だ。
2009/08/25(火) 02:53:38
RUBY_VERSIONで分岐すんなよ。消すぞ。
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にならない


何ぞこれ
2009/09/19(土) 01:44:36
>>226
バグだろ。redmineに登録しといてくれ。
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は空になる。
2009/09/19(土) 13:37:15
なるほど。
しかも ruby -w で pathname.rb を読むと警告でる。
2009/09/19(土) 20:32:49
出ないぞ、と思ったら1.9.1か?
trunkでは直ってるようだ。
231デフォルトの名無しさん
垢版 |
2009/09/26(土) 21:11:40
へえ
232デフォルトの名無しさん
垢版 |
2010/01/03(日) 12:32:43
開けましておめでとうございます。
2010/01/03(日) 12:45:41
空けましておめでとうございます。
2010/01/03(日) 23:51:06
貫通けましておめでとうございます
姫初めはいかがでしたか?
2010/03/21(日) 14:35:35
大量のオブジェクトが生成されるコードがあって、1.8.7で実行すると
非常に遅いんだけど、ちょっと手直しして1.9で実行すると大幅に
改善されたりしますか?

自分で試したいのはやまやまなんだけど、「ちょっと」の手直しが
どのくらいか不明なので、すいませんが教えてください。
2010/03/21(日) 15:38:04
>235
DBから20万行取得するだけのスクリプトが3倍速になった。
237234
垢版 |
2010/03/21(日) 16:22:51
>236

本当ですか!?やっぱりスイッチする価値ありかなあ。
2010/03/21(日) 19:45:27
手直しが確実に必要なわけ?
試しに動かせないの?
2010/03/21(日) 20:33:27
やってみないとわからないです(´・ω・`)
2010/03/21(日) 21:08:44
手の施しようがないほど遅くなる場合もある
足し引きの結果が速くなるか遅くなるかは実際に動かさないと判断できない
241234
垢版 |
2010/03/21(日) 21:25:53
>238
1.8系と1.9系の共存はできなくないらしいけど
なんかヘマをやってライブラリ関係が衝突しそうで怖いのです。
まあそんなこと言ってる時点で1.9は「待ち」ですかね。

>240
なんとそういうこともありますか。
ますます移行しにくくなりました。

Mac使いなんで、1.9がOSXにプリインストールされる
ようになったらまた考えます。
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
2010/06/14(月) 10:03:15
おまえは馬鹿か?
マジックコメントが示すのは、ソースコードのリテラルがどの文字コードで書かれているか、だけだぞ極端に言うと。
2010/06/14(月) 17:13:31
と、馬鹿がもう一人
2010/06/16(水) 02:06:16
JAVAのエクリプスみたいなソフトって無いの?
Windowsで動くやつで
2010/06/16(水) 07:48:16
NetBeansを使えばいいと思うよ
ていうか、Eclipseにも確かRubyプラグインある
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況