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

【Agile】Ruby on rails相談所 part2【DRY】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/06/26(月) 01:52:58ID:???
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/

ActiveRecordの記事(データベースの操作):
http://jp.rubyist.net/magazine/?0004-RLR
http://jp.rubyist.net/magazine/?0006-RubyOnRails
0422nobodyさん2006/09/14(木) 15:16:43ID:???
ブックマークジェネレータってなんじゃらほい
0423nobodyさん2006/09/14(木) 16:16:30ID:???
だってブックマーク作ってはいおわりって記事ばっかじゃん。
0424nobodyさん2006/09/14(木) 16:44:13ID:???
あはは
0425nobodyさん2006/09/14(木) 17:17:46ID:???
質問です。
Ruby on Railsを使ってSNSを作れますか?
http://pc8.2ch.net/test/read.cgi/php/1158167579/l50
0426nobodyさん2006/09/14(木) 20:19:50ID:???
それはご飯を使っておにぎりを作れますかって程度の質問だ
0427nobodyさん2006/09/15(金) 00:09:44ID:???
scaffoldだと、アクションとして list, show, new, create, edit, update, destroy が自動生成されますが、
new と create とを分ける、あるいは edit と update とを分けるという方法の利点は何でしょうか。
自分としては、new と create は同じアクションにして、GETかPOSTかで分岐する(GETならnewの動作、POSTならcreateの動作)という方法しか知らなかったので、
scaffoldが生成したコードをみてこういう方法があることを初めて知りました。
それで、それぞれの方法にどのような利点や欠点があるかを知りたいと思うのですが、どなたか簡単に解説してくれませんか。
自分で考えたぶんでは、scaffoldのやり方だとcreateに失敗したときnewにリダイレクトする必要があるのでちょっと複雑かなと思いました。それ以上はわかりません。
詳しい人教えてください。

