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

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

■ このスレッドは過去ログ倉庫に格納されています
000112005/06/13(月) 20:51:40ID:hOTuU4T5
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
0611nobodyさん2006/03/08(水) 12:52:44ID:LaE+eeWw
リクエストがきたときに作られるコントローラーって、一つなの??

なんで、こんなこと聞くかって言うと、
今、自前でユーザの認証(Login)部分を作ろうと思ってるんだけど、
1.Moduleとして作って、ユーザ認証行いたいコントローラーにincludeされるのがいいのか
2.コントローラーとして作って、ユーザ認証行いたいコントローラーから、うまくコントローラー間で通信(?)させる。
のがいいのかどっちでしょうか?

2番みたいなのが可能なのか自体、よくわからないんだけど誰か教えてください。
0612nobodyさん2006/03/08(水) 14:55:39ID:???
>>611
3. コントローラに実装して、ユーザ認証行いたいコントローラーに継承させる
っていう方法もあるね。 Rails本のチュートリアルは ApplicationController に実装してる。

どれがいいかは(あるいはどれでもいいか)、要求や方針によるかと。
0613nobodyさん2006/03/08(水) 15:40:29ID:ThVc3iGg
今Rails入門中なのだが認証だと以下が参考になりそうな。
ttp://funk.exblog.jp/m2005-03-01/

login_generatorちゅうのを使ってる記事。
キモは
> require_dependency "login_system"
> class ApplicationController < ActionController::Base
> include LoginSystem
> model :user
> end
と
> profiles_controller.rb に before_filer 句を挿入し、ログインシステムをアクティブにします(ここでは、index以外を要ログインにします):
> class ProfilesController < ApplicationController
> before_filter :login_required, :except => [:index]

あとttp://d.hatena.ne.jp/drawnboy/20050821/1124637530のへん。
0614nobodyさん2006/03/08(水) 16:26:58ID:???
いまどきlogin_generatorなんか使わんでしょ。
LoginEngineくらいがいいんじゃない?
0615nobodyさん2006/03/08(水) 16:37:09ID:ThVc3iGg
>>141
遅レスだけど、personの複数形はpeople。
さっきはまったので。というかFAQか。

irb(main):009:0> require 'ubygems'
irb(main):010:0> require 'active_support/inflector'
irb(main):011:0> Inflector.singularize("people")
=> "person"
irb(main):012:0> Inflector.pluralize("person")
=> "people"

普通に便利だなこれ。
でもまだいつ単数形が使われていつ複数形が使われるかわかんね。
0616nobodyさん2006/03/08(水) 18:12:20ID:???
>>615
ちなみにperpleの複数形はpeoplesな。
0617nobodyさん2006/03/08(水) 18:19:30ID:???
もしかして: purple
06185972006/03/09(木) 12:11:03ID:HNgeIL2K
本のとおりにならない原因がわかりました。
ダウンロードしたコード例の
depot18/app/models/user.rb
を無編集で該当フォルダにぶち込んだためでした。
本に合うように、余分なコードをコメントアウトしたらできました。
0619nobodyさん2006/03/09(木) 16:55:01ID:???
そんな中学生以上には明白なこと報告してくれなくてもいいんだが。。。
0620nobodyさん2006/03/09(木) 22:42:13ID:???
phpのsafe mode+apacheモジュールみたいに、共用鯖でも高速に実行できる環境って
Railsだとどうやったらいいですか?
0621nobodyさん2006/03/10(金) 05:39:56ID:???
>>620
共用サーバだと無理。
専有サーバならlighttpd + FastCGIという組み合わせがおすすめらしい。
つーか、共用サーバならPHPでもCGIじゃないっけ?モジュールでも問題ないんだろうか。
0622nobodyさん2006/03/10(金) 07:03:55ID:???
> 共用サーバだと無理。
> 専有サーバならlighttpd + FastCGIという組み合わせがおすすめらしい。

シェルが使えるなら、勝手に使えるポートで lighttpd + FastCGI でよいのでは?
0623nobodyさん2006/03/10(金) 10:42:07ID:LVJDzaFF
そこまでしたいならルータでポート80開けてポート転送してDynDNSとか使えばいいのではないか。
0624nobodyさん2006/03/10(金) 11:41:16ID:???
まあ要するに、快適に使いたいなら1人1サーバーということだ。
0625nobodyさん2006/03/10(金) 12:59:23ID:???
>>622
共用サーバで、ユーザが勝手にデーモンのような常駐プロセスを立ち上げっぱなしに
することを許しているところはないだろう。

