- 1 名前:730 [2008/09/15(月) 17:25:21 ]
- プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.7 の使用をお勧めします】 ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。 1.9 の新機能の一部が利用可能なので初学者にお勧めです。 ※ただし十分安定しているとは言えないので プロダクション環境での利用にはお勧めしません。 関連スレや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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
- 445 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 04:54:55 ]
- 勘違いしているというより、railsを叩くストーリーを語りたかったんだろう。
「この物語はフィクションです。実在の人物・団体・CPU・プログラミング言語とは 一切関係ありません」
- 446 名前:デフォルトの名無しさん [2008/10/09(木) 08:09:36 ]
- Rubyが遅いのはもうすでにだれもが知っている事
耐えられないならJRubyを使えば速くなる
- 447 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 08:28:26 ]
- JRubyの方が速いのは事実だが、
RailsをJRubyで動かすとCRubyより遅くなる。
- 448 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 08:32:02 ]
- 結局Pyhon+Zopeが最強ってことか
- 449 名前:デフォルトの名無しさん [2008/10/09(木) 09:20:44 ]
- >>448
Python + Django だろー Railsはscaffoldであっと今に雛形が作れるが、 Djangoはもっと強力で管理ページもあっという間に作れる。
- 450 名前:デフォルトの名無しさん [2008/10/09(木) 10:08:18 ]
- >>445
客観的に見れない信者のような連中が出てきたらそろそろかな? 前出のように、ウインドウズ上で仕事として開発するのは無理。 LinuxとWinでrake db:migrateの比較をしてみればすぐわかる。 Railsは、初回は金利0その後徐々に金利が上がるローンと似ている。
- 451 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:29:10 ]
- Railsの「生産性」を叩いてる人はVBAで納品される受注プロダクトもあるということを聞いたら卒倒するんだろうなと思ってる
なんでソフトウェアの全部が全部銀行並みの規模でクオリティでなければならんのん?
- 452 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:59:38 ]
- なんでWindows上でRailsを実行させないといけないのかがそもそも理解できないわけだが。
- 453 名前:デフォルトの名無しさん [2008/10/09(木) 11:14:20 ]
- >>452
開発環境の事を言っているんだろ rakeは本番稼動では使わないからなー Rails信者はMac信者という事だろう しかしほとんどは最近Mac信者になったやつらだろうが
- 454 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 11:33:24 ]
- Windows → クライアントサイドアプリケーション以外ヘボい
PC-UNIX系 → サーバサイドプログラム以外ヘボい MacOSX → どっちも不可もなく見掛けが気持ちよい という単なる選択の収斂の結果に過ぎない WinでPC-UNIX系プログラムがきちんと動けばWindowsを使うって あるいはクライアント環境がもっさりでなければPC-UNIXを常用する WindowsをクライアントにしてUNIX系OSにログインするというのが最強ではあるが、それだとメンテ対象が2つになるんだよね
- 455 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 11:50:30 ]
- WindowsやLinuxとかを我慢して使ってる人のほうがよっぽど信者だと思う…
- 456 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 12:14:08 ]
- 質問だよ
適宜更新される200字くらいの説明文が常に200個くらいあって、 それらに特定の日本語群(更新は稀で候補100個くらい)が含まれてるかどうかチェックしたいんだ スレ全部読み込んで、注目したい語を含むレスがあるかどうか調べて抜き出す、みたいなノリだと思ってくださいな どうするのが速くて妥当かなあ? 検索語100個の正規表現100個を200文全部に適用する? 2万回正規表現起動?
- 457 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 12:20:30 ]
- 数KBのテキストに100回適用を200回とかはRuby的には屁でもない日強茶飯事だと思うぞ
ライブラリの中ではもっとえげつない、力技としか思えない正規表現動作がゴロゴロ… 選択100個入りの正規表現と100個の正規表現をif文で回すのと text.include?(s) とどれが速いかとかそういうのは知らない
- 458 名前:デフォルトの名無しさん [2008/10/09(木) 12:45:02 ]
- >>455
会社にあるPCを見て見ろ、Macなんてあるか? ほとんどないだろう、どこの会社だって同じだ。 Railsが新しい物好きな連中以外に普及するためには、 Winでまともに使えないとだめなんだろうね。 個人的にはRailsのIDEがもっとコード補完が上手になってもらいたい。 結局、 小規模サイト:PHP 大規模サイト:Java
- 459 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 12:47:53 ]
- 候補や説明文がよほど膨大なら、
Karp-Rabin法も考えられるかもしれんが・・・・・まあその程度なら
- 460 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 12:52:25 ]
- yieldはなんだかんだ言って遅いから
語群を|でつなげた正規表現200回起動がよさそうに思う ブロック使わずにif文ずらずら並べるならわからんけど
- 461 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 12:53:39 ]
- 個人的用途を除くと、イメージ的には
Macはデザイン、クリエイター、 Linuxは学術用 UNIXはサーバー Windowsはビジネスその他って感じだな
- 462 名前:デフォルトの名無しさん [2008/10/09(木) 13:10:44 ]
- Ruby/Tkで
EntryウィジェットやTextウィジェット上でドラッグすると フリーズします。原因として考えられることは何でしょうか?
- 463 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:18:57 ]
- ドラッグしたときの動作をプログラムしてないからじゃね
- 464 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:20:10 ]
- 語群があまり変わらないという話だから、俺も>>460に賛成
- 465 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:22:01 ]
- >>456
正規表現でやるならRegexp.unionっていうのがあるよー
- 466 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:22:15 ]
- 学術的なウンタラカンタラならともかく、業務サポートかカジュアルな用途だろうしな(いやわからんが)
- 467 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:28:13 ]
- Regexp#union は p で表示したときの正規表現が自動生成ですって感じでとても不安でイマイチ使う気になれない
irb> arr = ['a', 'bb', 'ccc', 'dddd', 'eeeee'] irb> p Regexp.new(arr.join('|')) /a|bb|ccc|dddd|eeeee/ irb> p Regexp.union(*arr.map{|e| Regexp.new(e)}) /(?-mix:a)|(?-mix:bb)|(?-mix:ccc)|(?-mix:dddd)|(?-mix:eeeee)/ きちんと動くのかね、これ
- 468 名前:デフォルトの名無しさん [2008/10/09(木) 13:29:26 ]
- Ruby用の高速HTTPライブラリ/サーバMongrelの作者もあきれているようだ。
ttp://slashdot.jp/articles/08/01/02/0046222.shtml より抜粋 。 Ruby on Railsに関わる人々の技術力の低さや閉鎖性、また「どいつもこいつもRoRでアホなソーシャルネットワークを作って商売にしたがる」風潮に愛想が尽きたとのことで、今後はRubyから手を引き、PythonやFactor、Luaに軸足を移すそうだ。
- 469 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:31:22 ]
- はいはい初心者スレだよここは
- 470 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:35:36 ]
- >>468
Javaを知らないからそんなことになる Javaを知ってればRoRはJavaで負けたスーツ連中が持ち上げてるだけだと早々に気づけたろうに いい社会勉強になったことだろう
- 471 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:36:44 ]
- >>467
動くよそりゃw inspectがごちゃごちゃするのには確かに同意するが
- 472 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:41:02 ]
- >>468
みんな、そこはもう大分前にとおりすぎたのだがwww
- 473 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:41:51 ]
- そもそも ?-mix: って何よマニュアルに書いとけよって感じではある > Regexp.union
- 474 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:42:54 ]
- >>468
あとZed Shawの記事はネタなので釣られないようにな。 単体の記事で見ると本当にそう思っているのかと思うもんだよ。 よくはてなブックマークとかでたくさんブックマークされている、煽り気味のエントリーとか 他の記事よむとネタじゃんってすぐにわかる、みたいなの
- 475 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:43:20 ]
- Rubyしか知らないと悲惨なのにはこっそり同意しておく
- 476 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:46:23 ]
- CとJavaとPerlとPHPとPythonとSchemeはオレオレライブラリを作れる程度には齧っておいたほうがいい
…多いな
- 477 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:48:55 ]
- PerlとPHPは真っ先に除外できるな
- 478 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:53:31 ]
- >>477は何もわかってない
キャッチセールに真っ先に引っかかるタイプ
- 479 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 13:59:54 ]
- アレな方々が流入してくるとすぐスレがおかしくなるな
- 480 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 14:02:47 ]
- PerlやPHPを知らないっていうのは一番悲惨なパターンのRubyユーザーなのでは…
- 481 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 16:01:00 ]
- PerlやPHPを生半可に知ってる方が、変にRubyに入れ込んじゃって不幸になる気もする。
- 482 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 16:29:26 ]
- Rubyって何に適してる言語なの?
- 483 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 16:53:30 ]
- >>482
オブジェクト指向テキスト操作ネット通信言語です
- 484 名前:デフォルトの名無しさん [2008/10/09(木) 17:09:03 ]
- >>470
もっともなご意見です。 周りがみんな騒ぐので、こっそりRailsを触って見たが、 scaffoldまでは良かったがIDEが無いのでこつこつとコーディング をしなければ行けず、こんなんで生産性がいいか? と思っちゃいましたね。あと遅いし。 会社ではJavaで開発しているが、Eclipseを使った開発は超快適、 Ctl+スペースを打てば自動的にコードを挿入してくれるし、自動的に関数のヘルプも出るしね。 したい事を実現するためのライブラリはほぼ間違いなくのあるし、その数も桁違いに多いし。 Rubyに比べれば見た目のコーディング量は多いが、ほとんどはIDEが自動的に挿入したものだから、 実質は同じ量か下手すれば少ないだろう。 Railsは、一時の流行じゃないかなと思うね。 結局、ビジネスを企んでいるいるやつらに、うまく乗せられたんだよ。 「うそも100回言えば真実となる。」と誰かが言ったが、これが当てはまる気がする。生産性に関して言えば。 >>458 に一部賛同 PHP or Python:小規模 Java:大規模 でしょう。 どうもRails + Macで、私は先端を行くというような事を見せ付けているような感じが嫌いだ。 所詮、他の方の意見どおりwinでまともに使えなければこれ以上流行はしないだろう。
- 485 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 17:14:11 ]
- RailsはRubyのヘビーユーザーが適当に活用して小ぶりなアプリケーションを連続生産するのに向いている
RailsのためにRubyを学ぶような人や、Railsのソースを読んでも何してるかさっぱりわからんような人が使ってもどうにもならんな という魔術師(志向)の人向けのフレームワークだったはずなんだが、当初からそのはずだったんだが、誰が捻じ曲げたのやら…
- 486 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 17:14:19 ]
- すごい初歩的な質問していい?
ゲーム作ってみたいと思って、つい最近Ruby始めたんだけど。 講座HPみたいなところで、Ruby/SDLでつくったスクリプトをexeファイルにしても、 Ruby/SDLのdllファイルが全部同じディレクトリにはいってないと動作しないって書いてあったんだけど、 てことは作ったゲーム配布するときはdllファイルも全部つけて配布しなきゃいけないってこと?
- 487 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 17:19:27 ]
- >>484
MacOSXでRubyを使うことに決めた人は、もともとPC-UNIX上でRuby使い倒してたような人が多い そういう人の使うRoRは、その人のプロダクト作成に非常に役立つものになると思うよ >>486 Exerbでひとつにまとめることが…DLLはできないのかな というか、DLLは普通実行ファイルと一緒に配布するもんなんじゃね あとRubyでゲーム作るのはマゾさんのすることなんだけど、あなたはマゾですか?
- 488 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 17:22:03 ]
- >>484
Railsを擁護する気は全くないけれど 一応、IDEを使ってRailsの開発することはできるよ(EclipseとAptana) >>486 その通り >>487 俺は自分のことをSだと思ってたが、本当はMだったのか
- 489 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 17:41:03 ]
- www.domo2.net/search/search.cgi?word=ruby&tnum=50&sort=res+desc
- 490 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 17:45:19 ]
- >>487
>>488 回答ありがとうございますm(__)m 一緒に配布するんですか〜。16個くらいあったんでまとめられれば見栄えがいいんだけど。 Rubyはゲームに向いてないですか; 大学の講義でRubyを軽く使うらしいから、ついでにと思って始めたんだけど・・ Rubyはわかりやすいって評判ですけど、Rubyでプログラミングに慣れてからC言語勉強した場合、 共通点が多くてサクサク覚えられますか?それとも違いが大きくて効率悪いですか?
- 491 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 17:49:36 ]
- >>490
人によるんじゃないかな 共通してる部分も確かにあるけど 片方をしっかり身に着けない内に他に手を出すと ごっちゃになって混乱しそう
- 492 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 17:49:46 ]
- C言語を使って便利な機能を便利な概念でまとめたのがRubyだ
- 493 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 17:54:36 ]
- >>491
>>492 回答ありがとうございます。 ある程度身につくまでRubyで頑張ってみて、限界感じたらC言語勉強することにします〜
- 494 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 18:02:07 ]
- C→Rubyは曖昧さを感じて戸惑う
Ruby→Cは堅苦しさ、面倒くささを感じる
- 495 名前:デフォルトの名無しさん [2008/10/09(木) 18:07:31 ]
- >>490 >>491 >>492 >>493
CとRubyはまったく用途が違うだろう。無理に使う事ができるけどね。 Cを勉強するならC++じゃないか。 Rubyでゲームか? 話にならない。 ゲーム開発している人間に聞いてみな。笑われるだけだ。 後々の資産として、C++を先に勉強したほうが得だと思うよ。
- 496 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 18:24:53 ]
- またC++厨が…
C++を学ぶのとCを学ぶのでは意義が違うと何度言えば
- 497 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 18:26:11 ]
- そろそろスレタイ嫁
- 498 名前:デフォルトの名無しさん [2008/10/09(木) 18:30:38 ]
- >>496
説明してみぞ
- 499 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 18:34:39 ]
- うぜぇ
- 500 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 18:37:16 ]
- こういう香ばしい人って、なんでみんなageるんだろうね
- 501 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 18:45:48 ]
- >>484,488
業務でAptana使ってるが、コード補完はやはりイマイチ。 候補が無駄に多いうえに欲しいのが出てこなかったりする。 特に、ハッシュで引数与える関数は全滅だ。 この辺はNetBeansも大差ない。 abbrevのあるemacs系の方がまだ使える。 Eclipse + JDT で幸せなJava開発環境を味わってる人には物足りないだろう。
- 502 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 19:29:58 ]
- Rubyと共に使うなら純Cだろうね。
C++はそれ単体で使うもの。 ゲーム作りならC++オンリーがパフォーマンス的に一番だろうなあ。 ただ、Rubyでも処理速度がさほど求められないならゲームに一応使えると思うが ゲーム用のライブラリはCかC++だろうしなあ。 一応、RPGツクールはRuby使えるのもある。
- 503 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 20:03:58 ]
- >>502
Ruby/SDLでだいたい満足してたから、他のゲーム用ライブラリ触ったことないんだが CやC++にはそんなに良いライブラリがあるのか?
- 504 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 21:45:12 ]
- とりあえず、SDLはC/C++でも普通に使える。
- 505 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 10:57:55 ]
- >>503
SDL
- 506 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 18:18:11 ]
- わざわざCからSDL使わなくても、Ruby/SDLでよくね
性能が要求されるなら直接DirectX使うべきだし
- 507 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 18:27:06 ]
- ゲームってのはけっこうハイレベルな感じに常時性能が要求されるもんだと思ってたが違うのか?
- 508 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 18:29:11 ]
- ゲームによるよ
3Dでエフェクトも激しいアクションゲームなんかは大変だけど そうじゃないゲームもたくさんある
- 509 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 18:36:43 ]
- 専用スレがあるんだからそっちでやればよくね?
- 510 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 18:47:04 ]
- >>508
マジレスするとそうでもない 画像表示してブラーかけてるだけのADVなのにDirect9c対応グラフィックボード要求するとかもうアホかと
- 511 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 18:55:54 ]
- 「DirectGraphicsの初期化に失敗しました」は昨今けっこう有名なメッセージだと思う
- 512 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 19:29:48 ]
- 誘導:
【Ruby/SDL他】Rubyでゲーム制作・総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1207069887/
- 513 名前:デフォルトの名無しさん mailto:sage [2008/10/10(金) 20:31:46 ]
- >>510
それはその例がそういうゲームってだけだろ
- 514 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 10:27:03 ]
- 玉金破裂ゲーム
- 515 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 15:25:43 ]
- Arrayを継承したクラスのオブジェクト.find_all{|e| e.cond?}
がArrayを継承したクラスのオブジェクトに自動でならないことにほんのりがっかりした
- 516 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 15:30:32 ]
- >>515
gem のライブラリで時々見るな、そういう中途半端実装 そこはレシーバのコレクションクラスのオブジェクトを作って返せと…なんのための独自配列なのかと…
- 517 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 16:00:49 ]
- >>515
find_all は Array じゃなくて Enumerable のメソッドだから 実際のところ自分のクラスは関係ない
- 518 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 21:09:09 ]
- Arrayは継承するな…とcompositionを使えと
- 519 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 21:59:40 ]
- Arrayを継承するってどういうシチュエーションなんだ??
- 520 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 22:08:31 ]
- なんで継承を毛嫌いするかね
- 521 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 22:09:37 ]
- いらんメソッドが付いてくるから
- 522 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 22:13:23 ]
- アホすぎて笑えない
- 523 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 22:13:39 ]
- 継承は怖い
- 524 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 22:18:59 ]
- >>520
作るのは簡単だが使うときに面倒 あと作り直すときにも面倒
- 525 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 22:20:50 ]
- すごいとこまできてるねRubyistはw
- 526 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 22:21:13 ]
- >>515
ハッシュからハッシュを返すselectやmapはたまに欲しくなる
- 527 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 22:22:01 ]
- カンペキに活用した継承は非常に強力だが、ほとんどの継承はそうではない
っていうか、組み込みクラスは継承しないで委譲しろ、継承は自作クラス間でどんどんやれ
- 528 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 22:23:05 ]
- 本当にアホばかりで嫌になる
- 529 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 22:24:49 ]
- ライブラリを書くくらいに使ってる人がいないってだけ
- 530 名前:デフォルトの名無しさん [2008/10/12(日) 10:56:19 ]
- Integerのaとbのobject_idを常に同じにする方法ってありますか?
a.object_id = b.object_id みたいなことがやりたいんですが
- 531 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 11:51:41 ]
- >>530
object_id を同じにしたい理由が良くわからんが… 普通に代入すれば同じになるでしょ。 今の実装では Fixnum の場合は即値だから必ず同じ値になるんじゃないかな。
- 532 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 12:05:34 ]
- >>530
できませんという答が妥当な気がする >>531の言うように、Ruby の整数の数値の値とオブジェクトIDは紐付けられてる 整数の 1 のオブジェクト ID は常に一定だ
- 533 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 13:33:03 ]
- >530
多分参照を扱いたいんだと思うが そういう場合は配列やオブジェクトにくるんで受け渡しするのがベスト。
- 534 名前:デフォルトの名無しさん [2008/10/12(日) 13:57:54 ]
- >>531,532,533
ありがとうございます そのままでは無理でしたか ちなみに、何故やりたかったかというと(railsの話になりますが) class A; attr_accessor id; end class B; attr_accessor a_id; end と二つclassがあり、AのidとBのa_idを同じにしたかったのです。 今までは A.transaction do @a.save!(ここで、a.idに代入される) @b.a_id = @a.id @b.save! end としていましたが、 @b.a_id.object_id = @a.id.object_id(みたいなことができれば。。) A.transaction do @a.save! @b.save! end とできると、updateでもcreateでもtransaction内が共通になるため、2つのclassをまとめたclassが定義しやすいなと
- 535 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 15:39:09 ]
- >>534
なぜそうなってしまうのかわからない。 スキーマはどうなってるの?
- 536 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 16:27:25 ]
- >>534
ごめん その話聞いても,idとa_idを同じオブジェクトIDにしたい理由がわかんないわ それにそもそも代入やFixnumみたいなやつ以外で同じオブジェクトIDになることない気がする なにか勘違いしてるんじゃ…
- 537 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 16:47:40 ]
- そんなことできたらそれはIDって言わないんじゃないの
- 538 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 16:56:36 ]
- 要するに,例えばaとbっていう変数があったときに
b.object_id = a.object_id としておけば a = 10 としたときに,bも自動的に10になってくれませんか? っていう話でしょ object_idはそんな用途に使えません
- 539 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 17:01:37 ]
- >>538
すげー よく検討ついたな
- 540 名前:デフォルトの名無しさん [2008/10/12(日) 17:54:01 ]
- >> 538
その通りです 分かりにくい説明で申し訳ないです 用は参照を使いたかったんですが。。
- 541 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 18:32:47 ]
- なんかa_idって名前が気になるな
すっげー憶測だけど、Bはインスタンス変数でAを持つのが素直な設計だったりしない? それならB#save!で@a.save!するだけで済むから楽なんだけど
- 542 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 18:38:16 ]
- >>538
おまえ、ほんとエスパーだな。 おれはさっぱり読み解けなかった。
- 543 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 19:03:44 ]
- >>534
railsというかActiveSupportはそういう関連づけを自動化してくれなかったっけ? あるいは>>541のようにしてB#a_idは@a.idを返すようにするとか。
- 544 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 20:48:21 ]
- >540は自分の頭にあるオブジェクトのイメージをER図やクラス図で
さらっと描きだせるくらいのレベルになるまでARを封印すべきだ。 もし仕事でやってるなら合掌。
- 545 名前:デフォルトの名無しさん [2008/10/12(日) 21:00:36 ]
- >>541, 543
確かにModelはそんな感じの設計です。 @a.b = @b で関連付けて、 @a.save! とすればbも入るってことですよね。 ただ、viewに2つのmodelを分けて書くのが面倒だったので、調べているとActivePresenterなるpluginを発見し (ttp://jamesgolick.com/2008/7/28/introducing-activepresenter-the-presenter-library-you-already-know) 利用してみたところ、さきほどの参照のようなことをしたいなと思った次第です。 このpluginは2つのModelを結合してくれるもので、 @ab = AB.new(params[:ab]) @ab.save で、AもBもsaveできちゃうよということでした。 ただ、DBの保存時に決定される@ab.a_idと@ab.b_a_idが関連づかずに困っていたというわけです。 あまり、plugin自体には手を入れてくなかったので、 @ab.a_idと@ab.b_a_idが同じだよということができれば良いなということでした。
|

|