[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/16 20:58 / Filesize : 261 KB / Number-of Response : 970
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 19



1 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:26:33 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

   【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
   【最新安定版の Ruby1.8.6 の使用を強くお勧めします】

関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問は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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。


285 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 14:49:08 ]
わざわざ自分のブログ宣伝して回るなよ

286 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 16:24:59 ]
>>282
* Open3 を使う(require 'open3')
* 自分で作る(open3 は簡単だから、読んでみるといい)
* windowsでは動かないかもしれないが↓
command = 'ls /tmp'
stderr = `#{command} 2>&1 > /dev/null`

287 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 22:55:11 ]
>>282
$stdout, $stderr を reopen して system

system のいいとこは shell を介さずに実行できるから
コマンドインジェクションを防げる。

288 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 01:40:40 ]
単純にpopenじゃあかんの?

289 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 10:50:28 ]
ポペン!

290 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 18:19:04 ]
あのさ、あるクラス Foo があって、その機能強化版をつくったとき、
クラス名は何にしたらいいと思う?
AdvancedFoo とか ExtendedFoo とか考えたけど、あまりいい名前じゃないといわれた。
かといって、雑多な機能をいくつも付け加えたから、これといって名前をつけにくいんだよな。
なんかいい名前ない?

291 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 18:26:58 ]
追加する機能をモジュールとして作り、
Fooのインスタンスにextendで機能追加する。

↑という方法では解決できず、どうしても継承でやる必要があるなら
FooWith機能名
とか
機能ableFoo
とか。



292 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 18:30:36 ]
Fooそれ自体に機能(メソッド)を追加するという方法もある。
あるいはモジュールとして作り、includeする。
Fooのインスタンスはどれでも追加された機能を使える。

class Foo
... # 元の定義
end

# 定義を再オープンして機能追加
class Foo
def 追加機能
end
...
end

>>291のextendする方法は、Fooクラスのインスタンス全体ではなく、
Fooの特定のインスタンスだけに機能を追加する方法。


293 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 18:32:40 ]
クラスに二つ以上の責任があるんじゃないか?
できれば分割して名前を明示できるようにした方がいい



294 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 19:46:16 ]
>>291,292
もとのFooは残す方向なので(ほかに継承で使っている人がいるから)、Foo自体を拡張するわけにはいかないんです

>>293
まあそうなんですけど、Rubyの大クラス主義でやっているので。
大クラス主義はたしかに便利なんだよね。既存の他のクラスのインターフェース変えなくていいし。

295 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 20:19:07 ]
>>294
大クラス主義はキッチンシンクじゃないぞ。

>>290
> かといって、雑多な機能をいくつも付け加えたから、これといって名前をつけにくいんだよな。
どうも行き辺りばったりの感じがするんだが。
UtilFooとでもしとけば。

296 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 20:45:31 ]
Rmagickで書き込もうとする、もしくは書き込んだ文字列の幅と高さを求めるにはどうすれば用でしょうか?

297 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 21:48:45 ]
>>296
ImageMagickのコマンドから推測するといい

298 名前:デフォルトの名無しさん [2008/04/28(月) 19:42:33 ]
Rubyの利点って何?
Javaプログラマの俺にわかりやすく説明して

299 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 19:55:52 ]
状況も設定せずに利点を挙げろつってもなぁ。
まずは自分の疑問をわかりやすく説明しる。

300 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 20:02:49 ]
適当な捨てプロ書くのに凄く楽。

301 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 20:09:52 ]
>>298
君にとって利点はないと思うよ

302 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 20:37:12 ]
気楽に楽しくプログラミングできる

303 名前:デフォルトの名無しさん [2008/04/28(月) 20:37:35 ]
>>301
その返し方は誤解を与えるかもな。
ほとんどの人にとって利点はないと答えたかったんだろ?



304 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 21:00:15 ]
>>300
それあるなぁ。
ワンライナーも併せて便利

305 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 21:10:58 ]
>>303 一人で納得してれば

306 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 21:51:50 ]
rubyで大枠の処理を書いて、細かいところはJavaを呼び出す

307 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:09:01 ]
JRubyでうんたらかんたらできる。
初期起動がかなり遅いけど。

308 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:36:39 ]
Rubyの利点って何って話だけど、
それよりむしろJRubyの利点が知りたい。