でもcgiにしたら余計に鯖に負荷がかかるのにな。そろそろFastCGI使わせてくれる
共用鯖屋が出てきても良いのに。
0626nobodyさん2006/03/10(金) 13:31:39ID:???
>>625
textdrive.com はポート番号の割当申請さえすれば lighttpd も tracd も
動かせるよ。
0627nobodyさん2006/03/10(金) 13:47:24ID:???
>>625
負荷は CPU とメモリのバランスの問題になるのかな。
でもやはり常駐プロセスを許すのはリスクも運用コストも高いんじゃないかな。
メモリを定常的に占有することになるし、
常駐プロセスがメモリリークや暴走されたら目も当てられないし。
0628nobodyさん2006/03/10(金) 13:49:39ID:???
と思ったが、最近は Jail とかその手の仕組みを使って問題ないのかな。
06296282006/03/10(金) 13:51:02ID:???
s/使って問題ない/使ってるからそういう問題はない/
0630nobodyさん2006/03/10(金) 16:52:22ID:???
>>621
PHPでCGIなんてやってる共用鯖はウンチですよ。
0631nobodyさん2006/03/10(金) 17:22:01ID:3ZJmIVdu
ActiveHeartのソースはどこかに転がっていませんか?
http://svn.rails2u.com/public/plugins/trunk/active_heart/
からは消えちゃったようなんですが…。
0632nobodyさん2006/03/10(金) 17:29:22ID:???
>>626
日本国内の鯖がいいんですが。
06336312006/03/10(金) 17:37:36ID:3ZJmIVdu
すいません、ありました・・・
0634nobodyさん2006/03/10(金) 17:38:55ID:???
贅沢は素敵だ
0635nobodyさん2006/03/10(金) 20:12:46ID:???
PerlでCGIなんてやってる人間もウンチですよ。メモリに常駐してもらわんと。
0636nobodyさん2006/03/10(金) 23:15:53ID:???
>>635
メモリ常駐しかないPerlって時点でウンチですね。
0637nobodyさん2006/03/11(土) 00:03:48ID:8VcTdjXU
Perl自体(ry
0638nobodyさん2006/03/11(土) 01:39:05ID:???
>>614
Login Generatorを使うのは古いのか、、、
0639nobodyさん2006/03/11(土) 04:38:17ID:???
>>636
> メモリ常駐しかないPerlって時点でウンチですね。

だいにのじんせいたんのいるかいしゃがうんちであると。
0640nobodyさん2006/03/11(土) 10:51:41ID:???
ああ、そうだろ。
0641nobodyさん2006/03/11(土) 12:05:15ID:???
>>629
parse error, unexpected $
0642nobodyさん2006/03/12(日) 12:00:40ID:+EMYOyV8
belongs_toで関連付けられたテーブルを参照しようとすると

SELECT * FROM hoges WHERE hoges.id = 1 LIMIT 1
SELECT * FROM hoges WHERE hoges.id = 2 LIMIT 1
SELECT * FROM hoges WHERE hoges.id = 3 LIMIT 1
SELECT * FROM hoges WHERE hoges.id = 4 LIMIT 1
SELECT * FROM hoges WHERE hoges.id = 5 LIMIT 1

みたいにSQLが発行されるんですが、そんなもんなんですか?

SELECT * FROM hoges WHERE hoges.id in (1,2,3,4,5)

ってな具合にまとめてくれるとうれしいんだけど。
自分のやり方が間違ってんのかな
0643nobodyさん2006/03/12(日) 12:41:18ID:E/y3qIwX
便乗belongs_to質問です

外部キーなしのリレーションって設定できそうだけど、AWDWR本よんでもわかりませんでした。
Uriage { --売り上げ
id int,
corp_id1 varchar,
corp_id2 varchar,
amount int
}
と
CorpName { --会社名
corp_id1 varchar,
corp_id2 varchar,
name varchar
}
みたいなテーブルで corp_id1,2がそれぞれのキーになってるんですけど
CorpName.name入りの売り上げデータをつくるときは、find_by_sqlで
ゴリゴリやってます。まちがいではないにしろ、キレイじゃないので
いい書き方おしえてください
0644nobodyさん2006/03/12(日) 17:00:19ID:jfpRLnWZ
>>643
ttp://wota.jp/ac/?date=20060120
かなり下の方

そもそもテーブル構造がいけてない希ガス。
0645nobodyさん2006/03/12(日) 17:15:28ID:E/y3qIwX
>>644
最初の表で、「メンバー:スキモノ」と読んでニヤリとして、
自分が間違えてることに気付いて、一人で悶絶してしまいましたが
ありがとう。まさにハマってた内容と合致してます;_;)

