トップページ⇒php
993コメント316KB

【Ruby】Ruby on Rails Part3

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2007/02/06(火) 20:10:09ID:nOZh/PU9
Rubyのweb application frameworkである
Ruby on Railsに関するスレッドです。

<英語>
本家: http://www.rubyonrails.org
API: http://api.rubyonrails.com/
Documents&Tutorials: http://documentation.rubyonrails.com/

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


前スレ
【Agile】Ruby on rails相談所 part2【DRY】
http://pc10.2ch.net/test/read.cgi/php/1151254378/
0855nobodyさん2007/08/30(木) 17:04:19ID:???
railsでやるかどうかというか、
別にユーザからのリクエストありきでしかrailsが使えないわけじゃなく
コマンドラインからでもrails環境やARとAMだけ単体ロードとかできるし
DBに配信条件突っ込んどきゃいいじゃない
0856nobodyさん2007/08/30(木) 21:45:16ID:???
forkでもスレッドでもかまわないような気がするが、
Backgroundrbというのもあるな。
0857nobodyさん2007/08/30(木) 21:58:59ID:???
>>856
Web+DB 40号
0858nobodyさん2007/08/30(木) 22:02:33ID:???
あー、それそれ、それで見たのだった。
0859nobodyさん2007/08/30(木) 22:17:59ID:???
なんか、もう一回>>851を読んでみたら
最初っからBackgrounDRbとかWeb+DBの連載って
言わせようとしてたんじゃないか、中の人?なんてふと思った。けど>>854か。
自分じゃ使った事ないけど連載は参考になった。読むのお勧め。
0860nobodyさん2007/08/31(金) 01:06:36ID:???
gearmanという手も。
0861nobodyさん2007/08/31(金) 16:25:56ID:???
すみませんが、質問です。

作成中のある入力画面で、必須でないファイルアップロードがあるのですが、
アップロードが行われなかったとき(ユーザがファイル名を入力しなかったと
き)、サーバ側では受信したファイルの内容を確認しないようにしたいのです。

ということで、アップロードの有無の判別方法を教えていただけないでしょう
か?今のやり方は、受信したオブジェクトの型などを調べて、

     有    無
IE .... Tempfile StringIO
Firefox StringIO StringIO (ただしStringIO#string が""になる)
Opera  Tempfile ""(空文字列)

以上の挙動から、現在は、
if @picture.kind_of? Tempfile or (@picture.kind_of? StringIO and @picture.string != "")

としていますが、さすがにあまり綺麗でないと思います。
0862nobodyさん2007/08/31(金) 16:51:23ID:???
>856-860
トン
BackgrounDRbがそのままズバリですね。

>861
@picture,length を見たんじゃあかんの?
08638612007/08/31(金) 17:14:08ID:???
>>862
> @picture,length を見たんじゃあかんの?

かなりいいかもしれません。
@picture.length だと、不正アクセスで @picture に文字列がセットされた場
合もチェックを通ってしまいますが、それは後段で処理すれば何とかなりそう
です。

ちなみに今は、
if @picture.respond_to?(:original_filename) and @picture.original_filename != ""
というのを試していました。これも動作は正しいですが、長いですね。
0864nobodyさん2007/08/31(金) 17:51:37ID:???
>>850

そこでいわれている
「名言」の出所はどこなんだろう。

脳内か?
0865nobodyさん2007/08/31(金) 18:15:35ID:???
FUD にかまうやつはばかです。w
0866nobodyさん2007/09/02(日) 00:13:38ID:???
Rubyの犠牲者がまた一人

http://d.hatena.ne.jp/kiwanami/20070827#1188228305
[ruby]Railsについて思うこと 00:25
現在、炎上Rails案件の消火中。
寝る時間も、自分の時間も、何かを楽しく実験するような時間も無い。
いろいろなものを失って、これからも失い続ける。
もう、何もかも疲れた
0867nobodyさん2007/09/02(日) 00:43:15ID:???
確かに最近の煽り方は初心者でもできそうな勢いだものな。
俺も一人案件かできるパートナーと組んだとき意外は使いたいと思わん
0868nobodyさん2007/09/02(日) 02:05:39ID:???
まだまともなスキル持ったやつがいないんだろ
自分も他人のこと言えないけど
0869nobodyさん2007/09/02(日) 02:13:22ID:???
>>866
FUD乙。
コメントに主自身で

> Railsの何かが駄目だったとか、Railsの使い方を間違えたとかではなくて、
> Railsだからといってシステム開発全体の敷居が下がるわけではないですよということです。

っつー、至極当たり前のこと書いてあるじゃねーか。
0870nobodyさん2007/09/02(日) 12:05:23ID:???
Javaで勘違いしたままのやつが、そのままRubyに流れてるのかなw
0871nobodyさん2007/09/02(日) 15:24:54ID:???
どの案件にも当てはまる事で
Railsに限った事じゃないんじゃないかって
思っちゃうけどね
本番サーバーの問題以外は
0872nobodyさん2007/09/02(日) 20:58:53ID:???
Apache+mongrel(cluster)で良いんじゃないの?
0873nobodyさん2007/09/02(日) 21:30:39ID:???
それでいいんだけど、>>739の問題と、あと運用面かなあ
0874nobodyさん2007/09/02(日) 21:35:47ID:???
共用サーバ視野に入れるのは勘弁してよw
0875nobodyさん2007/09/04(火) 18:35:59ID:???
ちょっとした実験コードを書いていて、Valueという超テキトーな名前のモデルを造ったら、
マイグレーションでコケた。

-- create_table(:values)
rake aborted!
SQLite3::SQLException: near "values": syntax error:
CREATE TABLE values ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"created_at" datetime DEFAULT NULL, "updated_at" datetime DEFAULT NULL)