04284192006/09/15(金) 00:17:15ID:???
うおーだれか>>419たすけてください。
0429nobodyさん2006/09/15(金) 04:11:32ID:???
>>419
Railsによるアジャイル(ry にいろいろ書いてある。
かなり面倒ということはわかった(つまりその設定だけじゃダメってこと)。
おれなら素直にid使って、
validates_uniqueness_of :code
04304192006/09/15(金) 05:23:51ID:???
>>429
>Railsによるアジャイル(ry にいろいろ書いてある。
書いてあった?set_primary_keyのことしか書いてなかったけど。
どこに書いてあったかページ番号教えてください。
>おれなら素直にid使って
レガシーなテーブルだからそんなことできません。残念!
0431nobodyさん2006/09/15(金) 07:28:07ID:???
>>430
持ってるなら全部読めよ。仕事なんだろ?
0432nobodyさん2006/09/15(金) 16:19:26ID:???
ご飯さえあればすべての料理ができるから、rubyですべてのことができるよ。
料理人を雇うようにPGを雇う必要があるけどな。
04334192006/09/16(土) 05:43:03ID:???
>>431
見つからないから聞いてるんだけど。ほんとにあるんならページ番号ぐらいわかるよね。
0434nobodyさん2006/09/16(土) 08:45:04ID:???
>>419
なに?このくずは
0435nobodyさん2006/09/16(土) 11:56:16ID:???
見つけられないほどスキルが低いなら相性悪いと言うか無理なんじゃね?
perlでもphpでも好きなの使った方がいいよ。

無知を自慢するその態度は、もしかしてマカ?
0436nobodyさん2006/09/16(土) 18:12:07ID:???
DHHもマカなんだが
0437nobodyさん2006/09/16(土) 23:05:54ID:???
またこの流れか
0438nobodyさん2006/09/16(土) 23:07:41ID:???
DRYじゃないわな
0439nobodyさん2006/09/17(日) 00:17:36ID:???
マカというかバカがいるな
04404192006/09/17(日) 01:30:21ID:???
>>429を読むに、かなり面倒だけどできるってことだよね?
set_primary_keyの設定だけじゃだめだけど、ごちゃごちゃ設定したらできるということでいいんだよね。

本読み直したけど、やっぱそれらしい記述ないよ。ほんとに書いてあるんだよね?
これで「実はできません」とかだったら泣く。
0441nobodyさん2006/09/17(日) 03:10:58ID:???
215ページじゃないの?
0442nobodyさん2006/09/17(日) 16:17:37ID:???
Brails - Social Bookmark Manager by Ruby on Rails
http://llamerada.ty.land.to/brails.html

Railsのデスクトップアプリ
0443nobodyさん2006/09/17(日) 16:23:44ID:???
マカは泣けば良いと思うよ。
みんなXP使ってるから困らない。

日本語訳サイトって誰か作ってないの?
ブックマーク程度ではあんまり便利と呼べるかどうか微妙。
0444nobodyさん2006/09/17(日) 16:53:25ID:???
>>443
マカが嫌ならRoR使うなよ。お前の大嫌いなマカが作ってるんだぞ。
XPだけ使ってる奴さがせ。
04454192006/09/18(月) 11:18:30ID:???
>>441
どうもありがとう。そのページは読んでるけど、set_primary_keyのことしか書いてなくて、ほかにどんな設定が必要かは書いていないです。
自分でもよく探したんですけど、プライマリキーの名前を変えることについて書いてあるのはそのページぐらいしかないですよね。
しかし>>429は「その設定だけじゃだめだ」と言い切っているので、ほかに必要な設定があるはずで、それがどっかのページに書かれているのも知っているんだろうけど、教えてくれないんだよね。

>>419のエラーにあるように、「キー名+'_before_type_cast'」というメソッドがないというエラーなので、これを自分で定義すればいいんじゃないかと思うんですけど、
どう定義すればいいのかがわからないし、そもそもこれはActiveRecordが動的に定義するメソッドだから自分で定義していいのかどうかもわからない。
今は
def code_before_type_cast
 read_attribute(:code)
end
としてるんですけど、この設定でいいのかどうか。
で、きっといろんなことを知っている429ならこのへんの設定が書かれてるページを知ってるはずなんだけど、教えてくれないんだろうな。
0446nobodyさん2006/09/18(月) 11:58:00ID:???
>>445
おいおい。
そんなんで、教えてもらえる事情が無い。

MLに投げた方が早いんじゃね?
04474292006/09/18(月) 13:45:40ID:???
>>445
そのページにあるように、「主キーが一意な値になるように設定」してますか?
そのあたりをよく読めば、scaffoldそのままじゃ動かないことはわかるはず。
ほかに必要な設定が具体的にどこかに説明されてるとは言ってない。
0448nobodyさん2006/09/18(月) 15:33:11ID:???
なんかいろいろ調べたけど、問題点は2つあるみたいです。
1. プライマリキーがid以外の場合は set_primary_key 'xxx' 以外に xxx_before_type_cast の定義が必要
2. プライマリキーはauto_incrementまたはserialのように自動設定されなければならない

>>419だとプライマリキーの名前がcodeであり、かつauto_incrementがないので、両方にひっかかってました。名前だけの問題だと思ってたけどそうじゃなさそうです。
今のテーブルだと、(いいか悪いかは別にして)プライマリキーの値はユーザが入力することになってるんですけど、ActiveRecordではそういうのは想定してないっぽい。

試行錯誤して、モデルにいろいろ追加していちおう動くようにはなったんですけど、正しい保証はまったくないです。
class Account < ActiveRecord::Base
 ## 1. プライマリキーをidではない名前にする
 set_primary_key 'code'
 def code_before_type_cast
  read_attribute(:code) # or code
 end
 ## 2. ユーザ入力値をプライマリキー値に設定する
 def initialize(attributes=nil)
  super
  self.id = attributes[:code] if attributes
 end
# def before_create
#  self.id = code
# end
end
04494192006/09/18(月) 15:34:46ID:???
>>429
主キーが一意になっているかどうかではなくて、主キーの値が自動的に設定されるかどうかが大事みたいです。
主キーが一意でも、ユーザが入力した値を使うようなことは想定してなさそうでした。
0450nobodyさん2006/09/18(月) 15:40:55ID:???
datetime の入力がセレクタってのは何とかならんかね。
Ajax でカレンダーと時計が出てきて、クリックするだけで入力できるようなのが欲しいのー。
0451nobodyさん2006/09/18(月) 16:12:33ID:???
http://datebocks.inimit.com/
0452nobodyさん2006/09/18(月) 16:21:01ID:CAbpHFIG
Rails使わないとWebページつくれないおまいらはテラバカス
0453nobodyさん2006/09/18(月) 18:21:11ID:???
Webページwww
0454nobodyさん2006/09/18(月) 18:29:20ID:???
ホームページビルダーで1000ページ分をひとつひとつHTML生成できる我慢強い漏れは勝ち組だな(w

オブジェクト指向に不慣れだと、どんなメゾットを記述すれば良いかがわかりにくいかもな。
いろんなソース見て弄りながら覚えるしか無いけど。
0455nobodyさん2006/09/18(月) 20:10:55ID:???
>>454
APIリファレンス読め。
04564102006/09/19(火) 02:50:07ID:f4BK69oY
遅くなりましたが 420 さん、どうもありがとうございます。

>>420
> app/controllers/foo_controller.rb をみると、以下のようなコードがあるはず。
>
> # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
> verify :method => :post, :only => [ :destroy, :create, :update ],
> :redirect_to => { :action => :list }

rails-1.1.6/lib/rails_generator/generators/components/scaffold/templates/controller.rb ですかね、なるほど。1年半以上前のチュートリアルを鵜呑みにしてはいかんわけですなあ。
0457nobodyさん2006/09/19(火) 05:39:43ID:???
>>456
verifyに失敗したら :action=>'list' にリダイレクトするんじゃなくて render '/403.html' するべきのようなきがする。
scaffoldに文句つけても仕方ないけど。
0458nobodyさん2006/09/19(火) 15:16:24ID:???
Controllerってシングルインスタンスなの?

データベースの状況と照らし合わせながらちょっと複雑な処理をする部分があって、
当然スレッドセーフにする必要があるだろうからControllerに@mutexを作って
クリティカルセクションを実行したいのだけれど、呼出し毎に新しいインスタンスを作ったりするのかな?

仮に今はしていないとしても、将来的にそうなる可能性が無いわけではないだろうし、
こういう場合ってどういう風に実装するのが正しいのでしょうか?
0459nobodyさん2006/09/20(水) 00:12:32ID:???
ruby関係の情報って古いことがよくある。
鵜呑みにすると嵌ることが多い。リリースエンジニアリングが弱いよな。
0460nobodyさん2006/09/20(水) 01:58:57ID:???
>>458
DBの排他制御使うとか
オンメモリのテーブルにロック用オブジェクト置くとか
よくわからないけど Singleton とか知ったかしてみるテスト
0461nobodyさん2006/09/20(水) 07:19:12ID:???
自宅サーバーでrailsうごかしてるんですが、外からのアクセスが時々かなり遅くなります。
内部からでは問題ないスピードです。
遅いときでも別ポートで立ち上げているapache2は外部からでもすぐつながる状況です。
Fedora5とmongrelですが、何から調べていいのやら、何を勉強すればいいのか、若しくは回答をご教授ください。
0462nobodyさん2006/09/20(水) 09:23:14ID:???
そもそも裏でrubyがごりごり動いてるから速度はダメポ。
CPU3GHz超でメモリ詰めるだけ積んで、DBはディスアクセスせずにオンメモリで検索できてる?
04634612006/09/20(水) 13:50:31ID:???
CPUは1.4GHzメモリは256MBです。(笑)
DBのオンメモリは勉強してみます。
内部からのアクセスは速度的に全然問題ないので、原因が良くわかりません。
vsftpdへの外部からのアクセスも、かなり遅いです。ポート113は開いています。

今私の中では原因は光プレミアムです。
0464nobodyさん2006/09/20(水) 15:11:31ID:???
「時々かなり遅くなります」ってことは、
普段は Rails アプリもサクサク動いてるの?
0465nobodyさん2006/09/20(水) 19:13:00ID:???
>>458
>Controllerってシングルインスタンスなの?
ちがうんじゃね?
Controllerのインスタンス変数にバリバリ代入しているのに、シングルトンはありえん。
0466nobodyさん2006/09/20(水) 19:55:05ID:???
20テーブル30画面程度、
DBはポスグレでマスタ系1000レコード、トランザクション系20000レコード
(pg_dump取ると20MBぐらい)程度、Ajaxも適度に使用したWebアプリが
PentiumIII-600MHz/256MBで健気に動いてます。

Rails,なかなかたいしたものだと思います。
0467nobodyさん2006/09/20(水) 20:56:47ID:???
>>465
そりゃそうだよな。
じゃMutex使って同期を取ろうと思ったら、グローバル変数しかないのか。
キタネェ
0468nobodyさん2006/09/20(水) 21:02:43ID:???
>>467
クラス変数はダメなん?
0469nobodyさん2006/09/20(水) 22:31:46ID:???
fcgi とか複数プロセス上げてたらシングルトンもグローバル変数もダメじゃない?
0470nobodyさん2006/09/21(木) 01:14:30ID:???
ポート113とか逝ってるってことはファイヤーウォールが入ってるからチェックしてる分だけ遅くなると思う。
ファイヤウォール切ったら速くならない?
プレミアムってことは1Gbpsだろうけど、ちゃんと1Gbps処理できるルータ使ってる?

256MBじゃOSが喰って、SQL問い合わせの度にディスクアクセス発生してる悪寒。
0471nobodyさん2006/09/21(木) 10:32:15ID:???
>>464
>>470
サーバーはCTUに直につないでいます。
NTT西日本のCTUにルーター機能は載ってないです。

防火壁は切っているはずですが、もう一回チェックしてみます。

Railsプログラミングは簡単で楽しいのに、
サーバーの設定がドキュメント無さ杉でつらいっす。
0472nobodyさん2006/09/21(木) 20:51:14ID:???
>>471
探し方が悪いだけ。
それと死にたくなければfwは切るな。
0473nobodyさん2006/09/21(木) 22:11:07ID:???
>>468
それよりRailsでMutexとか使って同期するようなアプリを書いても大丈夫なのかな
0474nobodyさん2006/09/21(木) 22:51:19ID:???
>>466
apache?っすか?気になるす

>>471
firewallは切ったら死ぬw
0475nobodyさん2006/09/21(木) 23:25:16ID:???
>>469
fcgiじゃなくてもapacheだったらまちがいなく複数プロセスだからだめだな。クラス変数とかじゃぜんぜんだめ。
つーか、webアプリで何の同期をとりたいのかわからんけど、データベース使うかファイルロックつかうしかないんじゃね?
0476nobodyさん2006/09/21(木) 23:45:28ID:???
クリティカルセクションのトランザクション処理するプロセス一つ立てて DRb でやりとりとか。
0477nobodyさん2006/09/22(金) 19:09:31ID:???
そこでJavaでEJBですよ。
0478nobodyさん2006/09/23(土) 01:25:13ID:???
サーバーの設定がよくわからん。ぜんぜんアジャイルじゃなくなってきた。
0479nobodyさん2006/09/23(土) 01:35:52ID:???
>>476
トランザクション処理って…w
トランザクションの意味わかってる?
0480nobodyさん2006/09/23(土) 01:41:02ID:???
クリティカルセクションの部分のトランザクション処理するプロセス立てるセットアップを設定する方法がわかりません。
0481nobodyさん2006/09/23(土) 02:00:19ID:jpZIq2bo
実践Rudy on Rails Webプログラミング入門―無駄なく迅速な開発環境
http://www.amazon.co.jp/gp/product/4881665413/

この本買った人いますか?
近くで見かけないのですが、内容どんな感じでしょう?
0482nobodyさん2006/09/23(土) 05:00:26ID:???
入門本はもういいだろ
0483nobodyさん2006/09/23(土) 17:14:48ID:???
>>475
rinda はどうかな。
0484nobodyさん2006/09/25(月) 15:39:32ID:a1MmEpeK
初歩的な質問で申し訳ないのですが
学生時代BASIC(ビジュアルじゃない方)を授業で習った程度の私が
これを勉強しようと思っています。
Rorを学ぶ前にまずRubyを学んだ方がいいのでしょうか
それとも直接これを学んでも問題はないでしょうか?

後、レンタルサーバーの対応状況があまりよくないとのことですが
Rorで作ったプログラムをRubyに変換(?)して
Rubyに対応しているサーバーで動かすという風の噂を聞いたのですが本当なのでしょうか?
0485nobodyさん2006/09/25(月) 17:25:26ID:???
>>484 Rubyをやらないと無理です。
0486nobodyさん2006/09/25(月) 17:54:09ID:???
Ruby 初心者向けの RoR 入門書もあるからそういうのでやれば良いんじゃないっすか?
0487nobodyさん2006/09/25(月) 20:37:57ID:???
>>484
RoRを使うために必要な知識
* Rubyの中級者レベルの知識
* SQLで割と複雑なSELECT文を書く力(ActiveRecordマスターなら不要)
* Webサーバー一般に関する知識
* 英語力
* etc.
0488nobodyさん2006/09/25(月) 20:49:07ID:???
>>487
よこからすまん。
ちょっと疑問に思ったのだが、複雑なSQL書く力って必要?

下手にSQLでゴリゴリやると、
インジェクションが高くなりそうな気がしたんだが。

どーいう場面で必要なのか気になる。
0489nobodyさん2006/09/25(月) 21:30:58ID:???
>>488
単純なアプリなら要らんが、ちょっと複雑なことをやろうとすると
途端に詰まるのがActiveRecordの現状。
自分が割とサクサクSQL書けてしまうからこう思ってるだけかもしれん。

あと最終的なパフォーマンスチューニングとか考えると
どうしてもSQLやDBMSの知識は必要。(それだけじゃないけど)

ごめん。ところでインジェクションって何?
SQLインジェクションの事なら、心配無用。違ってたら説明希望。
0490nobodyさん2006/09/25(月) 21:37:49ID:???
* Rubyの中級者レベルの知識
これってどのくらいのレベル?
オブジェクト指向がわかるってこと?
0491nobodyさん2006/09/25(月) 21:50:15ID:???
>>489
言葉足りなくてすまん。
SQLインジェクションで正解。

仕事ではASP+Oracle使わされてるんで、
それが心配だっただけ。
Railsもrubyも初心者レベルです。

関係ないが
仕事の引継に最近きた派遣のレベルが不明。
前の仕事はRailsで一人月開発したっていうんで、
ASPはERBみたいなもんだ、と説明したらERBって何ですか?と聞かれたorz
仕事でRails使った事無いけど、ERB知らないでRails開発って出来るの?
それとも俺の認識が間違っているのだろうか・・・



0492nobodyさん2006/09/25(月) 21:53:03ID:???
ERBじゃなくてeRubyと言えば分かったような気がする。
0493nobodyさん2006/09/25(月) 22:29:51ID:???
あるいはrhtmlと言えば分かってくれるかも
0494nobodyさん2006/09/25(月) 23:03:46ID:???
>>489
複雑なことは SQL 書けばいいじゃんというのが AR の方針。
0495nobodyさん2006/09/26(火) 00:56:51ID:???
railsがちゃんと使えるレンタルサーバーってありますか?
年1万くらいだといいんですが。
0496nobodyさん2006/09/26(火) 01:01:38ID:???
>>495
ないんだな、これが・・・
0497nobodyさん2006/09/26(火) 01:02:08ID:???
ごめん、国内だとという条件がつく
海外なら、あると思う。試してないけど
0498nobodyさん2006/09/26(火) 01:50:35ID:???
そもそも共用でrorって厳しいと思うよ。
専用鯖借りてくれ。

j2ee(ウェブスフィアとかウェブロジックとかも含む)を共用鯖で動かそうなんて無謀だし。
php的ノリなのはmod_rubyとかmod_perlぐらいの使い方。
0499nobodyさん2006/09/26(火) 02:22:00ID:???
>>495
海外の共有サーバーならば、この辺。

textdrive
http://www.textdrive.com/

RailsPlayGround
http://railsplayground.com/

BlueHost
http://www.bluehost.com/

RailsPlayGroundが安いので試してみるか・・・
BlueHostも安いけど、FastCGIなんだろか
0500nobodyさん2006/09/26(火) 02:41:01ID:???
国内なら月1万ぐらいで専用サーバでやるしかない、
それ以下は劇おもといううわさ

海外なら
レイルズ環境が整いだしているから
値段も1000円とかぐらいであるよ、

上のほうでも話してるから見てね
0501nobodyさん2006/09/26(火) 03:10:31ID:???
なんだかもの凄い勢いで定期的に出るな、レンタルサーバの話題。
Wiki にでもまとめりゃいいのに。
0502nobodyさん2006/09/26(火) 10:19:04ID:???
いいだしっぺのほうそく
0503nobodyさん2006/09/26(火) 10:50:40ID:???
言われると思ったが、俺はレンタルサーバなんか要らないもん。
0504nobodyさん2006/09/26(火) 13:01:51ID:???
普通は専用サーバ借りる。
他人の利用状況に左右されたくないし。
0505nobodyさん2006/09/26(火) 15:29:58ID:???
> 普通は専用サーバ借りる。
> 他人の利用状況に左右されたくないし。

ということは、帯域保証型借りるの?
おかねもちだねぇ。
0506nobodyさん2006/09/26(火) 23:23:15ID:???
>>499,500
ありがとうございます。
0507nobodyさん2006/09/27(水) 00:21:34ID:???
共用サーバしか借りれないの?
貧乏だねえ。
phpで我慢しといたら?
0508nobodyさん2006/09/27(水) 07:01:22ID:???
>>495
>>506
マスイドライブで無料のRailsホスティングが紹介されていたよ。
http://blog.masuidrive.jp/articles/2006/09/27/free-on-rails
詳しくはまったく確認してないけど。
0509nobodyさん2006/09/27(水) 07:48:46ID:???
>>508
増井イラネ
0510nobodyさん2006/09/27(水) 12:44:19ID:???
アフェリエイト稼ぎ必死だなあ。
0511nobodyさん2006/09/27(水) 15:57:17ID:???
>>510
アフィリエイトの提供元にチクれば一発KOだよ。
少なくとも、AmazonとGoogleは2chで宣伝してる奴らは垢バンしてくれる。
0512nobodyさん2006/09/28(木) 17:29:59ID:???
すぐに宣伝とかいいだすやつ頭おかしいんじゃないの?
0513nobodyさん2006/09/29(金) 02:58:48ID:???
2chに自分のブログのURL貼るやつのがおかしい
0514nobodyさん2006/09/29(金) 10:21:18ID:NLL/yuos
chatでmasuiが浮いてる件
0515nobodyさん2006/09/29(金) 14:28:28ID:???
chatってどこ?
0516nobodyさん2006/09/29(金) 18:47:16ID:46uvDqPh
http://blogs.itmedia.co.jp/ogura/2006/09/beyond_java_d458.html?enpura
Pythonも倒さない内から、今度はよりによってJavaかよ。
最近、Rubyの人必死杉て痛々しいんだが…。
0517nobodyさん2006/09/29(金) 18:52:29ID:???
倒すとか倒さないとか言ってるおまえの方が痛々しいよ
0518nobodyさん2006/09/29(金) 18:58:25ID:???
残念だが517に同意
0519nobodyさん2006/09/29(金) 20:49:55ID:???
>>515
RailsChat

>>514
最近見てないけど同意。

# あまりにもヤツが不快なので見なくなった。
0520nobodyさん2006/09/29(金) 22:48:31ID:???
>>516
いくつものスレに爆撃しているマルチなので、虫汁
0521nobodyさん2006/09/29(金) 23:21:47ID:???
ブログのアドレス貼る香具師のほとんどはアフェリエイト廚。
0522nobodyさん2006/09/30(土) 01:43:35ID:???
> ブログのアドレス貼る香具師のほとんどはアフェリエイト廚。

「ほとんど」とするための根拠とかあれば提示してもらえるとありがたい。
■ このスレッドは過去ログ倉庫に格納されています