構造がいけてないのは、そんなSIもあるんだとおもって笑って下さい。
既存のシステムをrailsで置き換えようとするのは、それなりに難しいってことでしょうか?
0646nobodyさん2006/03/12(日) 18:12:53ID:???
>>645
うん。
Railsは規約に則れば楽に開発できるけど、そうでなければおすすめしない。
レガシーマイグレーションとかぜったい無理。
0647nobodyさん2006/03/12(日) 21:27:55ID:???
まあhttpdから実行権移される仕組みが有る以上は、スマートな実装は無いね。
共用鯖前提のhttpdでも出て来ないと無理。
0648nobodyさん2006/03/12(日) 21:37:33ID:8xRhlycJ
アプリケーションの設定を外のファイルに出したいと思っています。
YAMLってのを使うべきなのかなと思って調べているのですが
どこかに参考になるページなど、ありませんでしょうか?
0649nobodyさん2006/03/12(日) 21:49:44ID:???
>>648
http://jp.rubyist.net/magazine/?0009-YAML
0650nobodyさん2006/03/13(月) 01:54:33ID:???
RoRっつーと、DBと組み合わせて初めて真価が分かるという感じなんだが、
id:secondlifeさんの
http://lab.rails2u.com/bgmaker/
はどういうあれでRoRを使ったんだろう。

わからない俺は逝ってよすいですかね?
0651nobodyさん2006/03/13(月) 02:37:46ID:???
だいにのじんせいたんのにっきのこめんとらんでしつもんしてみるといいよ!
0652nobodyさん2006/03/13(月) 05:38:04ID:???
>>642
そんなもの。
多分、間違ってる。

find の :include オプションを使いたいのだと推測。
0653nobodyさん2006/03/13(月) 07:40:13ID:???
>>652
render :partial=>"hoge", :layout=>false, :collection=>@hoge_collection
ってやっる所で同じようになった。
その前にfind :includeで一度読み込んでるレコードなのに。

:collectionが悪さするのかな。
0654nobodyさん2006/03/13(月) 10:27:34ID:J9DLLXKB
>>652

うわぁ、ほんとだ。:includeってhas_many専用じゃなかったんだ。
変な思い込みしてました。
:includeで解決できました。ってことで、652さんサンクス
0655nobodyさん2006/03/13(月) 10:28:20ID:???
>>650
単に慣れている、そしてRoRだとscript.aculo.usが使いやすいってだけじゃないかと。
0656nobodyさん2006/03/13(月) 19:41:06ID:???
RoRにしても、結局はmod_rubyや、fastcgiでrubyプロセスいっぱいで楽しくないなあ。
JavaはJ2EEでスマートにやってるのに。orz

とはいえ、動けばいいじゃん的な用途には最高なのは認める。
0657nobodyさん2006/03/14(火) 01:24:34ID:???
Java って起動が糞遅いやん。
0658nobodyさん2006/03/14(火) 02:16:51ID:???
起動が一回で済んでいいなという話だと思うんだが。
0659nobodyさん2006/03/14(火) 06:30:02ID:U9tLpv8P
この場合webrick相当のものが、安定して動けばいいんだろうなって返しが正しいのかな
でも、そこが問題だ
0660nobodyさん2006/03/14(火) 09:48:56ID:???
Ruby がスレッドセーフだったらもっとマシになってたかなあ。
0661nobodyさん2006/03/14(火) 10:31:16ID:???
Windows捨てればいいんだろうなぁ
0662nobodyさん2006/03/14(火) 10:38:58ID:???
スレッドを扱うには、RubyやPythonよりもPerlの方がいい?
0663nobodyさん2006/03/14(火) 10:57:35ID:???
webrick + apacheのコネクタとかは
0664nobodyさん2006/03/14(火) 11:54:02ID:???
今時 apache じゃなくて lighttpd なんじゃないの?
0665nobodyさん2006/03/14(火) 11:54:49ID:???
場合による。
0666nobodyさん2006/03/14(火) 11:56:04ID:???
> 場合による。

