トップページ⇒php
1001コメント336KB

【Ruby】Ruby on Rails Part6

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/10/24(金) 17:46:53ID:???
■前 Ruby on Rails のスレ が
http://pc11.2ch.net/test/read.cgi/php/1207425569/

■参考サイト
<英語>
本家:http://www.rubyonrails.org
API document:http://api.rubyonrails.com/
開発者のblog:http://weblog.rubyonrails.org/
参考wiki:http://wiki.rubyonrails.org/rails

<日本語>
Rails' wiki: http://wiki.fdiary.net/rails/

■参考スレ
Rubyについて Part 33
http://pc11.2ch.net/test/read.cgi/tech/1223709050/
Ruby 初心者スレッド Part 22
http://pc11.2ch.net/test/read.cgi/tech/1221467121/
0511nobodyさん2009/03/08(日) 11:25:07ID:???
>>510
508はごくごく正論だと思うが。
ここはそもそも教えてスレじゃないんだから、答えるのは飽くまでその人の善意。

自分のほしい答えがもらえなかったからって逆ギレしなさんな。
0512nobodyさん2009/03/08(日) 12:09:33ID:???
おれは1.9のスピードに魅力を感じるがな。
測定したわけじゃないから体感レベルだが確かに速い。

1日10万とか20万PVくらいまでなら1.8でもいいが、
100万を超えるなら1.9だろう。

あと個人的なべき論を、
まるで正統かのようにレスするのはおれもどうかと思う。
0513nobodyさん2009/03/08(日) 13:05:37ID:???
>>512

Rubyist Magazine - Ruby 1.9 で Web アプリを想定したベンチマークをとってみた
http://jp.rubyist.net/magazine/?0025-Ruby19_Performance

> ベンチマークの最後として、データベース処理を含めたベンチマークを実行してみます。
> 内容はコメントつきの Blog アプリケーションであり、使用したデータベースとデータ件数は
> 以下の通りです。
>
> * MySQL バージョン: 5.0.67
> * データ件数: ユーザ 10 人 + ブログエントリ 5000 件 + コメント 10000 件
(中略)
> この結果から、次のようなことがわかります。
>
> * Ruby による消費時間を比べると、Ruby 1.8.7 より 1.9.1 のほうが約 1 % ほど速い。
> * 全体の実行時間のうち、Ruby による消費時間はわずか数パーセントにすぎない。

結論:
1.9系で速くなったのは科学計算等で使うようなアルゴリズムの部分であって、基本的に
文字列操作がメインのWebアプリケーションでは目立った高速化はない。

またWebアプリケーションのボトルネックはDBであることがほとんどであり、Ruby処理系
が数倍高速になったとしても、全体のパフォーマンスに与える影響は限定的なものである
場合が多い。
0514nobodyさん2009/03/08(日) 13:12:49ID:???
>>509
Linuxでいいのにね。
0515nobodyさん2009/03/08(日) 13:38:23ID:???
RoRの話じゃないのに、ミスリード誘ってるの?
0516nobodyさん2009/03/08(日) 13:42:11ID:???
1.9は速度っていうよりもマルチスレッド化が
webアプリにとって大きいんじゃないの?
0517nobodyさん2009/03/08(日) 15:30:33ID:???
>>516
長期的にはそうだね。

ただ今の時点でRailsのスレッドセーフオプションを有効にして、さらにRuby1.9で
動かすのは人柱以外の何者でもない。

何か問題があっても自己解決できないような素人にはオススメできないのは当然。
0518nobodyさん2009/03/08(日) 16:12:24ID:???
>>513
こんな例で比べられてもw
MySQLのくそ頭の悪いオプティマイザー+エンジンで結合使うとかそれこそ自殺行為だからw
純粋な計算処理とViewのところは参考になったけど

あと1.8と1.9の両方で動くプログラムで比べても意味ないから
まんま入れ替えて動作して高速化してとか期待してないし、
そもそも動かないだろうし
0519nobodyさん2009/03/08(日) 17:00:41ID:???
1.9の評価がさんざんなので、信者が必死になってる感じだな。