なんでかなー、と思ったら、valuesってSQLの予約語じゃん。
0876nobodyさん2007/09/04(火) 19:12:36ID:???
テーブル名に予約語使えない事もないんだけどな
activerecordで生成するSQLでは
ほぼ全て識別子はクォートされてるのに
schema_statements系のテーブル名のとこはクォートされてないな
なんでされてないんだろう
面倒な事にならないようあえてしてないんだろうか
0877nobodyさん2007/09/05(水) 00:33:25ID:???
rails pluginのgetTextなんだけど
test_model.rb
のクラス名(テーブル名)を日本語化しようとしてもidの指定の仕方が悪いのか
うまく日本語化できず困ってます。
test model
TestModel
とか・・・
poファイルの情報も少なくて行き詰っているんですが
ご存知の方助けてください

ちなみにカラム名はidを
TestModel | test row
とかで問題なく日本語化でき、クラスも_で区切っていないものは
正常に日本語かできてます。
0878nobodyさん2007/09/05(水) 15:23:55ID:???
どういうシチュエーションで困ってるのかな?
単にモデル名の日本語化というだけなら、うちの環境では"test model"でうまくいってるけど
0879nobodyさん2007/09/05(水) 17:39:02ID:???
poファイルのことなら、たぶんinfo gettextが一番詳しい
08808772007/09/05(水) 18:05:15ID:???
poファイルはこんな感じです。

#: app/models/test_model.rb:-
msgid "test model"
msgstr "テストモデル"

#: app/models/test_model.rb:-
msgid "TestModel|test name"
msgstr "テスト名"

カラム名は日本語化されますがモデル名がうまく日本語化されないんです。
バリデーションのエラーメッセージで表示する場合です。
0881nobodyさん2007/09/05(水) 18:22:01ID:???
このケースだとうちではうまくいってるけど。

<%= error_messages_for 'model_test' %>
0882nobodyさん2007/09/07(金) 01:07:12ID:???
http://www.fiveruns.com/products/rm/install

