- 1 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 12:18:26 ]
- Ruby on Railsスレ
みんな語ろう。
- 756 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 17:05:46 ]
- なんかすげー怪しいんだけど、ちゃんと動くようなら良いなぁ。
www.modrails.com/
- 757 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 02:45:13 ]
- >>756
ちょww、そいつのブログ izumi.plan99.net/blog/index.php/about-me/
- 758 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 11:39:10 ]
- 本場のメイドさん?
- 759 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 01:03:42 ]
- 超低級な質問で申し訳ないですが、
ActiveRecord::Baseの、::Baseって文法上どういう意味なんですか? 自分が勉強した限りでは、::という記号はクラスフィールドか定数を表すはずだったんですが。
- 760 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 01:11:49 ]
- ActiveRecordというのはモジュール。
ARのモデルは、そのモジュールの中にあるBaseというクラスを継承したクラス。 Baseもそうだが、実はStringやArrayなんかも 「値がClassクラスのインスタンスである」定数 だよ。
- 761 名前:759 mailto:sage [2008/03/30(日) 02:04:22 ]
- >>760
分かりやすい説明ありがとうございます。 Classという型があってオブジェクトはその型の定数になってるんですね。
- 762 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 03:01:03 ]
- 759の質問に答えるだけなら、BaseはActiveModuleの定数だな。
Stringみたいなクラス名が、所詮Classクラスのインスタンスを値として 持つ定数に過ぎないってのはなかなか理解しづらい人もいるかも。 >> ActiveRecord.class => Module #ActiveRecordというオブジェクトはModuleクラスのインスタンス >> ActiveRecord::Base.class => Class #ActiveRecord::BaseというオブジェクトはClassクラスのインスタンス >> class Hoge < ActiveRecord::Base; end => nil >> Hoge.class => Class #HogeというオブジェクトはClassオブジェクトのインスタンス >> Hoge.superclass => ActiveRecord::Base #HogeクラスのスーパークラスはActiveRecord::Base
- 763 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 03:01:59 ]
- 間違い
誤 ActiveModule 正 ActiveRecordというModule ○刀乙
- 764 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:50:08 ]
- ____
__,,/ _, ----`ヽ :. :. / _ ___ 、\ / / i \ \\ :. :. ,'./ i ヽ:. ヽ:.:.. ヽ.ヽ ,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :. :. |i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ} |i .i l :N_, -弋 \弌弋ナ:}:.:} :. |i∧ ', :{ ,ィjモト \ イjミトイイV :. な… .| :メヽ.', `ozZ} izN。ハ::{ なんなんですか? :. | :ヾ_! ゝ "゙゙ ' `゙ ハ.:', :. ここ、どこですか? | :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ なんであたし :. / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:. 貼られたんですか? / ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\ :. / .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ.:. / / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ', ./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ', { /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.} V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧| ヽ! )人 : : :人 : : : / \! :. " ヽ : : : : :/イ{ :.ノ: : : :.\ :. :. \__///: :\______/: : : : : : : ヽ / //: : :|;|: : : : : : i: : : __: : : : ', :. / 、 {;{ |;| . : i/. : : : : : :| / `Y;{. . . .|;|. : : : /i: : : : : : : : :l
- 765 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 22:51:18 ]
- RailsのAPIを見てると、メソッドの引数にパラメータとオプションの2種類あるんですが
これはRails独特の文法なんですか? それとも複数の引数に対して呼び名を変えてるだけですか? そもそもオプションをいくつ付けても付けなくてもよいというのは、どのようにメソッドを宣言してるのでしょうか
- 766 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 00:03:14 ]
- ソース読もうぜこんちくしょー。
- 767 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 00:39:22 ]
- 普通に最後の引数がHashで
引数の最後にHashが来る場合は{}を省略できるから名前付き引数に見えるだけ
- 768 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 11:41:46 ]
- >>767
それだとオプションを省略したらHashの引数を省略することになって 引数の数が違うというエラーが出るように思うのですが。
- 769 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 14:03:53 ]
- ソース読もうぜこんちくしょー。
- 770 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 18:37:41 ]
- PCユーザ向けSNSができたね。
Ruby on Rails+Mongrelで出来てるね。 bb.watch.impress.co.jp/cda/news/21440.html 最近増えたなぁ・・・
- 771 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 18:55:59 ]
- >>768
デフォルト引数くらい知っておいてくれ
- 772 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 22:18:51 ]
- ソース読まんようだから書いてやる
def foo(mandatory, arguments, options={}) end
- 773 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 22:54:26 ]
- 書いても読まれないよ?
- 774 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 00:04:12 ]
- 先週出たSB本まぁまぁ
よかった。昔の良書系 インプレス程度だが
- 775 名前:デフォルトの名無しさん [2008/04/01(火) 18:28:54 ]
- Informationテーブルがあったとして、そのカラムを多対多で結び付けたい(親子関係を多対多で付けたい)のですが、どのようにしたらいいでしょうか?
テーブルがどんな風になるのかいまいちわからないのです><
- 776 名前:775 mailto:sage [2008/04/01(火) 18:30:23 ]
- すみません途中で送信してしまいました><
Informationテーブルがあったとして、そのカラム同士を多対多で結び付けたい(親子関係を多対多で付けたい)のですが、 どのようにしたらいいでしょうか? information_and_informationテーブルがどんな風になるのかいまいちわからないのです><
- 777 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 12:17:08 ]
-
table_a id name table_b id name table a_and_b a_id b_id って事かいな? has_and_belongs_to_manyを使うといいかもしれんね。
- 778 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 19:01:08 ]
- 同じテーブルの結合は普通にできると思うし
acts_as_tree でやるのがかんたんにできるんじゃ。 使ったことないけど。
- 779 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 19:02:03 ]
- ごめん。多対多か。
- 780 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 23:51:17 ]
- model部分ではActionRecord::Baseを継承したクラスでvalidateメソッドをオーバーライドしますが、
APIを見てみるとvalidateメソッドはActionRecord::Validationモジュールのメソッドのようです。 どうしてオーバーライド出来るんでしょう?
- 781 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 00:20:54 ]
- lib/active_record.rb で、 ActiveRecord::Base.class_eval do ... include ActiveRecord::Validations ... end してるから。
- 782 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 02:02:44 ]
- >>781
ありがとうございます。
- 783 名前:775 mailto:sage [2008/04/03(木) 15:31:36 ]
- ありがとうございます。
自分でもなにがなんだかよくわかってなかったのですが、結局 blog.japan.zdnet.com/yoshimi/a/2007/11/mvcm.htmlを参考にして出来ました _ _
- 784 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 17:47:39 ]
- testの実行で微妙にうまく動かなくて困っています
rake test:units で全体をテストするとERRORになる項目がありますが、 一つのファイルだけ指定して、 ruby test/unit/foobar.rb 等と実行すると、PASSします。 autotestにすると、最初の一回は上と同様ERRORになりますが、ファイルを一度 更新して(全く同じ内容で上書き)もう一度テストが実行されると、同じ テストがPASSします。 モデルのクラス名とDBテーブル名がrails規約に則っていないので、 set_fixture_class で指定しているのですが、 class FoobarTest < Test::Unit::TestCase fixtures :hogera set_fixture_class :hogera => Foobar def setup @foobar = Foobar.find(1) end .... ここが設定されていないようで、Hogeraクラスがないというエラーに なっています。 なんだか、全体をテストで回すときに最初の一回初期化がおかしいような 動作に見えるのですが、何か原因や、対応策などありますでしょうか? 「2.0.2になってからfunctional testがおかしい、 setup_without_fixtures を オーバーライドしてみたらうごく・・・」という情報を見つけましたが、 これに関連しているのか、よくわかりませんでした。
- 785 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 11:44:08 ]
- 2.0.2のfunctional testは壊れてる
- 786 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 17:27:02 ]
- vendor/plugins/hogehoge/app/controllers/foo_controller.rb
を変更したい場合、このファイルを直接変更する以外に、 別の場所にコピーし上書きして使うことができるとききました。 もしほんとにそんなことができるなら、どこにコピーしたら いいのか教えてください。
- 787 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:09:53 ]
- RoRって凄いな…
Javaの10倍早いとかなんとかの噂に釣られて少し勉強してみたけど マジで2〜3時間程度で1つのWebサービス作れるようになった
- 788 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 16:16:58 ]
- >>787
それは貴方がすごいだけ。
- 789 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 23:41:06 ]
- >>787
RoRの派生系統でもそんな感じ。 たとえばLisp系のGauche/Kahuaもそれぐらいで作れる。 RoRは「10分で作れる・・・」が目標w
- 790 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 13:14:41 ]
- だめだ・・・
俺なんてログインフォームの html.erb 編集だけで 10 分くらいかかっちゃう。
- 791 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 13:25:36 ]
- そこから先も長そうだな・・・
- 792 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 13:33:42 ]
- そのぶん作りたてでは実行速度が絶対的に遅いです
サイトに合わせて設定やパラメータをチューニングしていくとまあまあの動作になります 他の言語では作りたては単一の目的に驀進してて普通に速くて軽快ですが、 ユーザーの利便のためにエラー処理とかオプションとかを作りこんでいくとどんどん遅くなります どっちもどっちっすな
- 793 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 16:32:27 ]
- >他の言語では作りたては単一の目的に驀進してて普通に速くて軽快ですが、
>ユーザーの利便のためにエラー処理とかオプションとかを作りこんでいくとどんどん遅くなります でたYO!Ruby厨のネガキャンw 「他の言語はどんどん遅くなってしまえ」の間違いじゃねえの?www
- 794 名前:デフォルトの名無しさん [2008/04/06(日) 17:38:40 ]
- Rubyはもっと広がってほしいけど、その前にPHPを抹殺してほしい。
- 795 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 18:36:15 ]
- PHPとPerlとVBとCOBOLとJavaは関わりたくないな
- 796 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 18:45:28 ]
- PerlとJavaは内容によっては許可
- 797 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 18:48:10 ]
- >>793
あんたプログラム作ったことないね
- 798 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 19:01:04 ]
- PHPなどの他の言語では遅くなるけどRubyでは遅くならない例ってあるのかな?
具体的なケースがあればRoRを使う理由のひとつとして提案しやすいよ。 RubyとRoRのどの部分が速度に効いてるかその理由も聞かしてよ。 作りこんでいくと遅くなるだと、どの言語を使ってもプログラマーの腕次第って結論になるよ。 設計が良いから遅くならない理由をちゃんと説明できるようになりたい。
- 799 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 19:29:29 ]
- \ ∩─ー、 ====
\/ ● 、_ `ヽ ====== / \( ● ● |つ | X_入__ノ ミ そんな餌で俺様が釣られクマ―― 、 (_/ ノ /⌒l /\___ノ゙_/ / ===== 〈 __ノ ==== \ \_ \ \___) \ ====== (´⌒ \ ___ \__ (´⌒;;(´⌒;; \___)___)(´;;⌒ (´⌒;; ズザザザ
- 800 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 19:44:59 ]
- PHPonRailsとか無いんですか
- 801 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:17:11 ]
- COBOL ON COGSなら
- 802 名前:デフォルトの名無しさん [2008/04/06(日) 21:38:21 ]
- www.nicovideo.jp/watch/sm1233406
Perl + Catalystフレームワークによる1行掲示板の作成過程 8分で作ってるぞw
- 803 名前:デフォルトの名無しさん [2008/04/06(日) 21:39:56 ]
- rubyは口だけ
- 804 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 21:56:25 ]
- 8分で作るまでになんどリハーサルやったんだろうな。
第一8分でできたといってもそれ実用レベルじゃないしな。
- 805 名前:デフォルトの名無しさん [2008/04/06(日) 21:57:58 ]
- Ralisでこんなに速く簡単に作れるんか?
- 806 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:26:20 ]
- n分で作るなんとかシリーズって、みんなタイピング練習してからキャプチャしてるだろ。
ってマジレスでごめん。
- 807 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:27:27 ]
- >>804
それはRailsにも言えること。 あんなのを素の本気でアピールに使うのは迷惑千万。
- 808 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:32:37 ]
- Rubyだけが例外と思ってる奴はアホ。
現実的にはRoRもスケーラビリティーに問題があるというのが一般的な見解。 作りこめば遅くなるのも同様。 Catalystが早いのもリーハーサルじゃなくてコード数のおかげ。 RoRは開発スピードが停滞してて他言語に追い越されつつある。
- 809 名前:デフォルトの名無しさん [2008/04/06(日) 22:40:28 ]
- デフォルトでperlのほうが2倍以上速くてしかも
RubyだとFastCGIしか使えないだろw どう見てもperlにメリットがあると思うw
- 810 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:58:16 ]
- >>809
まぁ保守という面を除けばな
- 811 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 23:00:39 ]
- とは言え、perlで1万行書いたら確実に死ねる。
経験者が言うんだから間違いないw # しかもそのシステム、まだ現役なんだ……。
- 812 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 23:00:58 ]
- >>804
rubyは実用的だとでも?
- 813 名前:デフォルトの名無しさん [2008/04/06(日) 23:05:16 ]
- 本読むにも文字が少ないほうが速く読めるだろ
1000ページの本と 100ページの本どちらが速く見れるか 慣れれば省略なんて分かるさ。
- 814 名前:デフォルトの名無しさん [2008/04/06(日) 23:06:11 ]
- Rubyだとperlで1万行で済むところ3万行も書く羽目になる
- 815 名前:デフォルトの名無しさん [2008/04/06(日) 23:23:10 ]
- 3万ってたいしたことなくね?
- 816 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 23:28:13 ]
- 私的には些細な保守性や速度の差よりも、
ドキュメントが充実してるか否かの方が大きいわ。
- 817 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 23:51:09 ]
- じゃ、PHPってことで
- 818 名前:デフォルトの名無しさん [2008/04/06(日) 23:52:21 ]
- ドキュメントもモジュールもperlが一番多くて出来る事も多い
- 819 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 23:56:56 ]
- FastCGIって使うのかなぁ。
Apache+mod_proxy_balancer+mongrel_cluster だと思うけど。 スケーラビリティの無さは確かに困るね。 実際に開発に入る前に、 その辺の基礎的な所を固めるのに結構時間かかったよ。
- 820 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 00:49:16 ]
- >>804
ホントはそんなにゲームが上手いわけじゃなくて、イベントのために 「スターソルジャー」のステージ1だけ猛練習してた高橋名人みたいなものか。
- 821 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 01:09:42 ]
- ウェブアプリなんて、8分でつくれるんだろ?
- 822 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 01:49:45 ]
- 自分が書いたプログラムが全部で何行になっているか確認する方法はありますか?
RoRだとよくわからなくて・・・
- 823 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 01:50:07 ]
- rubyって早くも行き詰ってる感あるからなぁ
RoRでちょっと人気でただけで PHPが登場したときの盛り上がりと比較すれば差は歴然だよね pythonではなくruby選ぶ理由なんて現時点では皆無だし
- 824 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 02:05:10 ]
- >>814
両方いじった感触だとそれはありえない。 perlやrubyなら100行で済むところが、javaだと300行になるのはよくあるが。
- 825 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 03:15:48 ]
- > 822
rake stats
- 826 名前:デフォルトの名無しさん [2008/04/07(月) 09:04:09 ]
- pythonのような屑言語と比較するなよ
- 827 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 09:07:01 ]
- 板違いなので次スレはここで
pc11.2ch.net/test/read.cgi/php/1207425569/
- 828 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 09:09:01 ]
- Rails on Apache と Apache on Rails
どっちがいい?
- 829 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 10:17:06 ]
- >>819
mongrelって最適なプロセス数をちゃんと考えておかないとイマイチじゃね? そこら辺皆どうしてるん? ちゃんとJmeterでしらべてるのかしらん?
- 830 名前:デフォルトの名無しさん [2008/04/07(月) 11:29:21 ]
- rails全然スケールすると思うけどなぁ。
ちゃんと作ってれば、WEB系システムのスケールってだいたいDBの速度じゃない? スケーラビリティーに問題ありって人はどういった状況なの?
- 831 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 12:12:47 ]
- >>829
おれも興味ある。 mongrelのプロセス数が足りてないのか、あるいは多すぎるってのは、 何を見て判断すればいいんだろ。 とりあえず最初から3個のままだ。
- 832 名前:デフォルトの名無しさん [2008/04/07(月) 13:04:30 ]
- 描画で時間かかってて、同時アクセス数が多いならプロセス数増やす
DBが遅いならRAILS関係なし プロセス数たりなければ、apacheの待ちプロセスが増える。 プロセス多すぎたらリソース食いすて遅くなる等の問題が出る。 メモリはいっぱい積もう。
- 833 名前:デフォルトの名無しさん [2008/04/07(月) 13:58:53 ]
- 質問させてください。
初心者で、何をいじれば、良くなるのか、わからないので、 ヒントをいただけるとうれしいです。 構成は、 Apache(+mod_proxy_balancer) + mongrel_cluster(Rails) + MySQL です。 スクリプトで、別マシンから平均25アクセス/秒程度の 負荷を掛けてみました。 レスポンスに平均2秒程度掛かってしまっています。 Mongrelは10個立ち上げてます(多すぎですかね?) アプリマシンの状態はこんな感じです。 $ vmstat 5 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 0 3242764 78532 117304 0 0 0 0 10 10 0 0 100 0 0 0 0 3244628 78532 117348 0 0 0 0 1329 1262 61 4 35 0 14 0 0 3243952 78548 117416 0 0 0 25 1579 1548 72 6 22 0 7 0 0 3242316 78556 117500 0 0 0 25 1876 1535 92 8 0 0 9 0 0 3241708 78564 117584 0 0 0 22 1937 1415 93 7 0 0 9 0 0 3240336 78572 117664 0 0 0 22 1839 1281 93 7 0 0 10 0 0 3240960 78580 117740 0 0 0 21 1883 1324 94 6 0 0 9 0 0 3238612 78588 117820 0 0 0 26 1885 1336 93 7 0 0 10 0 0 3240196 78596 117904 0 0 0 22 1887 1325 93 7 0 0 10 0 0 3240456 78604 117988 0 0 0 24 1903 1432 94 6 0 0 9 0 0 3240588 78612 118068 0 0 0 22 1875 1272 93 7 0 0 5 0 0 3240100 78620 118156 0 0 0 22 1935 1704 92 8 0 0
- 834 名前:833 [2008/04/07(月) 14:15:05 ]
- すみません。アプリマシンは、こんな感じです。
$ vmstat 5 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- -r--b --swpd---free---buff--cache --si---so ---bi----bo --in---cs us-sy-id-wa -0--0 -----0-3242764--78532-117304 ---0----0 ----0-----0 --10 --10 -0--0-100--0 -0--0 -----0-3244628--78532-117348 ---0----0 ----0-----0 1329-1262 61--4-35--0 14--0 -----0-3243952--78548-117416 ---0----0 ----0----25 1579-1548 72--6-22--0 -7--0 -----0-3242316--78556-117500 ---0----0-----0----25 1876-1535 92--8--0--0 -9--0 -----0-3241708--78564-117584 ---0----0-----0----22 1937-1415 93--7--0--0 -9--0 -----0-3240336--78572-117664 ---0----0-----0----22 1839-1281 93--7--0--0 10--0 -----0-3240960--78580-117740 ---0----0 ----0----21 1883-1324 94--6--0--0 -9--0 -----0-3238612--78588-117820 ---0----0 ----0----26 1885-1336 93--7--0--0 10--0 -----0-3240196--78596-117904 ---0----0 ----0----22 1887-1325 93--7--0--0 10--0 -----0 3240456--78604-117988 ---0----0 ----0----24 1903-1432 94--6--0--0 -9--0 -----0-3240588--78612-118068 ---0----0 ----0----22 1875-1272 93--7--0--0 -5--0 -----0-3240100--78620-118156 ---0----0 ----0----22 1935-1704 92--8--0--0 -0--0 -----0-3241952--78628-118204 ---0----0 ----0----21 -978-1249 41--3-56--0 -0--0 -----0-3241960--78636-118224 ---0----0 ----0----12 -535--904 15--2-83--0 -0--0 -----0-3241952--78644-118232 ---0----0 ----0-----8 -347--900 -6--1-93--0 -2--0 -----0-3241952--78652-118236 ---0----0 ----0-----6 -294--853 -1--0-98--0 -0--0 -----0-3241952--78652-118236 ---0----0 ----0-----3 -269--939 -0--0-100--0 -0--0 -----0-3242016--78660-118236 ---0----0 ----0-----2 -253--820 -0--0-100--0
- 835 名前:デフォルトの名無しさん [2008/04/07(月) 14:37:15 ]
- railsログでは1プロセスは1リクエストを何秒で処理できるの?
簡単に言えば1プロセスが1秒に10リクエスト裁けるなら、mongrel5個なら 1秒に50個処理できるよね。 もともと処理に2秒かかるなら、プロセスいくつ増やしたって当然2秒かかる。 プロセス増やして描画の処理能力が落ちちゃってるならプロセス多すぎる。 DBが遅くなってるなら設計がだめかサーバーがぼろすぎる。 設計がダメなアプリは何でどう作ってもダメだからしょうがないよ。
- 836 名前:833 [2008/04/07(月) 14:59:22 ]
- >>835
アドバイス有難うございます。 秒間、18リクエストぐらいまでは、 平均、0.2秒で返してくれるんですが、 19〜20リクエストぐらいから、どんどん遅くなるみたいです。 railsログは、log/production.logを見れば良いんですかね? production.logは、こんな感じです。 Completed in 0.01850 (54 reqs/sec) | Rendering: 0.01424 (76%) | DB: 0.00000 (0%) | 200 OK Completed in 0.01773 (56 reqs/sec) | Rendering: 0.01332 (75%) | DB: 0.00000 (0%) | 200 OK Completed in 0.06937 (14 reqs/sec) | Rendering: 0.06201 (89%) | DB: 0.00000 (0%) | 200 OK Completed in 0.03860 (25 reqs/sec) | Rendering: 0.03171 (82%) | DB: 0.00000 (0%) | 200 OK Completed in 0.05636 (17 reqs/sec) | Rendering: 0.05005 (88%) | DB: 0.00000 (0%) | 200 OK Completed in 0.01776 (56 reqs/sec) | Rendering: 0.01385 (78%) | DB: 0.00000 (0%) | 200 OK Completed in 0.13781 (7 reqs/sec) | Rendering: 0.12299 (89%) | DB: 0.00000 (0%) | 200 OK
- 837 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:01:49 ]
- 個人的には鯖がたくさんあって、書き込みが多いシステムにはmongrel
それ以外ならFastCGIで htmlに吐いてキャッシュかRailsキャッシュ使うなりして逃げた方がいいと思ってる。 >>833 それだけじゃワカラン。 SWAPは発生して無いみたいだから DB回りがボトルネックになってると予想 JOINとかしてる? 無駄なクエリ発行してない? ARに頼ると遅くなるよ select * from hoge where id = ????? limit 1 ; みたいな単発SQLでも数が多いと時間かかる時もある
- 838 名前:833 [2008/04/07(月) 15:18:06 ]
- >>837
有難うございます。 確かに、クエリは多くなっているように思います。 JOINしてます。 ARに頼らないということは、DBIを使うべしということでしょうか? よくわかっていないもので、お手数お掛けしてすみません。
- 839 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:28:53 ]
- >>838
find で :select で絞るとか、 :join で明示的にJOINするとか・・・ クエリに関わる物全てが動的だったら無理だけど、 マスタデータとか、バッチ更新でしか変わらないようなデータなら フラグメントキャッシュ使うとかやってみたら? 例えば、TOPのランキング一覧とかなら その部分はフラグメントキャッシュで持って 1時間毎キャッシュクリアして更新するとか。 クエリ多いなら、 DB側のチューニングもやってなければやった方がいいかもしれんね。
- 840 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 15:33:21 ]
- さくらのレンタルサーバーとかだったら、DB周りはチューニングしようがないと思うよー
- 841 名前:833 [2008/04/07(月) 15:38:16 ]
- >>839
有難うございます。 :selectは、使ってませんでした。 アドバイス助かります。 キャッシュについても試してみます。
- 842 名前:833 [2008/04/07(月) 15:41:21 ]
- >>840
自宅に置いてるので、いじれると思うんですが、 具体的な方法がわかってません。
- 843 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:01:35 ]
- David Pollak
わたしはこれまで Rails による開発を 18 カ月、Java による開発を 10 年経験してきました。 Rails はウェブ開発に新しい風を吹き込みました。よく使うタスクはコマンド一発で実行することができます。 実にすばらしい。しかし、私は気が付いてしまいました。Ruby の動的型付けは多くのエラーを引きおこすことに。 そして、安心してデプロイするためには 95% ものテストカバレッジを達成しなければいけないことに。 95% のテストカバレッジを得ることの代償として、私の書いたコードは(テストコードも含めて) Java で書いたものと同等のサイズにまでふくれあがってしまいました。 その上、Rails では動的なコードの変更が可能なため、開発・テスト・デプロイ中にトラブルが続出するようになりました。 高いテストカバレッジを確保しているにも関わらずです。 これらの問題にくわえて、MRI(Matz Ruby Implementation: まつもとゆきひろ氏による Rubyの実装)は速度が遅く、 言語仕様も安定していません。それなのに開発コミュニティはそのことに見向きもしません。
- 844 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 16:28:12 ]
- >>843
ひがの反論の方がしっくりくるよ 95%カバレッジしててトラブル続出ってありえないだろう
- 845 名前:デフォルトの名無しさん [2008/04/07(月) 17:09:37 ]
- CPUリソース不足
あとはMYSQLで処理開始待ちが増えてないかどうか見てみな
- 846 名前:833 [2008/04/07(月) 17:31:05 ]
- >>845
アドバイス有難うございます。 ということは、Railsのコードに大幅な改善が見込めないなら、 さっさと、アプリサーバを増やした方が早いということでしょうか。 MySQLの状態の見方が良くわかっていないのですが、 負荷テスト中に、show full processlist;してみると、こんな感じでした。 mysql> show full processlist; +-----+--------+---------------------+----------------+---------+------+-------+-----------------------+ |-Id--|-User---|-Host----------------|-db-------------|-Command-|-Time-|-State-|-Info------------------| +-----+--------+---------------------+----------------+---------+------+-------+-----------------------+ |-316-|-apphnk-|-192.168.2.100:60163-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|- |-317-|-apphnk-|-192.168.2.100:60164-|-hnk_production-|-Sleep---|----1-|-------|-NULL------------------|- |-318-|-apphnk-|-192.168.2.100:60165-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|- |-319-|-apphnk-|-192.168.2.100:60166-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|- |-320-|-apphnk-|-192.168.2.100:60167-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|- |-321-|-apphnk-|-192.168.2.100:60168-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|- |-322-|-apphnk-|-192.168.2.100:60169-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|- |-323-|-apphnk-|-192.168.2.100:60170-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|- |-324-|-apphnk-|-192.168.2.100:60171-|-hnk_production-|-Sleep---|----1-|-------|-NULL------------------|- |-325-|-apphnk-|-192.168.2.100:60172-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|- |-327-|-root---|-localhost-----------|-NULL-----------|-Query---|----0-|-NULL--|-show-full-processlist-|- +-----+--------+---------------------+----------------+---------+------+-------+-----------------------+ 11 rows in set (0.00 sec)
- 847 名前:デフォルトの名無しさん [2008/04/07(月) 18:12:03 ]
- 今あるデータだけだとそう考えられるね。とりあえずプロセス減らして、サーバー買うなりCPU強化するなり、ロジックを修正するなり
BACKGROUNDRBとか、大量のログとか、ファイルの読み書きとかやってないよね?
- 848 名前:833 [2008/04/07(月) 18:28:08 ]
- >>847
アドバイス恐縮です。 BackgrounDRb、log/production.log以外のログ、 ファイルの読み書き、などやっていないと思います。 教えていただいたことをやってみます。 有難うございました。
- 849 名前:デフォルトの名無しさん [2008/04/07(月) 19:21:18 ]
- production logだけど、遅くなってる時はproduction.logの処理時間も遅くなってるんだよね?
apacheでは処理時間だしてる? apacheで表示される処理時間と、同じリクエストのproduction.logを見てみな。 どっちみちWEBアプリでユーザーのCPUリソースが90%超えるとかありえないから どっかおかしいんじゃないかな。それか 凄く思いロジックを凄いぼろい鯖でやってる?
- 850 名前:833 [2008/04/07(月) 20:38:36 ]
- >>849
有難うございます。 Apacheのログに%D(マイクロ秒?)で処理時間を出してみました。 こんな感じで、 1312022 970413 1431397 1205620 1165282 1027745 1138476 1326502 980994 大体1秒から2秒ぐらいかかってます。ただ、6335389ぐらいかかってる リクエストが混じってるので、平均して2秒以上掛かってます。 (遅かったリクエストの処理が他に比べ重いとかそういうことはないです。) すみません。先ほど、production.logのデータを取るところを間違ったみたいで 一番負荷が掛かってる頃では、大体0.2〜0.35秒ぐらいかかってました。 30秒間で、1秒程度掛かってるのも3回ほどありました。
- 851 名前:833 [2008/04/07(月) 20:50:09 ]
- >>849
ロジックが酷いのかもしれないです。 CPUは、Core2Duoです。 :includeとかで、もう少し速くなりそうではあるのですが、 根本的に、やり方が酷いのかもしれません。。 あと、秒間18リクエストぐらいに落とすと、 ユーザーのCPUリソースがだいたい60%ぐらいで、 平均0.2秒ぐらいでレスポンスが返ってきます。
- 852 名前:デフォルトの名無しさん [2008/04/07(月) 21:43:54 ]
- TEXT入力ボックスの幅を調整するにはどうすればよいですか?
<p> <b>Text</b><br /> <%= f.text_area :text %> </p>
- 853 名前:833 [2008/04/07(月) 21:51:17 ]
- >>852
こんな感じ? <%= f.text_area :text, {:cols => 50, :rows=> 5 }%>
- 854 名前:デフォルトの名無しさん [2008/04/07(月) 22:03:43 ]
- >>853
ありがとうございます。 うまく行きました。3日前からはじめたばっかりなもんで ^^;
- 855 名前:833 [2008/04/07(月) 22:37:19 ]
- >>854
僕もつい最近覚えました。。
- 856 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 23:38:37 ]
- >>851
Railsのログ見てどこがネックになってるかわからんのん? DBアクセスで何秒、レンダリングで何秒か位は出てた気がする。 見当違いだったらスマンね。
|

|