DBはどれがいいの? やっぱりオラクル?
0520nobodyさん2009/03/08(日) 18:03:31ID:???
いやそもそも1.9じゃWebアプリは速くなるどころかヘタすると遅くなるんじゃね?って
言われてただろ。
MatzだったかささださんだったかYuguiさんだったか誰か忘れたけど、そういう趣旨
の話をどっかで聞いた記憶がある。
0521nobodyさん2009/03/08(日) 18:19:54ID:???
そもそも現時点でRailsってそれほど遅くない。
EngineYardの計測データだと、素のPHPには負けてもCakePHPみたいな
フレームワークと比べると数倍は速いらしい。(さらにそれよりもMerbの
ほうが速いというオチはついてるが)

Railsの何が問題かというと、メモリの爆食い。
これはMerbにも共通することなので、3.0で統合されても当面解決しそうにない。

メモリ使用量の少ないフレームワークにはWavesとかSinatraとかあるら
しいが、いまいちマイナーで実績がなさそうなのが難点。
0522nobodyさん2009/03/08(日) 18:54:45ID:???
なんでそんなにメモリ食うの?
いらんライブラリー読みまくってるとか、アクティブレコードで消費してるとかか?
0523nobodyさん2009/03/08(日) 21:33:27ID:???
>>522
rubyのメモリー管理が悪いみたいよ
0524nobodyさん2009/03/08(日) 22:04:45ID:???
「悪い」わけではない
メモリを節約して使うという設計になってないだけだ
メモリを節約するとCPU時間を食うから、メモリを使うように設計しただけ
メモリのほうが大事な人はRuby使ったら駄目
0525nobodyさん2009/03/08(日) 22:24:38ID:???
時間と空間のトレードオフ、て奴だね
速度を重視するなら、メモリにコンテンツ展開して外部記憶(HDD)へのアクセスを減らす
空間(メモリ節約)重視なら、必要になる度にHDDから読み込んで使い終わったらすぐ開放
0526nobodyさん2009/03/08(日) 22:27:06ID:???
pythonはメモリ食わないよ(rubyと比べて)
はやいし
0527nobodyさん2009/03/08(日) 23:05:04ID:???
Rubyはコンセプト的に遅いんだよ
PythonをRubyと同じ動作するように作ったら、Rubyと同じ速さになる
たとえば、Rubyからeval機能を無くせば一定の速度向上が望めるが、それはきっとRubyではない
0528nobodyさん2009/03/08(日) 23:11:42ID:???
IronRubyは滅茶苦茶速いみたいだよ。
ttp://blog.prokrams.com/2008/08/27/ironruby-vs-jruby-vs-mri-performance-mini-shootout/
まだ、Railsがちゃんと動くまでにはなってないみたいだが。
0529nobodyさん2009/03/08(日) 23:12:26ID:???
あれ、違うわ。3倍近く遅いんだ。
使えないな。
0530nobodyさん2009/03/08(日) 23:17:11ID:???
IronRubyは速くなるか遅くなるかの二者択一だと思う
CRubyより速くならない処理があるのなら、そこはCRubyよりずっと遅く動く
速くなる部分だけIronRubyが使えればいいが、そううまくいくかね
0531nobodyさん2009/03/09(月) 00:50:35ID:???
え,速くなることもありそう?
DLRとかがもうそんなに発達してるってこと?