309 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:38:33 ]
JRubyの利点ってJavaのクラスが呼び出せるとかじゃないのかな。
これができると膨大なJavaのライブラリも使えるし。

個人的にはSwingあたりのGUIライブラリが楽に使えるとありがたい。


310 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:40:57 ]
大量にあるJavaの資産が使えるのがありがたい
標準のライブラリだけで大抵のものが一揃いして、もちろん完成度も高め。Swingもあるし

311 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:47:59 ]
>>309
>>310
へー、そうなんだ!
JAVA屋さんには便利なのかな

そういえばIronRubyはどうなったんだろう

312 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:55:35 ]
>>308
(顧客の)サーバにRubyのバイナリを入れるのは(政治的な意味で)非常に大変だが、
Javaはデフォで入ってるので、jarを1個放り込めばよいJRubyは非常にありがたい。


313 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:12:25 ]
>>312
その発想はなかった!
業務で使ってる人は大変なのね



314 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:40:01 ]
>>312
これあるよねー
unzipコマンドがない客先のサーバでzipファイルを解凍しなきゃいけなくて
さてどうしようと思ってたら、jarコマンドで解凍できた。
このときはjavaすげーとおもった。

315 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 00:18:07 ]
rubyの開発者
凄い人なんだろうけど、あらゆるruby本の監修になって名前貸すだけで稼ぎまくってるあの魂胆が嫌いだ

316 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 00:20:36 ]
成果をねたむ足引っ張り合い好きな国民性丸出し
トイレ掃除でもしてろ

317 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 01:24:23 ]
俺はUSBメモリにruby.exeとmsvcrt-ruby18.dllが入ってるな(他は grep sed)。
これだけでもコマンドプロンプトのお供に使えるところが好き。

Python はライブラリ無いと起動すらしないし、Perl は動くけど glob が使えねえし…。

318 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 02:03:04 ]
監修料なんて雀の涙だろ。


319 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 02:15:01 ]
 ヾヽヽ
 (,, ・∀・)チュンチュン
  ミ_ノ
  ″″

320 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 02:28:02 ]
>>318
どっかの年金では図柄変更バージョンごとに1千万とからしいけど。
図柄かえるだけのバージョンが100くらいある。


321 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 03:18:35 ]
監修料がわずかって…何を見て言ってんだ?
有名人になると筆者より儲けてるよ

322 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 03:32:49 ]
何を見て言ってんだ?

323 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 03:38:27 ]
どぞー
pc11.2ch.net/test/read.cgi/tech/1207233348/



324 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 06:20:24 ]
>>317
やあ俺
シェルと好みのエディタ入れれば、簡易開発環境が出来てしまうのが便利だ

325 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 08:13:17 ]
>>321
具体例をドゾー

326 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 09:43:14 ]
>>321
監修するなってこと? なんで? そのメリットは?
「成功者の収入が減ると、貧乏人の俺の胸がすく」という以外のメリットを感じないけど・・・。

327 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 09:53:42 ]
釣られんなよ、おまいら……。

328 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 10:31:38 ]
まぁ釣りだったことにしたいだろうなぁ、このフルボッコな状況じゃ。

329 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 12:53:29 ]
>>320
さすがに公共事業とは事情が全く異なるだろ。
そういうのはまた孫受け曾孫受けで政治家とか○暴とかの
たかり屋に流れるからその分割高だし。

330 名前:デフォルトの名無しさん [2008/04/29(火) 13:31:36 ]
ちょっとした質問です。



・・・忘れた

331 名前:デフォルトの名無しさん [2008/04/29(火) 13:34:16 ]
すいません、思いだしました!

Rubyで小物でもプログラムを書くときに、
クラス化しますか?
適当に書き下す(とは言っても100行オーバーの大きさ)場合はトップレベル関数ばりばりでも
よいと思うのですが、関数作りまくるプログラミングタイプだと、
いちいち関数化時に変数をグローバルにするのが面倒です。
また、配布とかも考えると、クラス化してライブラリとして使えるようにも、と思ってしまいます。

あなたはどうしてますか?

332 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:01:16 ]
うぜぇw

333 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:02:37 ]
配布を考える場合は、規模問わずほぼ確実にクラス化(モジュール化)する

