1 名前:1様 [2009/04/02(木) 09:42:23 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9.1 は従来版とは別物であり、書籍や解説やライブラリのサポートがまだありません】 【自力で解決できない壁で悩むことのない最新安定版の Ruby1.8.7 での学習をお勧めします】 ※1.8.7 は 1.8 系と 1.9 系の橋渡しをするためのリリースで、1.9 系 の便利新機能の一部が利用可能です ※ただし 1.8.6 より安定しているとはまだ言えないので、安定性を第一とする用途には 1.8.6 をどうぞ 関連スレやURLは>>2-5 あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
449 名前:デフォルトの名無しさん [2009/04/15(水) 23:01:12 ] このスレってmatz, yugui, yarv, shugoさんとかが名無しで答えてたりするのかなぁ
450 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:26:03 ] 少なくともよく答えてることはまずないと思う。 1〜2週間スレを見てればわかる。答えてたら失望するわ、おれ。
451 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:29:00 ] ここまでMatzの自演
452 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:29:53 ] こんな金にならないスレに顔出すより、 ブログに何か書く方が大事だろw
453 名前:デフォルトの名無しさん [2009/04/15(水) 23:34:02 ] しかし、こういう立場のひとってブログに大きな態度で書けないよな。 リーナス君のようにならないことを祈る。。
454 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:36:39 ] どっちもどっちのような
455 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 05:58:10 ] 内容見ずに態度見るような馬鹿を気にしてもしょうがないよ。 有名になると、何書いたって行為と悪意を両方増やす結果になるし。
456 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 05:59:32 ] ×行為 ○好意
457 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 09:03:10 ] >>449 Ruby1.9には2ch bot yarvを新装備!
458 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 10:00:57 ] RSpec で、 hogehoge.rb に対して hogehoge_spec.rb を作ったら、シェルの補完で hog <Tab> と打って hogehoge.rb が一発で出るとかそういうのが阻害されてしまうから不便だ、という話をしたら spec ファイルは spec/ ディレクトリにまとめて入れろバカ というツッコミが来た 知らんかった でもこれって spec ファイルのほうからどうやってオリジナルのスクリプト読むん?
459 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 10:11:22 ] >>458 > spec ファイルは spec/ ディレクトリにまとめて入れろバカ Rails on Rails の流儀だな spec ディレクトリは自動で追加される環境の人だ 自力でどうにかできるものではないので、Rails で作ってないなら無視してよし 一応 File.expand_path とか File.dirname(__FILE__) とか駆使したファイルパスを require するようにすればなんとかなるとは思うが
460 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 10:23:47 ] >>458 俺の場合は __FILE__ を基準にして、他の場所のオリジナルを読むようにしてる たとえばlibディレクトリなら Pathname.new(__FILE__).dirname.parent.parent + 'lib' で探す
461 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 10:27:58 ] RSpec使ったことないけど 補完の問題だけを考えるとspec_hogehoge.rbにするのはどうか?
462 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 10:31:18 ] >>458 $LOAD_PATH << ".." << "../lib" require 'spec' require 'hoge' ... オフィシャルなファイルと被るファイル名の自作ファイルがあると動作しないのが難点だが、 require はまあそもそもそんなもんだな ただ、下手に lib/ と spec/ があると、Rails の auto_spec.rb とか なんかあのへんが動作すると期待されてしまうかもしれない
463 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 10:37:27 ] >>461 一応、spec/*_spec.rb というファイルをまとめて実行して 一気に lib/ 内のファイルのテストを試すサポートプログラム(autospec)が存在するので、 いつか自動テスト実行を覚えた時用に hogehoge_spec.rb という名前であったほうが好ましい が、一人で使うぶんには spec_hogehoge.rb にしておくのがいちばん無難だな、めんどくさくないし
464 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 11:37:51 ] >>458-459 別にRails流ってこともないだろ。 Gemsとかつくる前提のときも spec/ に入れるのが一般的だし、 autotestも標準で spec/以下 と lib/を関連付けて見てくれる。 といっても、慣例でしかない気がするけど
465 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 14:18:57 ] >>458 $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib') とかかな。 いちいち書くのめんどくさけりゃ>>464 のいうautotestや、 Rakeにspec/rake/spectaskのSpec::Rake::SpecTaskを使って テスト実行を肩代わりしてもらう。 この二つはデフォでは spec/*_spec.rb を相手にするから たかが慣習、されど慣習と。
466 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 16:28:48 ] ねーよw
467 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 19:04:41 ] ファイルのロックを File#flock でなく IO#fcntl で実装しようかと思ったんですが、 これシステムの struct flock に依存するから簡単には portble に書けないですかね?
468 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 20:55:51 ] どこまでのポータビリティを求めてるのかによる。 Windowsとか言い出すなら問題外。
469 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 21:14:34 ] あ、rspec の、エクスペクテーションの should をまとめたいと思ってメソッド定義するよね あれってどこに書くべき? before で作ったインスタンス変数が読めなかったり def で定義したメソッドが見えなかったりでどこがどう妥当なのかよくわからん
470 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 21:59:37 ] >>469 何を言いたいのかよく分からないが it (specify) を、複数の ExampleGroup で共有したいって事なら share_as メソッドを探すと幸せになれるかもしれない
471 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 22:09:06 ] …たぶん、 describe Hoge do before :all do @val1 = ... ; @val2 = ... # (1) end (2) describe "#foo" do matomete_val_tesuto end end としたいときに、 def matomete_val_tesuto を (1) に書くか (2) に書くかって話なんじゃね (1) に書いたら describe "#foo" の中では使えないはず (2) に書いたら @val1 にアクセスできんな
472 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:13:56 ] setter の返り値について質問 a.hoge = b.hoge = value みたいな書き方ができるようにしようと思うのですが、 def hoge=(value) @hoge = validate(value) @hoge end と def hoge=(value) @hoge = validate(value) value end ではどちらがいいでしょうか? 場合によって value != validate(value) となります。
473 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:22:53 ] > a.hoge = b.hoge = value みたいな書き方ができるようにしようと思う そういうのやめとけ めんどくさいから ちなみに、 = つきメソッドは引数を返すように作られていることが期待されてる つまり、 def hoge=(val) @hoge=val end だ
474 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:28:15 ] 前者をよしとする人はいないんでないの a=b=c が a==b==c にならないのはバグの元だし オペレータオーバーライドの悪い点をわざわざ利用する必要はないよ
475 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:31:08 ] 今調べたら、セッターとして使うと引数が問答無用で返って、 sendで呼ぶと返した値が返る
476 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:37:49 ] >>475 うわあこれ知らんかった 今まで引数の値をわざわざ返してたのにー
477 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:44:12 ] …。 いや、なんつーか、 hoge = 1 の返り値は 1 だというのは知ってるよな def set_hoge @hoge = 1 end これの返り値は 1 だし、attr_* 系で作られる hoge= みたいなメソッドも引数を返す
478 名前:472 mailto:sage [2009/04/17(金) 00:48:14 ] 皆さんレスありがとうございます。 >>475 >今調べたら、セッターとして使うと引数が問答無用で返って、 ほんとだw そもそも返り値を選択できなかったとは…… def hoge=(value) return end でも引数が返ってきました。 setter の呼び出しは処理系が特別扱いしてるんですね。
479 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 01:25:51 ] [ruby-core:00637]より。 |If an assignment method which doesn't return an argument is not |intuitive, why don't ruby force it? Agreed. Last time I thought that, I was too lazy to modify compiler itself, and then forgot. I will fix it someday. だって。
480 名前:472 mailto:sage [2009/04/17(金) 02:25:15 ] >>479 なるほど。 その結果として 1.8 では setter の戻り値を破棄して 引数を返すように変更されたと 確認してみたらピッケル本にもそのことがちゃんと書いてありました(言語編 p76)
481 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 08:42:59 ] >>477 バーカ というかお前322と似てるな。バカ具合が
482 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 09:00:50 ] わざわざ終わった話題に安全圏から罵倒、というのはつい最近どこかで
483 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 09:45:27 ] クラスメソッドのエイリアスはどうやって定義しますか。
484 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 09:52:51 ] class Hoge def self.hoge ; end class << self alias hage hoge end end これ以外の方法知らん。他のやり方があったら教えて。
485 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 10:23:07 ] >>484 alias メソッドを使うとしたらそれくらいしかなさそうだな あとは普通に self.hoge の中で self.hage を呼ぶしかあんめえ
486 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 10:43:50 ] alias_methodを使うというひねりもできるが、メタクラスを使う以外の方法はない。
487 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 10:48:13 ] rubyでcgiを作ろうと思います postを受け取るにはどうすればいいですか
488 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 10:52:20 ] >>487 他の言語でpostを受け取るのと同じ方法でできます。
489 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 11:05:40 ] >>487 単純には、標準入力に環境変数CONTENT_LENGTH長だけ入ってる、はず。 マルチパートやらデコードやらいろいろあるので、ライブラリを使うのが吉。 どのライブラリをどんな風に使うのがいいのかは、詳しい人を待って(オイ)。
490 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 13:46:48 ] >>488 うん、変わらんな というか一度は自力でPOSTとか全部やってみたほうがいいと思うんだ >>487 標準で cgi というライブラリがあるからそれ使え 自力で外部ライブラリをインストールしてもいい環境なのなら、 rubyforge から cgialt をインストールしてそれを cgi 互換ライブラリとして使え 他にもいくつかあるが、cgi ライブラリの使用経験とかを前提にしてたりするんで、最初は素直に cgi ライブラリ使え
491 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 14:36:38 ] rubyのcgiはかなりアレ。
492 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 16:14:01 ] >>468 メジャーな UNIX (Linux, *BSD, Solaris あたり) で動けば十分なんですが、 Google ソースコード検索や Koders でも Ruby の fcntl の用例が少ないみたいなんで Ruby Inline か拡張ライブラリで fcntl(2) を直接使うことにします。
493 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 16:51:33 ] >>491 アレって何?
494 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 17:07:46 ] >>492 IOクラスにfcntlメソッドがあるので、わざわざそんな難しい方向に行かんでもええよ
495 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 17:07:54 ] 指示代名詞も知らないゆとり乙
496 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 17:09:43 ] >>493 491じゃないが、仕様と実装が残念だった。 1.9系で後者は改善されたけど。
497 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 17:38:58 ] >>494 その IO#fcntl ですが、例えば file.fcntl(Fcntl::F_GETLK, arg) するとき、 arg には struct flock に pack したものを指定する必要があるのですが、 struct flock にどんなメンバがあるかは Ruby レベルからは知り得ないので、 やっぱり C で書く必要があると思うのです。
498 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 18:01:32 ] >>497 なんだ、そんなレベルのポータビリティでいいのか。
499 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 19:35:12 ] >>487 今ならRack使う方がいいと思う
500 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 19:44:30 ] 初心者に標準添付以外をいきなり勧める人って何なの
501 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 20:49:03 ] 今ならgem install rackするだけだろ? rubyみたいな日本だけのドマイナー言語を選んで、さらにcgiがやりたいなんて 茨の道を歩くのは覚悟してもらわなきゃ
502 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:01:04 ] > rubyみたいな日本だけのドマイナー言語を選んで、さらにcgiがやりたいなんて 海外の開発系カンファレンスに何度か出席しているが、 どうみても日本より海外の方が、Ruby の関心が高い。 むしろ日本人は「Ruby 出来ない子」が多い、と感じる。
503 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:07:40 ] > 海外の開発系カンファレンス そういうやつらは「寿司、天ぷら、藤山、芸者」の日本好きの変わり者geekだろ。 狭いコミュニティに閉じこもって「関心が高い」じゃないだろ。 目を覚ませ。もう戦争は終わったんだ。 今は蛇言語でgwtの時代なんだよ。
504 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:12:12 ] せめてこのスレでは、Ruby初心者に有益な情報を書くように心がけられないもんかね Pythonがいいよってのも、Rubyのことを聞きに来た人間を迷わせる効果しかないと思うんだがね アンチは本スレでもアンチスレでも行けばいいんだ。 初心者スレにまで顔出すことはなかろうに。本格的に人間性を疑うわ。
505 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:12:23 ] カンファレンスは知らないがおれもそれは感じる。 新しいバージョンとかでつまづいたときググると、 役に立つのは大抵海外のサイト。向こうの方が精力的にやって気がする。 2ちゃんなんてRubyスレ全般で「1.9は使うな」だもんな。 2ちゃん見てる時点でアレだろと言われたらそれまでなのだが。
506 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:16:56 ] 裸で冬山に特攻する初心者がいれば「行くな」とも言いたくなるわな
507 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:21:08 ] >>505 お前英語苦手だろ 英語で書いてあるというだけで凄いって思ってるだろ 海外の人だって「初心者」は Ruby 1.9 を使ってない
508 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:22:39 ] Vimで入門始めたけど、アホらしくてNetBeans入れてみた 信じられないくらい快適になった
509 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:27:00 ] >>507 別に得意じゃないけど英語だけですごいなんて思わないだろ。小学生かよ。 新しいことに関して日本のサイトはほとんど引っかからないし、 読んで実際に解決することが多いからそう思う。 あと「Rubyスレ全般」ってわざわざ書いてるんだからちゃんと読んでな。 たった5行なんだからさ。初心者スレに限定してないだろ。
510 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:34:10 ] 日本人はRuby初心者が多い印象がある 外国人の人にとってのRubyは日本人にとってのPythonくらいの「詳しい人向け言語」な感じ
511 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:48:53 ] ruby-talk読んでるが、初心者らしいというかほほえましい質問が半分くらい(たいかん)
512 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 22:42:31 ] 詳しい人はこんなところこないと思うよ 前にmswinの人がキレてたじゃん わざわざ顔出して見ず知らずのしかも自分の足下にも及ばないようなやつに、 口汚くレスされたりしてストレスためる必要ないだろ あと日本のRuby好きはRubyで何か作るというよりも、メンテナとかをやるのが好きなのかもね
513 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 01:24:40 ] ゴルフやってるんじゃねーの
514 名前:デフォルトの名無しさん [2009/04/18(土) 11:16:09 ] month = 4 などの数字が入ってるとき、これを to_sなどで "04"という風に変換したいんですが、どうすればいいですか? month = 11 のときは、"11"です。 どうかお願いします。
515 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 11:23:44 ] '%02d' % 2 => "02" '%02d' % 11 => "11"
516 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 12:06:19 ] もしくは $ irb irb(main):001:0> sprintf("%02d", 4) => "04" irb(main):002:0> sprintf("%02d", 11) => "11"
517 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 12:53:26 ] MySQLをDBIを介して使おうとしているのですが、 テーブル名一覧を取得する方法をお教えいただけないでしょうか? dbh = DBI..connect("dbi:Mysql:test:localhost","user","password") table_names = dbh.execute("SHOW TABLES") p table_names とやると全然違うものが出力されてしまいます。 すいませんが、お教えいただけますでしょうか?
518 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 13:32:41 ] 聞くときだけは丁寧だな。がんばれよw
519 名前:517 mailto:sage [2009/04/18(土) 16:44:37 ] 自己レスです。 結局DBIを介して行う方法はわからなかったので、Ruby/MySQLで接続して行いました。 require "mysql" dbh = Mysql::new("localhost","username","password") dbh.query("use database") p dbh.list_tables これで取得できそうです。
520 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 19:34:20 ] FreeBSD 7.1-RELEASE-p4 で irb 使ってます Delete キーを押すと ~ が表示されるんですが、同じような症状をさくっと治したという方はいませんでしょか csh 上では普通に後ろの文字が消えます
521 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 20:26:40 ] 端末は何を使っとるん?
522 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 20:37:48 ] ええと、アプリケーションは Windows 上の PuTTY で、端末文字列は xterm-color 、 csh から bash を起動して C-v したあとに Delete キーを押すと ^[[3~ が表示されてます(csh 上ではどうやるんだろう?) screen 等は(まだ)使ってません 接続先は具体的にはさくらインターネットのレンタルサーバです なんか Ruby あんま関係ないような気がひしひしとしてます
523 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 20:43:38 ] irb を起動するとキー操作の動作が違う、という場合はいちおう Ruby スレの範疇だと思う まあ、irb 自体が独自に何かやってるわけじゃないけどさ
524 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 21:22:16 ] >>522 自分もさくらのレン鯖契約しているのでやってみた。 ログインシェルが csh なので、bash にしたあとで irb 起動してみたけど、 C-v したあとだったら delete キーを押すと再現したけど、 C^v しなければ、irb のプロンプト中に delete キーを押したら、ちゃんとカーソル位置の文字が消えたよ C-v って何のためにやっているの?
525 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 21:57:44 ] C-vは、つぎの入力文字を視覚的に表示する機能では?
526 名前:521 mailto:sage [2009/04/19(日) 00:31:07 ] >>525 C-v って vi のと同じように、次の入力をキーコードそのまま入力する機能だと思う。 PuTTY が Delete で吐くキーコードが 1b 5b 33 7e ってことだよね。 FreeBSD 7.1-RELEASE-p4 & PuTTY 0.60 ごった煮版 2007年8月6日版だけど、 カーソル位置の文字が消えた。 もし Readline を入れてなければ入れて、 それでダメなら ~/.inputrc に↓コレ書いてみて。 "\e[3~": delete-char
527 名前:デフォルトの名無しさん [2009/04/19(日) 02:37:16 ] RubyのDBIを使おうとしているのですが、 $ irb irb(main):001:0> require 'dbi' => true irb(main):002:0> DBI.connect('dbi:mysql:test','root','root00') DBI::InterfaceError: Could not load driver (undefined local variable or method `e' for DBI:Module) from /usr/local/lib/site_ruby/1.8/dbi.rb:312:in `load_driver' from /usr/local/lib/site_ruby/1.8/dbi.rb:154:in `_get_full_driver' from /usr/local/lib/site_ruby/1.8/dbi.rb:139:in `connect' from (irb):2 となってしまい、うまくコネクトできません。ドライバはインストールしたつもりなのですが、 何か間違ってるでしょうか?
528 名前:527 [2009/04/19(日) 02:50:31 ] mysql-ruby-2.8.1.tar.gz をインストールしたらできました。 DBIだけじゃなくて、Ruby/Mysqlのドライバもインストールしないとだめなんですね。 失礼しやした。
529 名前:464 mailto:sage [2009/04/19(日) 08:50:34 ] 連投規制で書き込めなかった >>464 の > autotestも標準で spec/以下 と lib/を関連付けて見てくれる。 は、厳密には間違いで、rspecに含まれる autotest用のプラグイン?が spec/とlib/を関連付けてみてくれる >>469-471 spec_helper.rb(か、もしくはそこからrequrieする.rb)内でshare_asで定義して、includeするとか
530 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:08:49 ] ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32]を使用しています open("|")(I/Oパイプ付)で起動した外部プロセスを強制終了する事ってできますか? 外部コマンドの結果でその後の動作を変えるようなことをしていますが 大体の場合全ての結果を受け取らずとも判定が出来るので 判定が出来た時点で外部コマンドを強制終了して判定にかかる時間を短縮したいです
531 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:09:51 ] >>530 適当にシグナル送ればいいんじゃね
532 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 13:28:18 ] >>530 IO#pid で外部コマンドの pid が取れるみたいね。あとは >>531 の通りで。
533 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 17:25:24 ] UTF8のBOMを含むStringからBOMを取り除く方法は?
534 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 17:38:35 ] >>533 toutf8
535 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 17:41:57 ] iirb> require 'kconv' irb> text = File.open('test.txt'){|f| f.read} => "\357\273\277test\ntest\ntest\n" irb> text.toutf8 => "test\ntest\ntest\n" まあ、ある意味盲点ではあるな
536 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:05:57 ] 盲点ってかただの副作用では そういうのこそ、メソッドを用意すればいいのに
537 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:11:30 ] >>536 nkf -w8 はBOM を除去する
538 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:18:58 ] というよりは、 BOM 無し UTF-8 を出力する、だね
539 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:21:47 ] BOMについては特につけることも取ることもしない、というスタンスなんだっけか
540 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:35:22 ] .toutf8もNKFも、余計な変換をしそうで怖いです。 やりたいのはBOMを除くことだけで、変換とかいっさい必要ないんですが。 あと、BOMを含むかどうかの判定方法もお願いします。 今は str.unpack('H6').first == "efbbbf" としてるんですけど、どう考えても頭悪い方法です。
541 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:54:51 ] BOM = "\357\273\277" str[0,3] = "" if str[0,3] == BOM str.sub(/\A#{BOM}/, "") こういうのでいいんじゃない?
542 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:58:20 ] str.sub!(/\A\xEF\xBB\xBF/, '') あたりで
543 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 19:00:35 ] Ruby 1.8.7以降だとString#start_with?ってのがあるからそれで判定しても
544 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 22:53:34 ] 自分でString#bom?とか適当なメソッドを定義すればいい 表面上スマートに見えても内部は泥臭いなんて当たり前
545 名前:530 mailto:sage [2009/04/21(火) 00:17:20 ] >>531-532 レスありがとうございます やってみました…が、外部プロセスの実行が終了したあとにI/Oパイプが開いている気が… io.each_lineで読み出し中にProcess.kill(9, io.pid)しても実行時間が変わりません 仕様かな…
546 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 01:13:24 ] >>545 io.closeするだけで良いんじゃね?
547 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 10:33:13 ] require したファイルの一覧って取得できますか
548 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 10:42:06 ] 自己レスですが >>547 $LOADED_FEATURES というのがあるらしい。 マニュアルは読んでみるものですね。
549 名前:464 mailto:sage [2009/04/21(火) 12:39:37 ] riに失敗してしまうのですが、これはどのようなエラーでしょうか? 回避する方法はありませんでしょうか? > ri String#lines (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:532:in `lookup_ancestor': undefined method `+' for nil:NilClass (NoMethodError) from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:610:in `run' from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:605:in `loop' from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:605:in `run' from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:588:in `each' from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:588:in `run' from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:311:in `run' from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/bin/ri:5 from (ruby installed directory)/bin/ri:19:in `load' from (ruby installed directory)/bin/ri:19 > ri --version ri 2.2.0 >ruby --version ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]