CRubyにはJRubyにもIronRubyにも負けてほしくないなあ
0532nobodyさん2009/03/09(月) 00:55:23ID:???
IronRubyが出てばMSがドキュメントを整備してくれるかもしれない
おれはそれを期待している
Railsが動くようになるなら、相当互換性は高いだろうから
0533nobodyさん2009/03/09(月) 03:50:25ID:???
>>509
LinuxはPCも無料なんですか
すごいですね
0534nobodyさん2009/03/09(月) 06:18:44ID:???
Ruby on Rails の開発陣は全員Macだったような、、、
0535nobodyさん2009/03/09(月) 10:56:08ID:???
ゲイツの子供はRails禁止です
0536nobodyさん2009/03/09(月) 11:35:01ID:???
ピニャータだろw
0537nobodyさん2009/03/09(月) 18:15:01ID:???
幼稚園の時>>533みたいなこと言う子居たな
0538nobodyさん2009/03/09(月) 18:19:05ID:???
上げ足とられて悔しいのかも知れんが、>>533はまともだと思うが。
0539nobodyさん2009/03/09(月) 21:12:50ID:???
自己紹介乙
0540nobodyさん2009/03/09(月) 21:37:13ID:???
iPhoneとiPodは実際に禁止らしいな。立場上。
0541nobodyさん2009/03/10(火) 13:45:45ID:???
RoRの話をしなさいw
0542nobodyさん2009/03/10(火) 19:53:36ID:???
マクよりPCのほうが安い現実。
0543nobodyさん2009/03/10(火) 20:59:58ID:???
Macで開発できるけど、運用どうすんの。
Macサーバー買うの?
0544nobodyさん2009/03/10(火) 21:23:50ID:???
うちはWindows/Gentoo/Macで開発してCentOSでサービス公開している。
なんで実運用までMacでやらにゃあかん?
0545nobodyさん2009/03/10(火) 22:04:47ID:???
下らん煽りに釣られるなよ・・・
0546nobodyさん2009/03/10(火) 22:06:25ID:???
最初から無料の遷都で開発すればもっと儲かる。

マクの10マソ鯖なんて無いだろ。
0547nobodyさん2009/03/10(火) 22:10:32ID:???
そんな利益カツカツのサービスでやってるのか。
0548nobodyさん2009/03/10(火) 22:11:12ID:???
MacってMacPro以外は使えねえからなあ。
0549nobodyさん2009/03/10(火) 22:29:21ID:???
アンチMacはなんなの?
Macで開発したらバカなの?
儲からないの?しぬの?
0550nobodyさん2009/03/10(火) 22:51:16ID:???
>>549
別に。
特にないです。
0551nobodyさん2009/03/11(水) 00:25:38ID:???
話は戻るが、Railsがメモリ食いなのはRubyのせいというだけではない。

ttp://www.infoq.com/jp/news/2008/03/waves-ruby-framework

古い記事だが、WavesなんかはRailsと比べてメモリ消費量が1/3〜1/4なんだそうだ。
開発者の手前味噌なんで、数字の鵜呑みはできないが。
0552nobodyさん2009/03/11(水) 00:33:41ID:???
ところでみんな、ViewのPartialってちゃんと動いてる?

<% render :partial => "hoge" %>

で、_hoge.html.erb を読み込ませても、中のHTMLが表示されない。
2.1、2.2、2.3の三つのバージョンで試しても全く同じ。

ファイル名を変更するとエラーになるし、_hoge.html.erb の中で <% p "AAAAAAA" %> とかやると
WEBrickのログのほうに"AAAAAAA"が出力されるので、読み込まれているのは確かなんだけど。

使い方が間違ってるんだろうか。
0553nobodyさん2009/03/11(水) 00:37:26ID:???
<%= render :partial => "hoge" %>
~~~~
=を付けてないんじゃまいか?
05545522009/03/11(水) 00:44:00ID:???
>>553
あーなるほど。=をつけなきゃいけないということをすっかり忘れてました。
いやお恥ずかしいかぎり。

自分では気づけなくて今日半日くらいつぶしたので、感謝です。
0555nobodyさん2009/03/11(水) 01:50:21ID:???
2.3のRCの出来は如何に
0556nobodyさん2009/03/11(水) 03:47:54ID:???
マクなんてどれ使っても使えないだろwww
0557nobodyさん2009/03/11(水) 03:53:27ID:???
>>556
いやキミは使ったことないから
0558nobodyさん2009/03/11(水) 08:55:59ID:???
昔触ったとき、右クリックがないことにものすごい憤りを覚えた
0559nobodyさん2009/03/11(水) 09:23:16ID:???
>>558
Macはマウスだけじゃなくてキーボードと併用するのが普通
初代さんが見たらこの現状きっと泣くだろうなと思って研究室で使ってた
0560nobodyさん2009/03/11(水) 09:44:58ID:???
>>559
そんなことは知っているが、使いやすいと評判な意味はまったくわからなかったな。
しかも普通に2ボタンマウス使えば右クリック使えるというのがまたふざけてる。
いちいちボタンひとつにしてる理由が全く無い。
0561sage2009/03/11(水) 09:56:51ID:La0qmAhb
入力→確認→登録という流れのフォームを作ってます。