配布を考えないなら、そのときどき
トップレベル関数(メソッド)から作り始めることもあれば
クラスの設計から始めることもある

ところで
>いちいち関数化時に変数をグローバルにするのが面倒です。
これはどういう意味なんだ



334 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:19:14 ]
この俺がエスパーしよう!

name = gets.chomp
hello = 'ぐっもーにん'
puts "#{name}さん、#{hello}"

をメソッドにすると

def say_hello
puts "#{$name}さん、#{$hello}"
end

$name = gets.chomp
$hello = 'ぐっもーにん'
say_hello

と書かなければならなくなって面倒だとか、たぶんそういう話だ!

335 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:33:57 ]
トップレベルは気持ち悪いからなんでもクラス化

336 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:35:08 ]
とりあえず関数だけで書いて
複雑になってきたらリファクタリングしてクラス化

337 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:42:55 ]
100行くらいなら、多分関数のみ

338 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:47:37 ]
メソッドのことを関数と言ってる奴は同一人物

339 名前:デフォルトの名無しさん [2008/04/29(火) 15:12:32 ]
>>333
>>いちいち関数化時に変数をグローバルにするのが面倒です。
>これはどういう意味なんだ

>>334 そのとうりです!!

>>338
トップレベルメソッドというべきでしたか?

340 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 15:59:49 ]
確か三年ぐらい前に、初心者だった自分も同じようなことを言われたんだが
グローバル変数の使用はお薦めしない(書き捨ての短いコードだとしても)
エスパー>>334の例を借りると

def say_hello(name, hello)
 puts "#{name}さん、#{hello}"
end

say_hello(gets.chomp, 'ぐっもーにん')

こんな風に引数として渡したほうがいい

341 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 16:47:55 ]
いくらなんでも324はないだろう

def init(opt)
$_option = opt
end
def exe(arg)
if $_option[:foo]

end

init :foo => :bar
exe "hoge"


とか?

342 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 16:53:28 ]
俺の場合は新規作成した場合、自然と指が

class

って動いちまうなあ。

343 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 17:03:15 ]
Pythonと比べるとRubyの方が直感的だと感じてしまうのはRubyに毒されたからなのか。
yieldの書き方とかはRubyの方がいいな。



344 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 17:06:54 ]
コルーチンがわかってないんだろ

345 名前:デフォルトの名無しさん [2008/04/29(火) 17:35:41 ]
>>342
毎回指で書くなら自動化すればいいじゃない

346 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 17:47:28 ]
これがコルーチンか。そう意識してみるとPythonの書き方もこれでもいいかと思えてくる。
でもRubyの方がコルーチンを中断している途中でなんか処理しているってイメージがしやすい気がする。
気のせいか慣れなのかもしれないけど。

347 名前:デフォルトの名無しさん [2008/04/29(火) 22:15:27 ]
メソッド・オーバーライトって、具体的に、どんなときに使ったことありますか?

348 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 22:31:43 ]
ライブラリのメソッドを上書きしたいとき

349 名前:デフォルトの名無しさん [2008/04/29(火) 22:49:20 ]
それはわかるんだけど、具体的にどんなメソッドを上書きしたの?

350 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:10:38 ]
inspect はしょっちゅうオーバーライドしてるなあ。
あと to_s も。

351 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:49:21 ]
>>349
OKまずはageだ

・自分で設計したクラスのサブクラスを作ったとき(基本)
・他所から持ってきたライブラリのバグを自分で直すとき
・ライブラリの挙動を少しいじくったり、機能を足したいとき(たいていサブクラスを作って上書きする)

上書きコードがある程度の量になってきたら、自分用のラッパーライブラリを作ることもある

352 名前:デフォルトの名無しさん mailto:sage 懐かしのuwarite [2008/04/30(水) 00:41:49 ]
再定義はオーバーライト(overwrite)じゃなくてオーバーライド(override)だな。


353 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 01:19:44 ]
そういえば、Object#inspectって循環参照があるオブジェクトに対してもちゃんと動くよね
これってどうやって検出してるんだろう。inspectは特に引数を受け取るでもないし



354 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 07:48:36 ]
>>353

Thread.current[:__inspect_key__] でobject_idを覚えてる。

355 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 09:26:26 ]
>>354
スレッドローカルストレージ使っているのか。なるほど。
353じゃないが参考になった。
これからもあわあわと質問に解凍しやがってください。