さて、どんな場合だろう。
0667nobodyさん2006/03/14(火) 12:09:11ID:???
そのくらい自分で判断できないようじゃ技術者として失格。
0668nobodyさん2006/03/14(火) 12:13:33ID:???
ということにしたいのですね?:)
0669nobodyさん2006/03/14(火) 12:14:17ID:???
>>666
Apache じゃなくてもいい場合。
0670nobodyさん2006/03/14(火) 12:28:59ID:???
かつWEBRICKじゃだめな場合。
0671nobodyさん2006/03/14(火) 14:52:30ID:???
>>668
?じゃなくて?
0672nobodyさん2006/03/14(火) 14:59:32ID:???
偽 void かよ!
0673nobodyさん2006/03/14(火) 15:30:20ID:???
偽はちょっと違うところがいいんじゃないか。
目のつり上がったウルトラマンとか
0674nobodyさん2006/03/14(火) 19:10:26ID:???
>>656
全然スマートじゃねぇだろ
0675nobodyさん2006/03/15(水) 00:57:50ID:vfC5OipP
江角「J2EEがスマートなんて誰が言ったの?」
>>656「いや・・・なんとなく・・・」
0676nobodyさん2006/03/15(水) 15:12:54ID:???
  >>656
  全然スカートじゃねぇだろ
0677nobodyさん2006/03/15(水) 15:20:57ID:???
>>656
全然スジャータじゃねぇだろ
0678nobodyさん2006/03/15(水) 17:08:46ID:???
Rails本みてると、Oracleサポートしてるって書いてあるけど、
一体どこでサポートしてるんだ?
database.ymlを自分で追加すりゃいのかなぁ
0679nobodyさん2006/03/15(水) 17:37:44ID:???
ruby-oci8 が必要だと思う。
http://rubyforge.org/projects/ruby-oci8
0680nobodyさん2006/03/16(木) 00:29:05ID:???
なんか、セスナにジェットエンジン積むような感覚だな。
ボラクルが無駄。

Javaはいくつもプロセス起動しないし、動作チェックでアクセス後に再起動しないから実用上は問題無し。
JSP/Servletsじゃないよ。あれならrubyのほうが小さい分まし。
0681nobodyさん2006/03/16(木) 09:57:37ID:???
お前らもうちょっと他人に伝わるように書けよ。
0682nobodyさん2006/03/16(木) 10:13:33ID:???
読み手の仕事取ったらかわいそうじゃん
0683nobodyさん2006/03/16(木) 10:15:02ID:???
よかった。 >>680 の言ってる意味がわからないのは俺だけじゃなかったか。
0684nobodyさん2006/03/16(木) 20:13:26ID:???
日本語が不自由な在日が湧いてる。
0685nobodyさん2006/03/16(木) 20:38:45ID:???
ぼく、在日日本人アルよ。にっぽんごふじゅうでごめんね。
0686nobodyさん2006/03/16(木) 20:54:28ID:???
>>685
在日といったら朝鮮系じゃないの?
0687nobodyさん2006/03/16(木) 21:26:18ID:???
>>686
そりゃ偏見だな
0688nobodyさん2006/03/16(木) 22:09:20ID:6UtKDtRQ
Rails本関係で質問。

テストユニットの所で、
各テストメソッド事にテストテーブルの中身が削除されて、
フィクスチャのデータを使うとあるけど、本当?

なんか各テストメソッド事の影響を受けまくってるんだが...
0689nobodyさん2006/03/17(金) 01:57:12ID:???
>>688
test/test_helper.rb読め。
0690nobodyさん2006/03/17(金) 09:03:48ID:NuZxMHM+
>>689
thx.
気づかなかったお
0691nobodyさん2006/03/17(金) 09:32:52ID:???
>>690
結局どういうことだったのか説明してくれ
0692nobodyさん2006/03/17(金) 10:39:10ID:???
>>691
test/test_helper.rb読め。
0693nobodyさん2006/03/17(金) 10:40:33ID:???
>>692
thx.
気づかなかったお
0694nobodyさん2006/03/17(金) 10:46:44ID:???
>>693
結局どういうことだったのか説明してくれ
0695nobodyさん2006/03/17(金) 10:57:22ID:???
デジャブ?
0696nobodyさん2006/03/17(金) 11:55:51ID:???
なんで無限ループにはまってるんだw
結局、test_helper.rbの設定次第で、テーブルの中身を保持するか、
1回毎にフィクスチャのデータを使うか切り替えでけるという事みたい。
0697nobodyさん2006/03/17(金) 13:47:25ID:???
最近の傾向は半島系なのに支那系を騙る。
まあ支那系妻の犯行で、支那系もイメージ悪くなって来てるけど(w
0698nobodyさん2006/03/17(金) 14:02:27ID:???
cjkscaffold
0699nobodyさん2006/03/17(金) 16:54:10ID:???
誰も >>488 を試してないのか?
0700nobodyさん2006/03/17(金) 18:47:10ID:???
>>700
esehttpdはFCGIの口がないけど、esehttpd本体にrubyをとりこむことができたような。
だからrubyスクリプトが無限ループになったりしたら、httpd本体まで影響をうけてしまうんじゃなかったっけ?
esehttpd+FCGIができたらいいんだろうけど。
0701nobodyさん2006/03/17(金) 22:44:32ID:???
それはmod_rubyも同じ。
SSIだし。
0702nobodyさん2006/03/17(金) 23:30:11ID:???
>>701
mod_rubyだとApacheだよね?それだと、HTTPリクエストをうけるプロセスとRubyスクリプトを実行するプロセスとを別にできるじゃん。
でもesehttpdのやり方だと、ぜんぶが1プロセスになってしまうから、Rubyスクリプトが暴走するとHTTPサーバプロセス全体がおじゃんになるわけ。
Apache+mod_rubyやlighthttpd+FastCGIだと、Rubyを実行しているプロセスがおしゃかになってもHTTPサーバプロセス自体はだいじょうぶ。
そのちがい。
0703nobodyさん2006/03/18(土) 18:07:37ID:???
AWDWR日本語版 P.268 の ContentMetadata クラスが云々の所が具体的にどう
いうクラス構成にしろって言ってるのか分からないんですけど、参考になるペー
ジとかあったら教えてもらえませんか?>読んだ人

Class table inheritance っていうやつを使いたいんですが 。
単一テーブル継承では、クラス間のオーバーラップが少なすぎてテーブルがで
かくなりすぎてしまうので。
0704nobodyさん2006/03/18(土) 18:12:07ID:???
おしえてあげるので、すきゃんしてうpしる。
0705nobodyさん2006/03/19(日) 07:20:29ID:6XdI2f3p
↓ここにかいてあることを、もう少しわかりやすく、誰か教えてください。
http://wota.jp/ac/?date=20060216
なんとなく、自分の書いてるプログラムで、
これが関係したエラーがでているようなんですが。。

具体的には、controller内で
include ActionView::Helpers::UrlHelper
って書くと
view部分でlink_toメソッドがないといわれてしまいます。
controller内では、単純にHelperメソッドをincludeすると
なにかおかしなことになるんですか??

だれか教えてください。
0706nobodyさん2006/03/19(日) 19:33:38ID:???
mod_rubyでも暴走すればアパチごとアボーンですよ。
FastCGIでも暴走すればhttp鯖の再起動が必要。
0707nobodyさん2006/03/19(日) 20:28:08ID:???
>>706
>mod_rubyでも暴走すればアパチごとアボーンですよ。
いや、アボーンするのはmod_rubyが動いている子プロセスだけ。Apacheのルートプロセス(?)はアボーンしない。

>FastCGIでも暴走すればhttp鯖の再起動が必要。
Ruby側だけ再起動じゃだめなの?
0708nobodyさん2006/03/19(日) 22:40:34ID:3t74pn1l
どなたか、ActiveHeart使っている方いませんか?
trans_id を使ってみようと思って、
http://jp.rubyist.net/magazine/?0012-RubyOnRails
の内容に従って試してるんですが、

ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:trans_sid] = true

を設定すると、

uninitialized constant CgiRequest

というエラーになってしまいました。
0709nobodyさん2006/03/19(日) 23:24:02ID:rSgNjeXG
>>708
enbironment.rbの
Rails::Initializer.run do |config|
end
の中に書くと動くよ。

どこに書くのが正しいのかは俺もよくわからん…。
ここ以外ではエラー吐くんだよな
07107082006/03/19(日) 23:33:01ID:3t74pn1l
>>709さん
おお!うまいこと動きました。感謝です。
■ このスレッドは過去ログ倉庫に格納されています