フォームの項目が頻繁に変更・追加・削除され、
そのたびに入力用テンプレートと確認用テンプレートを編集してます。

入力と確認用のテンプレートはほぼ同じ内容なので
ちっとも DRY じゃないなーと。

みなさんはどうしてますか?
入力&確認テンプレートを吐き出すプログラムを別途用意?
それとも何か便利なプラグインが???
0562nobodyさん2009/03/11(水) 16:21:19ID:???
純正マウスも3ボタンじゃないしな。PCのほうが普通に使い易い。

オブジェクト指向なんだから使い回せるように工夫すれば?
0563nobodyさん2009/03/11(水) 16:52:00ID:???
Macは信者が痛すぎるんだよ。
いちいち、「俺、Mac使ってる」とかいう奴なんなの?特別な存在だと思われたいの?



と、言ってみる。
0564nobodyさん2009/03/11(水) 16:56:21ID:???
>>560
設定変えれば純正マウスも2ボタンにできるぞ。
デフォルトが1ボタンなのは文化か?
0565nobodyさん2009/03/11(水) 18:51:49ID:???
Macはアンチが痛すぎるんだよ。
いちいち、「俺、Mac嫌ってる」とかいう奴なんなの?特別な存在だと思われたいの?
0566nobodyさん2009/03/11(水) 19:03:57ID:???
マク話はもういいよ・・・。
05675612009/03/11(水) 19:14:46ID:???
Rails の話もお願いします><
0568nobodyさん2009/03/11(水) 21:09:08ID:???
新Macbookは4本指に対応したからマウスいらなくなった
0569nobodyさん2009/03/11(水) 21:14:27ID:???
>>561
頻繁に変更されない様に初めにきっちり仕様を決める
0570nobodyさん2009/03/11(水) 21:18:23ID:???
>>561
どうせ最初から理想の設計にはならないので、フォーム項目が安定しないうちは
べた書きでいいんじゃない?
安定したらまた考える。

0571nobodyさん2009/03/11(水) 22:20:30ID:???
>>561
それこそ部分テンプレ使えばいいんじゃないかと思うんだが、そういう基本的な話じゃないの?
0572nobodyさん2009/03/11(水) 22:42:17ID:???
確認のその場で修正できるフォームなら、部分テンプレートでよさそうだな。

「確認用はフォームではなく編集不可のHTMLとして表示する。
間違いを見つけたら編集ボタンを押して、現在値入力済みの
入力フォームへ飛ぶ」だと個別作成になるかね。
0573nobodyさん2009/03/11(水) 23:21:07ID:???
テンプレート一枚で
actionでinputとインスタンス変数表示切り換えるヘルパー作っちゃえば?

input confirmつながりで、
confirm時は皆hiddenに突っ込んでる?
それともセッション?

個人的には
セッションにあまり値入れたくない派だけど
皆どうなのか気になって聞いてみた
0574nobodyさん2009/03/11(水) 23:55:23ID:???
hiddenにしておかないと進む戻るされたときにすじつまがあわなくならん?
05755072009/03/12(木) 00:15:41ID:JHPTnQN+
レスありがとうございましたm(_ _)m
結局rubyのバージョンを1.8.7に落としてやることにしました。

>>510
は俺じゃないっす。

すいません、また聞きたいことができたのですが、
ActiveRecordの定義ってどこにありましでしょうか?メソッドの一覧を見てみたいと思いまして。。
ご教示頂きたくm(_ _)m
0576nobodyさん2009/03/12(木) 00:22:00ID:???
http://api.rubyonrails.org/