356 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 11:34:29 ]
>>354
そういうことかー。返答ありがとう。

357 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 18:32:29 ]
javaが呼べるのは便利そうだけど
c++(cじゃなくて)の呼び方がまとめてあるサイトないですか?

358 名前:デフォルトの名無しさん [2008/04/30(水) 19:38:33 ]
railsでないRubyではDB操作するのに何が一番使われてますか?
素のライブラリ?DBI?ActiveRecord?

359 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 23:38:38 ]
O/R MapperならActiveRecordかDataMapper
そうでなければDBIかMySQLライブラリ直書き

360 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 00:28:23 ]
activerecordだけ使うならrailsでやればいいのに
って思う。

361 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 00:31:00 ]
「Rails使うならActiveRecord使えばいいのに」なら分かるが
その逆はイミフだなぁ。


362 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 17:18:14 ]
initializeを勝手に呼び出すのは良くないんでしょうか。

class Foo
  ...
  def refresh
    initialize
  end
end

363 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 17:38:07 ]
よくないです

っていうか、そういうような処理を initialize に書いたらダメです
たとえば、別途セットアップ系のメソッドを作って、initialize と refresh から呼ぶようにするとかしてください



364 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 18:32:18 ]
>>363
なんでよくないの?

365 名前:デフォルトの名無しさん [2008/05/01(木) 19:28:22 ]
>>340
あー、わかります。

でもRubyは参照渡し?できないですよね。

単発なら返却値で返す。
複数の返却値だとタプル?じゃなくて配列で返して、
 hoge, mage = gethogemage
でよかったと思うんですが、なれてないと妙に気持ち悪いw
みんなこんなのやってんのかな

>>342
まず体を慣らすのはいいかもですねw

私も一番慣れてる言語だと、ファイル新規作成したら無意識でclass構文が書けます(まあ大抵はスニペット使いますけど)

366 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 22:27:49 ]
>365
Rubyはむしろ全て参照渡しと言っても良いくらいなのだが。

ただし代入(=、+=など)は変数の参照先を変えてしまうので
自身を書き換えるメソッドを使わず代入で書き換えようとした場合
変数の参照先が変わり、値渡しみたいに見える。

例えば文字列なら concat は文字列自身を書き換えるが
+= は新しい文字列を作り変数の参照先を書き換えるので元の変数に影響がない。

FixnumやSymbolなどは、自身を変更するメソッドを持たないので
実質的に値渡しになる。

367 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 22:29:19 ]
>>364
べつにいいと思うよ、何度呼ばれてもいいように設計されていれば。
foo = Foo.new(0) # Foo#initialize(0) が呼ばれる
foo.do_something!
foo.initialize(0) # リセットする
foo.do_something!
foo.initialize(0) # リセットする
...

もちろん>>363のようにしてもいい。すきにどうぞ。


368 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 23:57:27 ]
正規表現でCの文字列リテラルにマッチするようなのって書けないでしょうか?
/".*?"/にすると"aaa\"bbb"みたいな場合に"aaa\"で終わってしまいますが全体にマッチして欲しいんです
/".*(?<!\\)"/にしようと思ったら1.8では(?<!)が使えませんでした

369 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 00:03:40 ]
"([^"]*?\\.)*.*?"
とかよく書くけど、どうかな

370 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 00:12:20 ]
/"([^"\\]|\\.)+"/
こんな感じ?

371 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 00:28:07 ]
>>369 >>370
どちらでもいけました、ありがとうございます!
なんでこれでいいのかまだ良くわからないので頑張って解読します

372 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 02:12:18 ]
>>371
/"[^\\"]*(\\.[^\\"]*)*"/

こっちのほうが早いかな。

詳説 正規表現を読むのをオススメするよ

373 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 02:15:20 ]
db等の外部リソースを使った時は
Rubyの終了時にメモリは自動的に解放されているのでしょうか?
明示的に解放しないとだめですか?



374 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 03:21:27 ]
ここでいいのか不明なのですが…もし良ければおしえてください

やりたいことは
CarbonEmacs上にて起動したirbで
require 'rubygems'
を行いたい。です。