Mac用だけどMongrel ClusterやImageMagickまで入る
インストラーが出てる。
0883nobodyさん2007/09/07(金) 19:32:30ID:???
>>882
パスとかの構成はどんな感じでインストールされるの?
試そうと思って@example.comなアドレス入れたらメールに情報を送ったってorz
0884nobodyさん2007/09/07(金) 21:48:13ID:???
さあ・・・上書きされたら嫌なので試してない
0885nobodyさん2007/09/09(日) 15:15:40ID:???
railsってかrubyってプログラミング楽しむことばかりに目が行って
成果物を使う楽しみが無いよね
0886nobodyさん2007/09/09(日) 15:57:52ID:???
使う楽しみがあるものを作れてないからだな、自戒しよう
0887nobodyさん2007/09/12(水) 00:32:29ID:NdcxIT65
コントローラ間でredirect_toを使用した場合に
値を受け渡す良い方法はありますか?
0888nobodyさん2007/09/12(水) 09:21:30ID:???
sessionかflash
0889nobodyさん2007/09/13(木) 10:49:35ID:???
便乗で申し訳ありませんが、redirect_toした先でredirect_toしてると、
flashが反映されないようなので、もう一度設定してみると表示されるように
なったのですが、これはこういうものですか?
どこかに明記されてますでしょうか?

class AccountController < ApplicationController
#.....
def index
flash[:notice] = flash[:notice]
if User.count == 0
redirect_to(:action => 'signup')
elsif logged_in?
redirect_to(:controller => 'logs')
else
redirect_to(:action => 'login')
end
end
#.....

$ rails --version
Rails 1.2.3

Agile Web Development with Rails Second Editionも持っています。
0890nobodyさん2007/09/13(木) 12:01:30ID:???
>>889
反映されないも何も1回こっきりのメッセージ伝達のためのもんだろうflashは
0891nobodyさん2007/09/14(金) 11:05:51ID:VbOodNQ1
rails.elでcontrollerからviewにジャンプする方法はないのでしょうか?
0892nobodyさん2007/09/14(金) 23:50:41ID:???
対象メソッドにカーソル置いて C + c ↑
0893nobodyさん2007/09/15(土) 00:37:09ID:8+kowwgO
ログのローテーションについてですが、
Windows2003Sever上で動いているrailsのログをローテーションするにはどうすべきでしょう?
linuxならlogrotateらしいんですが。
DrbLogger?

apache/mongrelで動かしてるんですが、ログファイルってmongrelが掴んで
外からはファイルのリネームとかってできないような気がするんですけど。

win系のサーバを本番で使っちゃだめ?
0894nobodyさん2007/09/15(土) 00:43:00ID:???
Logger.newの引数でローテート指定するのじゃ駄目なの?
(複数インスタンスでやるとたまにシフトに失敗するが)
0895nobodyさん2007/09/15(土) 01:03:00ID:8+kowwgO
複数インスタンスというのがイマイチ理解が怪しくて。
それがLoggerオブジェクトのインスタンスと考えるとリクエスト毎にインスタンスが
生成されるわけだから駄目なのかなとか思ったりしてます。
間違ってますかね?
0896nobodyさん2007/09/15(土) 01:46:16ID:???
>>895
mongrel_clusterとかでバックエンドのrailsアプリを複数プロセス走らせ
てると、それぞれが1つのファイルをローテートしようとして、失敗する
ことがある、みたいな話。
インスタンスてのはここではアプリケーションプロセスのことだな。
0897nobodyさん2007/09/15(土) 11:02:49ID:???
>>892
ありがとうございます
0898nobodyさん2007/09/15(土) 23:30:12ID:???
3rdRail Trial for Windows
http://cc.codegear.com/Item/25010

3rdRail Trial for Mac OS X
http://cc.codegear.com/Item/25011

3rdRail Trial for Linux
http://cc.codegear.com/Item/25012
0899nobodyさん2007/09/15(土) 23:32:12ID:???
3rdRailて、第3軌道の意味とかけてるのか。
0900nobodyさん2007/09/15(土) 23:33:12ID:???
軌条だた。
0901nobodyさん2007/09/15(土) 23:40:33ID:TVo97AxG
>>894、896
なるほど。
それなら大丈夫そうです。
ありがとうございます。
0902nobodyさん2007/09/18(火) 12:10:58ID:7uftnMIF
> 3rdRail Trial for Mac OS X
> http://cc.codegear.com/Item/25011
今はまだComing Soonです。
0903nobodyさん2007/09/18(火) 12:17:26ID:???
CodeGear,Ruby on Rails対応統合開発環境「3rdRail」の販売を開始
http://itpro.nikkeibp.co.jp/article/NEWS/20070918/282146/
0904nobodyさん2007/09/18(火) 21:18:56ID:???
>>903
TAKEEE
0905nobodyさん2007/09/18(火) 21:59:05ID:???
安いじゃん。買おうかな
0906nobodyさん2007/09/19(水) 02:49:10ID:???
Ext pluginに一目惚れしたんですが、javascriptは使ったことないです。
この機会にと思っていろいろ調べてみたら、
手続き型みたいなオブジェクト指向っぽくってうまく飲み込めません。

javascript をガリガリ書くのではなく、利用するための知識を手に入れたいのですが、
おすすめの本やサイトはありませんか?
0907nobodyさん2007/09/19(水) 02:58:22ID:???
ActiveRecordに一目惚れしたんですが、SQLは使ったことないです。
この機会にと思っていろいろ調べてみたら、
手続き型みたいなオブジェクト指向っぽくってうまく飲み込めません。

SQLをガリガリ書くのではなく、利用するための知識を手に入れたいのですが、
おすすめの本やサイトはありませんか?

>スレチ
0908nobodyさん2007/09/20(木) 12:30:28ID:???
なんとなくbeta gemを入れて遊んでみた。(r7116相当)
初見で目に付いた変化。

・actionwebserviceがオプションになった。
・activeresourceに依存するようになった。
・componentsディレクトリがなくなった。
・config/environment.rbに書いていた初期化コードはconfig/initializers/*.rb
として任意の名前で置けるようになった。(inflectionsなんかもここへ移動)
・scaffoldジェネレータで作られるコードがRESTfulになった。
(scaffold_resouce が scaffold を乗っ取った?)
・ERbテンプレートファイルの拡張子が .html.erb になった。
・AR::Base#inspectが属性値のみになり、見やすくなった(と思う)。
User.find(1)
=> #<User id: 1, login: "Hoge", password: "$1$lhxzTjIM$7Og1d27kMIaItxfsXB3mca", created_at: "2007-09-19 22:14:48", updated_at: "2007-09-19 22:33:07", active: true>
・Migrationにsexy_migrationプラグイン風のメソッドが追加されている。
create_table... do |t|
t.integer :user_id
t.string :name
:
end
・Paginationはwill_paginateプラグインで。(従来のコードはclassic_paginationプラグインでカバー)
@articles = Article.paginate_by_topic_id(@topic.id, :page => params[:page])
or
@articles = @topic.articles.paginate(:page => params[:page])
find_xxの代わりにpaginate_xxメソッドを使う感じ。
<%= will_paginate @articles %>

さて、CHANGELOGを熟読するか。

0909nobodyさん2007/09/20(木) 14:35:22ID:???
>>908
乙です。
けっこうかわってんなー・・・
0910nobodyさん2007/09/20(木) 14:45:31ID:???
r7493相当のも出てるわね。
0911nobodyさん2007/09/20(木) 16:00:11ID:???
じゃぁおれはそろそろJRubyで動かしてみるかな。
JR on railsっていうと旧国鉄みたいだな。
0912nobodyさん2007/09/24(月) 21:00:06ID:HMQ03/cj
RoR初心者どころか全く何も知らない人です。
これまでのRoRは、低速だったとPerlもRubyも使って現役バリバリな人が言ってました。
これは詳しく言うとどういうことなんですか。
ちなみに、その人はもういないので聞けません。

自分で調べたところ、
「Ruby 1.9は1.8より平均5倍速い」、YARV笹田氏 − @IT
http://www.atmarkit.co.jp/news/200709/07/yarv.html
という記事を見つけました。

これを読んで「へー、Rubyってどんどんすごくなるんだね」と言いたくなりますが、
そうではなくて、「これまでが遅かっただけだ」なんてことなんすかね?

どう思います?
0913nobodyさん2007/09/24(月) 21:36:21ID:???
sedはフィルタだった。awkは何でも出来た。
Perlは糊だった。JAVAはOSだった。PHPはお手軽だった。
RubyはPerlだったがJAVAになろうとしている。

便利なナイフは最終的に核爆弾になろうとして本末転倒と化す。
09149122007/09/24(月) 21:56:24ID:HMQ03/cj
>>913
えっと、ありがとうございます。
で、結局「Rubyが遅かった」というのはどういうことですか?

これまでは、RoRは高速に制作できると聞いていたので、
"Ruby is slow"
の声を聞いてから気になって仕方ありません。
これは釣りとか荒らしではなく、実話です。
知り合いの知り合いのコーダーが言ってました。

そこで、個人的な推論によると、
「制作は高速だが、動作は遅い」
という意味なのかな、いやそうとしか考えられんだろ、
と判断しました。

だから、この推論は正しいのか確かめたく質問させていただきました。
0915nobodyさん2007/09/24(月) 22:22:03ID:???
その遅さを現在のハードウェアの発達でカバーするのがRuby流
09168392007/09/24(月) 22:26:24ID:OQ2+NhNm
rubyの実行速度は遅い。
railsでのプロジェクトの制作は速い。
おk?
09179122007/09/24(月) 22:39:25ID:HMQ03/cj
>>915 >>916

おkです。
悩んでいたので、助かりました。

それでも速度は改善のきざしを見せているようですね。
ものすごい速さでコードベースも蓄積されているし、
今後は日本でもWeb系の案件はRubyが主流になっていくんでしょうか?

ぜんぜん関係ないですが、Erlangみたいな関数型が幅をきかせるという説もありますね。
ある技術者がさも自分が未来を見てきたかのように、これからは関数型だ、と言ってました。
それに加えて、C#も関数型機能に対応したようです。

関数型言語由来の新機能 (C# によるプログラミング入門)
http://ufcpp.net/study/csharp/sp3_fanctional.html
C# 3.0 の新機能 (C# によるプログラミング入門)
http://ufcpp.net/study/csharp/ap_ver3.html

Rubyでは関数型に対応する予定はあるのでしょうか?
参考までに質問させてください。

繰り返しますが、釣りではなくて、当方何も知らないので、
いくつかの言語を比較検討しようと考えている所存です。
0918nobodyさん2007/09/24(月) 22:51:43ID:???
3ヶ月前関数型になったけどなんかめんどいってことで元に戻ったよ
0919nobodyさん2007/09/24(月) 23:05:22ID:HMQ03/cj
>>918
そうなのですか。
自分なりに「Ruby 関数型」などでググってみたのですが、
関数型を取り入れるとかまだ取り入れてないだとか、そこらへんの記述がどうも要領を得なくて
結局どうなの?と思ったんです。

関数型は便利で、怠惰な人こそ関数型を、という人もいますが、
その代償しての少しばかりの面倒さも嫌うんですね。
それはRubyの哲学ですかね。

09209132007/09/24(月) 23:07:10ID:???
そうやって目的(実現可能性)から乖離するわけで。
0921nobodyさん2007/09/24(月) 23:47:22ID:???
人伝の情報や上辺だけの情報だけで
言語の良し悪しや物事を簡単に判断すんなよ
本当に何も知らないんだったらその比較しようとする言語を
片っ端から全部自分でちょっとずつ使って見りゃいいだろうが
自分で使う気もなく誰かに使わせるために聞いてるなら即刻帰れ

関数型関数型っていってるけど
あんた関数型言語の何が良くて何が悪いか
本当に理解した上で選択しようとしてんのか?
rubyはlisp大好き人間が作った言語だよ参考までに
0922nobodyさん2007/09/24(月) 23:48:39ID:HMQ03/cj
>>920
はあそうなのですか。

個人的にはRubyには将来性が満載だと考えているのですが、貴方は否定的なのですね。
私は、Rubyの制作速度のおかげでコードベースがすごい速度で蓄積されており、
ノウハウやコーディングスタイルも技術者間で共有されてきているのが非常にすばらしいと思っています。

もちろん、私が調査した範囲で下した判断ですが。

いかがお考えになりますか?
0923nobodyさん2007/09/24(月) 23:55:21ID:HMQ03/cj
>>921
ちょっとオフザケが過ぎたようですみませんね。
軽々しい発言があったことを反省し、以降慎みたいと思います。

ちょっとずつ使っているかと問われれば、使っていないのですが、
でも使う気ではいます。
今は、c,c++,javascript,perl,java,rubyの学習をやっていますが、
関数型までは手を出せない状態です。

lisp大好き人間なのですか。それはいいことを聞きました。
本当に理解したうえで判断したいです。
うわっつらの教条主義や流行や伝聞に流されて、痛い目を見たくはありません。
流行に乗って群れて楽しもうとしているのではなく、
本当に何が正しいのかを自分の目で見極めたいと考えています。
私は真剣です。
そこで、先輩方の意見もまた1つの参考にと考えています。
意見には正しいものもそうでないものもあるかもしれませんが、
私としましては、それらは真実を知るためのきっかけに過ぎぬと考えます。
0924nobodyさん2007/09/25(火) 00:01:31ID:OOv8Weab
>自分で使う気もなく誰かに使わせるために聞いてるなら即刻帰れ

あっ、私はしがない学生です。人を使うだなんてそんな。
09259132007/09/25(火) 00:09:18ID:???
表現がネガティブだったのは事実。特に否定はして無いよ。

WebObjectsを極めればRoRやJBOSSがオモチャだと気付くだろうけどね。
WOは良くも悪くもJAVAで書かれてるし、RoRよりマシ。しかし、これはWebAPに限定した話題。

IDEの話題はまた別ね。XcodeとEclipse、RoRをCLIで利用するのは同列で語っても意味が無い。

フレームワークの話題と処理言語の話題を同じ土俵で語るから
答える側が混乱する典型じゃね?
RailsがPHPやPerlで動いたら、とか、考えたこと無いの?
09269132007/09/25(火) 00:19:48ID:???
追伸。
目的と手段は分けて考えた方が良い。

命題として、「iTunes Music Store、または同等のシステムを構築する」という場合、
今のRailsで構築しようと考えるヤツは居ないだろ?
もっと小規模でイージーなものなら充分かもしれないが、ケースバイケースだよ。

制作(プロジェクトの分析、設計、開発、運用、と勝手に定義するけど)全てを考え、
マクロ視点で見た場合、Railsはまだ未熟。
しかし、JAVA最強、WO最強というわけでもない。

枯れた技術と実績を、成長過程の品と比較しても仕方ないと思うよ。
0927nobodyさん2007/09/25(火) 00:47:27ID:???
>>925
PHPのはあるね、cakephpとかいうのがRoRまんま。

cakephpで作られた本番稼動してる奴を
ざっと仕事で見たんだけど、ここまでまんまなら
最初からRubyでRoRでいいじゃんってのが感想。

レンサバとかでRubyが動かないとか、
Rubyわかる奴が居ないとか
そういう事情がある場合限定だなあ。

そう思わせるだけの魅力はあるよ、Rubyには。
流行だから、とかいう理由も含めて。
0928nobodyさん2007/09/25(火) 03:24:44ID:E3zFeaTC
Ruby on Railsは万能薬ではない
http://slashdot.jp/articles/07/09/23/2357202.shtml

RubyからPHPへ!
0929nobodyさん2007/09/25(火) 03:48:10ID:???
>>928
それの元記事の"#6 - I LOVE SQL"のところが違和感感じるんだがな。
俺のRailsアプリ、SQLコテコテに書きまくってるよw
0930nobodyさん2007/09/25(火) 04:19:03ID:???
railsライクなphpフレームワークも一緒なのかな
0931nobodyさん2007/09/25(火) 13:01:46ID:???
>>927
cakePHP使ったことないでしょ?
完成度はRailsの足元にも及ばないよ。
0932nobodyさん2007/09/25(火) 13:51:13ID:???
>>931
うん、ソースを見ただけ。
それと公式サイトを見たんだけど
まんまRailsじゃんって思った。

完成度って、具体的にどんなところ?
0933nobodyさん2007/09/25(火) 13:51:55ID:???
あ、ソースってcakephpのじゃなくて、
本番稼働中のアプリのソースです。
0934nobodyさん2007/09/25(火) 15:13:55ID:???
>>931じゃないけど、俺もphpからrubyにスイッチしたクチだけど
cakeはO/RマッパもAR程融通利かないし作りは結構dirtyだし
cake自身のだめな部分もあるけど、それよかphpのFWがだめというよりも
rubyの純粋なOOとかブロック(クロージャ)とかオープンクラスとか
そういうのに慣れてくるとやっぱphpの言語としての表現力が
rubyと比べて弱いのでphpのFW使う以上
phpで書かないといけないというののが辛くなる

同様にrailsもrailsが素晴らしい部分もいっぱいあるけど、rubyありきかなと
頭の中にあるものをサクっとコンパクトなコードに収めやすいというか
rubyで書きたいというのがまずあって、
じゃあFWはrailsがあるからrailsを使う、という感じ
0935nobodyさん2007/09/25(火) 17:32:21ID:???
確かに慣れてくると、RailsというよりRubyの生産性を実感するね
0936nobodyさん2007/09/25(火) 17:37:56ID:???
作りがダーティかどうか、と言う視点なら、ActiveRecordもだいぶ汚いと思うが...
なぜあれでうまく動くのかちょっと不思議なくらい。

リフレクション使いまくりで実行されているコードがどこにあるか判然としないとか、
規約決め打ちで、それ以外の使いかたを想定していない場合もあるとか、
まぁそういうところ。

ただ、まぁリフレクション乱発や規約の決め打ちがActiveRecordの強力さの理由の一つ
のような気もするし、むずかしいところ。
0937nobodyさん2007/09/25(火) 18:40:38ID:???
まあ確かにassociationsの中とか読む気失せるw
リフレクションがどれくらいパフォーマンスに影響与えているのかは気になる

あとこれはちょっと別の話になるけど、最近よく思うのが
大規模サービスのスケーラビリティについてのプレゼンテーションで
「JOINしない」「アプリ側でJOINする」っていう概要の話をよく見かける事が多い

データが多くなればなる程JOINのコストが上がっていくって事だと思うんだけど
どこまでJOINするしないっていう議論はまあ別として
スケールしていく事を想定して作るならassociations関連をあまり使わずに
(無理にJOINして1クエリに収めようとせず)シンプルにクエリを分割して
アプリ側でごにょごにょする傾向で作っていった方が実はスケールしやすいんだろうか?

associationsが簡単にリレーションのクエリを吐いてくれるのはいいけど、
eager loadingやらで多くのテーブルを多段にデータを引っ張ろうとして
バンバンJOINしまくっていくのはあまり良くないのだろうかとか
ま、そんな大規模になるようなサービスは作ってないけどw
0938nobodyさん2007/09/25(火) 20:26:45ID:???
SQL上で効率よくJOINするのは疲れるんだよね。

単純にJOINするだけなら簡単なんだけど、
ウェブでそれを見る場合、画面に見えているデータは数10件程度でしょ?
じゃあJOINする前に絞り込めばいいじゃんってことなんだけど、
そうするとサブクエリーになってしまう。それがいくつも重なるとね。

数10件程度ならSQL数十件発行(INを使えば減らスコともできる)してもたいして変わらない。
(主キーやそれに相当するインデックスされた情報を知っていることが前提)

全データの統計を取るとかバッチ的で実行回数は少ないがその際のデータの
アクセス量が多い場合はJOINの方がいいかもしれないけど、ウェブアプリだと
クライアントから要求されて返すデータってのは少ない。
そして色んなサービスが組み合わさると取得するデータが複雑になる。
(つまりJOINするテーブルが沢山)

こうなるととてもJOINで効率よく検索するってのはやってられなくなる。

と大規模なサービスを作ったことがない人間がえらそうに言うw
0939ビル・ジョブス2007/09/25(火) 20:56:59ID:nT7AmTiD
scaffoldって排他制御とか複数からのアクセスに対応してないけどこれがあるのとないのじゃやっぱり違うよな・・
お勉強にもなるし><
ちなみにviewクラスのインスタンスってlink_toとかactionのたびにnewされるんだよね。
でもページを表示中はそのクラス変数にアクセスできるからparams[]でメソッドに渡しredirect_toでまたページに戻すのが一般的かな?
まさか$xxxやsessionってわけにもいかないしね。
ただform_tagだけはちょっと変な挙動を示して、action=>’xxx’の前に書かないとパラメータ付きURLを生成してくれないんですよ。
これには参りました。
url
0940ビル・ジョブス2007/09/25(火) 21:05:07ID:???
X ちなみにviewクラスの
○ ちなみにcontrollerクラス
0941nobodyさん2007/09/26(水) 16:35:26ID:???
>939
formでパラメータを渡したいならhiddenを使えばいいじゃない
0942nobodyさん2007/09/26(水) 20:14:00ID:???
>>939
cokkie
0943nobodyさん2007/09/26(水) 22:35:15ID:???
class ApplicationController < ActionController::Base
helper :all
protect_from_forgery
end

何かと思ったら、CSRF対策(フォームに埋め込んだ情報を使うやつ)が
標準で行えるようになったようです。(r7639 gem)
0944nobodyさん2007/09/26(水) 22:49:09ID:???
そのリビジョンって本家にあるリポジトリとは別のもの?
ちょっと実装を見てみたいんだけど
0945nobodyさん2007/09/27(木) 01:35:00ID:???
gem install -s http://gems.rubyonrails.com -y rails
で入れた物です。

TRACだとこれですね。
http://dev.rubyonrails.org/browser/trunk/actionpack/lib/action_controller/request_forgery_protection.rb
0946nobodyさん2007/09/28(金) 00:22:48ID:???
scaffold
【建】足場(を設ける); 絞首[断頭]台; (the 〜)死刑.
0947nobodyさん2007/09/28(金) 00:32:21ID:???
なぜか、killやabort(中絶という意味もある)というシステムコールを
改名したクリスチャン向けUNIXというネタっぽい話をかつて目にした
のを思い出した。
0948nobodyさん2007/09/28(金) 01:21:02ID:yiqtXA9i
CakePHPで充分じゃん。なんでわざわざRubyに必死になるのかわからん。
Rubyもしばらく使ってみてたけど、そんなに大それたほど優秀じゃないなと判断。
趣味レベルで開発してるのならどちらでも関係ないのだろうけど、プロとして
業務で使う道具として選ぶのならWebprogはPHPにリソースを集中させて自分達の
ノウハウを蓄積していく方が結果的には効率が良いと思ったよ。
今ではCakePHPみたいにRoRと比較しても使いやすいフレームワークも出てきてるしね。
CakePHPは1.2系が早くstableになってくれると、とても嬉しい。
0949nobodyさん2007/09/28(金) 01:28:34ID:???
PHPがスレチなのはいいとして、
処理言語としてのPHPのEOLが短すぎて、
フレームワーク以前の問題。

CakeもZendも優秀だけど、PHPがクソ。
0950nobodyさん2007/09/28(金) 01:35:25ID:???
宣伝お疲れ様
0951nobodyさん2007/09/28(金) 04:49:07ID:???
両方使った上でPHPのほうがいいってんなら良いと思うよ。
背伸びしないことも大事だ。
自分にあったレベルのツール使わないとね
0952nobodyさん2007/09/28(金) 15:05:26ID:???
自分も会社の利用言語(に限らずアーキテクチャ全般)を決める立場だけど、
「今」で言えば間違いなくPHPだと思う。

ただ、昔、Perlがメインで「PHP?趣味の言語だろ?」という状態だった時に
PHPのノウハウを個人で貯めていたおかげで、今PHPでアドバンテージを出せてる
かなーと思っているので、さらに先を見た時にRuby(RoR)のノウハウ貯めておく
のは良いと判断してます。

(ただまあ単純にRuby(RoR)は書いてて楽しい、というのもあるけど。)
0953nobodyさん2007/09/28(金) 15:15:53ID:???
PHPがどのような利点を持ってるか具体的に書いてみなよ?
09549522007/09/28(金) 15:46:43ID:???
自分宛?

PHPの利点は

(1)エンジニアの数
(2)Apacheとの連携の容易さ
(3)インストールベース

ってとこだろうね。

自分的には(2)がもうちょっとなんとかならんかなーと思ってます。
レス数が950を超えています。1000を超えると書き込みができなくなります。