とりあえず
ActiveRecord::Base
ActiveRecord::Associations::ClassMethods
あたりを見れば基本のメソッドはわかる。
05775072009/03/12(木) 00:28:17ID:JHPTnQN+
ありがとうございます。
すいませんActiveRecord そのものの定義はどのファイルに書いてあるんでしょうか?
grepしても分からないんです><
0578nobodyさん2009/03/12(木) 00:33:22ID:???
確認画面はセッション派。「戻る」対策で。
IEだと戻った時に、画面再読み込みみたいになっちゃうし、
入力画面にAjaxで選択するような項目があると、その際に消えてしまう。
なのでセッションに入れてる。
0579nobodyさん2009/03/12(木) 00:42:49ID:???
ActiveRecordそのものって何だ? モジュールだぞ。
05805072009/03/12(木) 00:52:05ID:JHPTnQN+
?

ActiveRecordっていうクラスがあるんじゃないんですか?

モジュールっていうことはActiveRecordっていうファイル名?
0581nobodyさん2009/03/12(木) 01:29:30ID:???
>>580
たぶん君が見たいファイルはこのへんにある
/opt/lib/ruby/gems/1.8/gems/activerecord-2.3.0/lib/active_record/base.rb

でも定義見てもたぶんわかりにくいよ
method_missingとかも使ってるしね

とりあえず >>576 で十分なので満足してくれ

ソース見るのはまだ早いと思われる
0582nobodyさん2009/03/12(木) 01:31:41ID:???
>>580
継承するとき ActiveRecordじゃなくてActiveRecord::Base を継承するだろ?
0583nobodyさん2009/03/12(木) 02:53:09ID:???
みんなPC使ってるのに、マクでは出来ない動かない見れないとか言い出すからウザがられる。
素直にみんなと同じPC使えよ。マカって典型的なKYだしな。協調性無い。
0584nobodyさん2009/03/12(木) 02:54:06ID:???
>>583
荒らし乙
0585nobodyさん2009/03/12(木) 06:15:59ID:???
>>584
荒らし乙
0586nobodyさん2009/03/12(木) 10:28:53ID:???
マカが嵐だけどな。PC限定にしようぜ。
0587nobodyさん2009/03/12(木) 11:26:09ID:???
>>580
ActiveRecordを読み下すには、まずActiveSupportでいろいろ拡張されてる
ModuleやClassのクラスメソッドを一通り読んでおくことをおすすめする。

Method chainとか、知らなきゃハマるよ。tags探しても_without_hogeなんてどこにもないし。
あと静的なコードだけ読むんじゃなくて、ruby-debugを活用して
実行時に実際にどこのコードを使っているのか追っかけるのもいいと思う。

単純にメソッドリストが見たいだけなら、rdocを作ってgem serverか、api.rubyonrails.orgへGO
0588nobodyさん2009/03/12(木) 12:53:29ID:???
>>586
え?MacもPCでしょ。
05895612009/03/12(木) 13:12:19ID:???
561
>>569-574
ありがとうございます。

フォームの項目なんて変化するものだし、
何十もフォームを作る場合はベタなんてありえないし、
部分テンプレは textarea で隠れる行とかあるしで、
573 氏のヘルパー路線で考えたいと思います。

ヘルパーにしても車輪の再発明の気がするので
既存にないものかと調べてもないし…。

SKIP, redmine, typo, fastladder みても確認画面ないし。

確認画面は鬼門なんですかねぇ。
0590nobodyさん2009/03/12(木) 14:35:32ID:OX3C3H1c
最近ネットワーク系の勉強を初めて、サンプルを元にRubyで
require 'net/http'
Net::HTTP.version_1_2
Net::HTTP.start('be.2ch.net', 80) {|http|
response = http.post('/test/p.php',"i=6811")
puts response.body
}
と書いて、BEプロフを見たいと思ったのですが、うまくいきません。
解説お願いします。
05915902009/03/12(木) 14:49:30ID:OX3C3H1c
すみません、焦ってスレチでした。
取り下げます
0592nobodyさん2009/03/16(月) 12:38:35ID:???
grails使ってみたけど、バグだらけでどうしようもないな…
05935072009/03/16(月) 20:29:13ID:a70xmYHv
レスありがとうございました!参考にさせていただきます。
0594nobodyさん2009/03/16(月) 22:22:45ID:???
いま仕事でJRuby使ってるんだけど、これなかなかすごいのな。
JavaのライブラリがRubyのクラスとして普通に使えてしまう。もうJavaいらないじゃんw

JRuby on RailsならアプリをWARで固めて一発デプロイできるし、ネイティブスレッド
なので、素のRailsより負荷に耐えられる。
GlassFishならホットデプロイも一瞬だし、コネクションプーリングも標準装備。

なんでわざわざJavaのVM上でRubyを動かさなきゃならんのだと思ってたが、触って
みて評価が一変した。
0595nobodyさん2009/03/16(月) 23:55:22ID:???
使ったことないのだが、Rubyを使う必然性はあるのか?
0596nobodyさん2009/03/17(火) 00:04:49ID:???
JRubyもJavaなんだから、Javaいらないというのはおかしい
0597nobodyさん2009/03/17(火) 08:24:59ID:???
速いと言われているJRubyだが、
Railsの性能で比較するとCRubyより遅いんだけどな。
0598nobodyさん2009/03/17(火) 09:35:28ID:???
jrubyは俺も驚いた。でもjruby railsはconsoleやrunnerの立ち上がりが遅かった。あと標準ライブラリも微妙に違う。YAMLとか。現時点ではJAVAにしか無いライブラリを使いたい時のグルーコード用ぐらいに思ってます。今後に期待。
0599nobodyさん2009/03/17(火) 10:06:19ID:???
>>595
Rubyで面倒なこと・Javaのほうが簡単or柔軟にできることの切り替えが容易
CRubyならたとえばCで拡張ライブラリ書いたり既存のを探したりしなければならないことが、Javaとの連携で即座に可能

速攻で書いて速攻で動かしてから実際の負荷とか考える、というRuby/Railsにぴったりだと言えばそうかもしれん
強力な実働用途に使ってる人はまだおらんだろう
0600nobodyさん2009/03/17(火) 10:10:59ID:???
検索条件など、Modelの属性ではない入力値のバリデーションってどう書くべきですか?
みなさんControllerにベタ書きしてるのかな?
0601nobodyさん2009/03/17(火) 17:06:36ID:???
新規に作る際、
$ rails xxx
したあと、毎回
config/database.yml の host を変更するのが面倒なのですが、
どこかに書いておくことで反映される方法はないでしょうか?

( Controller はあくまでも Controller だけにして、Model に関係なくても Model に書いているかなぁ >>600 )
0602nobodyさん2009/03/17(火) 17:27:26ID:???
sed -i 's/host: .*/host: hogefuga/' config/database.yml

でよくないっすか。

production のホストはコレで、development のホストはアレってことだと
いよいよawkの出番ですね! :)
06036012009/03/17(火) 17:45:15ID:???
>>602
やっぱそういうことになっちゃいますか。

Rails2.3 の Application Template に少し期待したのだけど、
どうも、そこまではしてくれないみたいなので。

development & test も変えたいので perl で書くことにします><
0604nobodyさん2009/03/17(火) 17:47:48ID:???
Javaの運用管理機能に比べれば、rubyは無いに等しいしなあ。
0605nobodyさん2009/03/17(火) 18:22:10ID:???
rails を仕事で使っている人いますか?
数カ月おきのバージョンアップに追随してますか?
0606nobodyさん2009/03/17(火) 21:43:28ID:???
サービス公開したらよほどの事がない限りバージョン固定。
0607nobodyさん2009/03/17(火) 22:24:40ID:???
仕事で使ってるシステムをほいほいバージョンアップするなんて聞いたことないぞ
0608nobodyさん2009/03/17(火) 22:47:19ID:???
まあ、そうだよな。
0609nobodyさん2009/03/17(火) 23:32:27ID:???
セキュリティ修正のマイナーバージョンアップだったら、テストの上で導入するかも。
rexmlのときは修正gem出たからそれ使ったけど。
0610nobodyさん2009/03/18(水) 01:28:13ID:???
なんかCapistranoの開発してた人が、いやんなってやめたらしいね。
■ このスレッドは過去ログ倉庫に格納されています