環境は
OSX10.4にてCarbonEmacs2008春版を使用しています。
rubyはMacPortsからインストールしたものを使用し、
rubygemsもMacPortsからインストールしました。

375 名前:374 mailto:sage [2008/05/02(金) 03:23:56 ]
以下Terminal.appから実行した結果です
/Users/hoge% uname -a
Darwin hoge.local 8.11.1 Darwin Kernel Version 8.11.1: Wed Oct 10 18:23:28 PDT 2007; root:xnu-792.25.20~1/RELEASE_I386 i386 i386
/Users/hoge% ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-darwin8.11.1]
/Users/hoge% which ruby
/opt/local/bin/ruby
/Users/hoge% gem -v
1.1.1
/Users/hoge% which gem
/opt/local/bin/gem
/Users/hoge% echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
/Users/hoge% irb
irb(main):001:0> puts $:
/opt/local/lib/ruby/site_ruby/1.8
/opt/local/lib/ruby/site_ruby/1.8/i686-darwin8.11.1
/opt/local/lib/ruby/site_ruby
/opt/local/lib/ruby/vendor_ruby/1.8
/opt/local/lib/ruby/vendor_ruby/1.8/i686-darwin8.11.1
/opt/local/lib/ruby/vendor_ruby
/opt/local/lib/ruby/1.8
/opt/local/lib/ruby/1.8/i686-darwin8.11.1
.
=> nil
irb(main):002:0> require 'rubygems'
=> false
--------
rubygemsをrequireしてもエラーになりません。
(.irbrcにてrequire済なので再読み込みはしませんが)


376 名前:374 mailto:sage [2008/05/02(金) 03:25:02 ]
対してCarbonEmacs上のrun-rubyにて起動したirbでの実行結果です
irb(main):001:0> puts $:
/usr/lib/ruby/site_ruby/1.8
/usr/lib/ruby/site_ruby/1.8/powerpc-darwin8.0
/usr/lib/ruby/site_ruby/1.8/universal-darwin8.0
/usr/lib/ruby/site_ruby
/usr/lib/ruby/1.8
/usr/lib/ruby/1.8/powerpc-darwin8.0
/usr/lib/ruby/1.8/universal-darwin8.0
.
nil
irb(main):002:0> requrie 'rubygems'
NoMethodError: undefined method `requrie' for main:Object
from (irb):2
--------
実行時のパスが異なるようです
どのようにしたら、この問題を解消できるでしょうか。

377 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 03:33:48 ]
うん、そのtypoは俺もよくやるよ

378 名前:374 mailto:sage [2008/05/02(金) 03:52:32 ]
>>377
まちがえました…ご指摘ありがとうございます
typoしなくても以下の通りです

irb(main):001:0>
No such file to load -- rubygems
from (irb):1:in `require'
from (irb):1


379 名前:デフォルトの名無しさん [2008/05/02(金) 05:40:38 ]
>>366
オブジェクトが参照なのと、引数の参照渡しを一緒にスンナ
何が「すべて参照渡しと言ってもいいくらい」だ

380 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 12:10:57 ]
「参照の値渡し」とか「オブジェクト渡し」とか言われる形態だな

381 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 14:35:21 ]
>>378
FinderからではなくTerminal上で open -a Emacs とする、
もしくは .emacsに irb の位置をフルパスで指定する、のどちらか。

後者なら、~/.emacsなどに
(setq ruby-program-name "/opt/local/bin/irb")
と書けばいいと思う。たぶん。


382 名前:デフォルトの名無しさん [2008/05/02(金) 15:43:21 ]
TechCrunch Japanese アーカイブ ? Twitter、Ruby on Railsを放棄か
ttp://b.hatena.ne.jp/entry/jp.techcrunch.com/archives/20080501twitter-said-to-be-abandoning-ruby-on-rails/

383 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 18:21:49 ]
Emacs から info で Ruby のマニュアルを調べたいと考えているのですが、
現在、配布されているドキュメントは html 形式のみですよね

Ruby 1.4 の時に配布されていた info
ruby-texi-1.4.tar.gz
も、ネット上のどこにも落ちていない…



384 名前:374 mailto:sage [2008/05/03(土) 00:25:29 ]
>>378
感謝です。おっしゃるとおりでした。
後者も有効です。

385 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:38:08 ]
Rubyに抽象メソッドって無いの?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<261KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef