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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
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
0809nobodyさん2006/12/05(火) 00:37:35ID:???
cookbookはまだか
0810nobodyさん2006/12/05(火) 02:00:22ID:???
>>809
recipeなら16日だぜ!
0811nobodyさん2006/12/05(火) 07:32:47ID:???
>>810
マジで?
うは、予定あるから発売日に買いにいけないorz
0812nobodyさん2006/12/05(火) 09:49:05ID:???
どっか早売りしてるとこあるっしょ。発売日前に探しに行ってみれば。
0813nobodyさん2006/12/06(水) 03:43:03ID:???
趣味でもRails使おうと思ってるんだけれども
日本国内でdebianが使えるVPSのおススメない?

というか…ここでrailsでサイト運営してる奴等はどうしてるのか知りたい
VPS?専用?海外レンタル?
0814nobodyさん2006/12/06(水) 17:35:27ID:???
おれは専用鯖だねえ。VPSといえば、最近、AmazonのEC2も気になる。
0815nobodyさん2006/12/06(水) 18:09:00ID:0C9IoYOZ
Railsアプリでデスクトップアプリを作りたいです。
exe化する方法を教えてください。
0816nobodyさん2006/12/06(水) 19:42:24ID:???
>>815
ぐぐれ。
0817nobodyさん2006/12/07(木) 02:05:07ID:???
>>791おねがいします
0818nobodyさん2006/12/07(木) 02:39:15ID:???
>>817
アクション名からメニューを決め(ハッシュから引くとか)て
設定するbefore_filterを作るとか。
0819nobodyさん2006/12/07(木) 12:20:25ID:???
>>818
なんかややこしそうだなぁ。。。
こういうページごとに切り替わるメニューって結構使うと思うんだけど、
やりやすい方法みたいなのは無いんですね。
0820nobodyさん2006/12/07(木) 12:26:34ID:???
リンクしない場合にも見えてもよいなら、
link_to_unless link_to_unless_current とか。
0821nobodyさん2006/12/07(木) 15:59:26ID:???
datetimeが勝手にThu Dec 07 15:57:00 ???? (?W????) 2006ってフォーマットされるのは仕様?
データベースには 2006-12-07 15:57:47という風に入ってるんだけど、
ここから、前の4文字取り出して、年、6〜7文字が月、みたいにしたいんだけど、うまくいかない・・・
0822nobodyさん2006/12/07(木) 16:01:12ID:???
printすればto_sが呼ばれて決められたフォーマットになるが、
書式を変えたければstrftimeでも使えばいいだろうし、
特定のフィールドが取りたいなら素直にyearとかmonthとか取ってくればいい。
0823nobodyさん2006/12/07(木) 19:02:38ID:???
class Foo < AR::Base
has_many :bars
end

class Bar < AR::Base
belongs_to :foo
end

のとき、barの数が1以上のfooだけをpaginateするにはどういう
条件を書けばいいしょうか? :joinやら:conditionsやら使ってなんとか
書けそうな気がするのですが。

class FooController < AC::Base
def list
@pages, @foos = paginate :foo, ここ
end
end
0824nobodyさん2006/12/07(木) 20:02:07ID:???
りーどざふぁっきんえーぴーあい
0825nobodyさん2006/12/07(木) 20:19:54ID:???
>>822
ありがとうございます!うまくいきました
あれって文字列じゃなくて日付オブジェクトだったんですね
0826nobodyさん2006/12/09(土) 08:27:09ID:???
デビアンなんて鯖管理に適してないディストリ使ってる業者なんて無い。
普通はレドハト。
0827nobodyさん2006/12/09(土) 09:51:08ID:???
>>826
誤爆乙。
0828nobodyさん2006/12/09(土) 13:00:46ID:???
デビ廚必死だな(w
0829nobodyさん2006/12/10(日) 15:26:35ID:???
findで、 :order で最初に指定したフィールドの昇順でソートされるなんてどこに書いてある?
これで軽くハマったよ・・・
0830nobodyさん2006/12/10(日) 15:41:17ID:???
SQLの理解が足りないヤツが
O/Rマッパーを使うのは非常に宜しく無いな
0831nobodyさん2006/12/10(日) 16:24:57ID:???
はまるもなにも、とりあえず昇順になるのか降順になるのかくらい、
試してみるだろ、ふつー。
0832nobodyさん2006/12/10(日) 16:26:13ID:???
order って指定してるじゃない
0833nobodyさん2006/12/10(日) 17:48:27ID:????2BP(10)
勘違いしてますた
0834nobodyさん2006/12/10(日) 19:27:09ID:???
SQLで複数レコード返ってくるのにorder byを付けないのは異常。
0835nobodyさん2006/12/10(日) 22:08:41ID:???
速度重視で、順不同で良いときは付けずに速度を稼ぐけどな。
0836 ◆auRaileruo 2006/12/12(火) 01:03:05ID:???
pagenateの話が出てるので言わせてもらうが
そもそもなぜあのメソッドがSQL文を受け取るなんて
珍妙な仕様になってるんだ?
Pagenatorなんだからおとなしく名前の通り
ページの切り分けだけしてれば良いわけで
SQL文を受け取る必要なんて皆無だろ?
フレームワーク製作者がオブジェクト指向云々以前に
メソッドの切り分けすらできてなくね?
0837nobodyさん2006/12/12(火) 01:09:29ID:???
>>836
仮想コード希望ヌ。
0838nobodyさん2006/12/12(火) 01:41:18ID:???
>>836
classicのやり方もあるしょ?
0839名無し募集中。。。2006/12/12(火) 05:50:58ID:???
>>836
お前さんのやり方だと100万件のときに破綻する
0840nobodyさん2006/12/12(火) 06:45:47ID:???
>>836
アンカーくらい書けよ
0841nobodyさん2006/12/12(火) 12:15:27ID:???
>>836
>>839の言うとおり、resultsetが数万件返したものをセットされた時点でサーバは落ちるだろう。
結局はLIMIT=nの様に先頭からn件だけ参照するのだからSQLを渡すのが一番コストが少ない。
Railsの良いところはKISSを頑なに守っているところだ。
0842nobodyさん2006/12/12(火) 15:34:58ID:???
<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/siteindex.xsd";>
を出したくて
xml.sitemapindex (:"xmlns" => "http://www.google.com/schemas/sitemap/0.84";,
:"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance";,
:"xsi:schemaLocation" => "http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/siteindex.xsd";) do
こう書くと
<sitemapindex xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/siteindex.xsd";>
こうなる。なぜでしょう?
0843nobodyさん2006/12/12(火) 15:49:23ID:???
>>841
いまどき百万件くらいで落ちないよ。
select自体は50万件くらい検索しても一瞬〜数秒で終わるから、
可能かどうかという話なら、インスタンスの食うメモリだけどうにかすれば可能。
0844nobodyさん2006/12/12(火) 18:23:36ID:???
>>843
へー、それを複数プロセスが実行しても?
0845nobodyさん2006/12/12(火) 19:02:15ID:???
>>844
黙っておいてテスト開始時にオタオタさせときゃよかったのにw
0846nobodyさん2006/12/12(火) 19:40:29ID:???
>>844
そんな要件はじめて聞いたぞ。
情報の小出しはよくないな。
そもそも落ちるとはどういう状態?

全然現実的な話をしてるつもりはないんだけど(そもそも836じゃないし)
どういう条件、状態で動いてほしいかというのが具体的じゃない割に
「ARで数万件検索すると無条件にコア吐いて死ぬ」とも読める表現は誤解が産まれそうで嫌。
少なくともHTTPリクエストが一回きてRailsで受けてARでDBから100万件検索して全部インスタンスにしても
OSもDBもRubyもコア吐いて死んだりはしないだろう。

>>845
ヒント:別人
0847nobodyさん2006/12/12(火) 21:10:31ID:???
もういいよ
0848nobodyさん2006/12/12(火) 23:14:10ID:jY5evkw1
>>846
ページ遷移でいつ破棄されるかわからんものにン百万件のレコード渡そうと考える時点で頭おかしい。
Web厨ってそんな素人ばかりだから正直話の相手にすらならない。
0849nobodyさん2006/12/12(火) 23:45:12ID:???
Web厨っていうかO/Rマッパー厨な。
普通にSQL書いてりゃ気付くよ。

そんな俺もなるべくARで済ませようとする癖があるんだが
パフォチューのフェーズで手書き(find_by_sql)に移すケース多くね?

acts_as_s2daoっちゅーか2WaySQL使えるようなるとかなり良い。

0850nobodyさん2006/12/13(水) 00:04:10ID:???
>>849
> パフォチュー
って何語ですか?
独自の略語はDQNへの第一歩
0851 ◆auRaileruo 2006/12/13(水) 01:00:33ID:???
おいおい俺がいない間にずいぶん盛り上がってくれてるじゃないか。
全く想定外だよ、おまいら面白いなw
Railsっておもちゃだろ?ROWが線を越えた時点でそんなもん捨てて
まともなプログラムに書き換えるに決まってる。
おもちゃに何万件もの蝋をはかせるような本格的な仕事なんて
させるわけがないだろw一体何を考えてるんだw夢見てんじゃねーよw
学生に手軽にCRUDを勉強させるためのフレームワークなんだから
おとなしく教科書的な理路整然と切り分けられたコード書いてろよw
ホント無駄なところだけパフォ厨って感じだなw
0852nobodyさん2006/12/13(水) 01:07:05ID:????2BP(10)
この人ほんとにRailsが好きなんだなぁ
0853nobodyさん2006/12/13(水) 02:18:49ID:???
>>848
そもそも百万レコードなんか統計とったり計算したりしないと人間が理解できないんで
ページ遷移で順繰りに見せるアプリなんか普通ありえないわけで元を正せば
>>839からずっと前提が変なんだけどそれはタブー?
あとン百万なんて数字を変えるのもどうかと。
0854名無し募集中。。。2006/12/13(水) 05:09:44ID:???
結局彼の言わんとすることは最後まで謎だったが
「池沼にその名が届くまでRailsが有名になった」
という事実を知らしめた点における彼の功績は大きい
0855nobodyさん2006/12/13(水) 10:36:41ID:???
>>854
そこまでいうならpaginationにSQLを渡さないでresultsetなりを渡す様に書いてみたら?
口先ばっかりだから無理だろうけどww
0856nobodyさん2006/12/13(水) 12:21:26ID:q+DmKttU
質問です。
ある結果(文字列)を動的にtextboxに出力させたいのですが、よい方法ありますか?


0857nobodyさん2006/12/13(水) 12:51:33ID:???
>>856
<%= text_field_tag 'name', expression %>
ということではなく?
0858nobodyさん2006/12/13(水) 13:01:38ID:q+DmKttU
>>857
ありがとうございます。
自己解決しました。
render :partialで_hoge.rhtml中に<%= text_field_tag 'name', expression %>で
うまくいきました。
0859nobodyさん2006/12/13(水) 13:34:12ID:???
>>856
つhuman_attribute_edit
scaffoldの生成したソース読んでみれば?
0860nobodyさん2006/12/13(水) 13:40:12ID:???
>>859
動的ってやっぱりそういう意味かねぇ。
0861nobodyさん2006/12/13(水) 13:58:13ID:???
単に差し込むだけなら「動的」って言わないんじゃないの?(汗)
0862nobodyさん2006/12/13(水) 13:59:47ID:???
まて、もしかしたら1文字ずつアニメーションするという意味だったのかもしれん。
0863nobodyさん2006/12/13(水) 20:02:28ID:???
>>858
全く自己解決に見えないのは気のせいでしょうか?
こういうのを慇懃無礼って言うんでしょうねwww
0864nobodyさん2006/12/14(木) 00:16:35ID:???
おもちゃにパフォーマンス云々言うと厨扱いなのに
仕様がどうこう言う厨がいるスレ
0865nobodyさん2006/12/16(土) 20:06:49ID:???
やっぱりRoRなんておもちゃだよな。
業務システムは無難にJ2EEにしといた。
0866nobodyさん2006/12/16(土) 20:33:09ID:???
>>865
まぁ言いたいことはわかるけど
そーゆー事を言う香具師に限って
大したスキルじゃなかったりするんだよね。
0867nobodyさん2006/12/17(日) 04:03:51ID:???
RoRを丸投げで引き受けてくれる大手メーカが居ない。
0868nobodyさん2006/12/17(日) 12:29:09ID:???
儲からないからね。
0869nobodyさん2006/12/17(日) 13:07:12ID:???
Java 言語がWebアプリで使われ始めた頃に状況が似てるね。
「えー、Java?遅くてダメだし、使ってる大手メーカーないしー」
0870nobodyさん2006/12/17(日) 15:11:54ID:???
中途半端なんだよ、もうブームは終わり
0871nobodyさん2006/12/17(日) 15:41:23ID:???
でもって、じゃぁ、いまのトレンドは?ってきくと
.NETだとかPythonだとか頓珍漢なことを抜かす上に
アプリも満足にこしらえることすらできない香具師だったりする
0872nobodyさん2006/12/17(日) 15:47:13ID:???
じゃあおまえはRoRで 何を作ってるの
業務システムは無難にJ2EEにしといたって言ってるじゃん
0873nobodyさん2006/12/17(日) 22:42:10ID:h6tbfEnZ
userstampプラグインのインストールできます?
本家の指示通り、
script/plugin install svn://delynnberry.com/code/plugins/userstamp/trunk
とやっても、
RadRailsからインストールしても、何もダウンロードしないまま終わるんですけど・・・
08748732006/12/18(月) 18:09:40ID:???
>>873 は、Subversionをインストールしてなかったことが原因でした。
他のプラグインは、Subversionをインストールして無くてもインストールできたものだったので、
気づかなかったです。
0875nobodyさん2006/12/18(月) 18:30:49ID:???
他のプラグインはたまたま http: 始まりだったんだね。

0876nobodyさん2006/12/18(月) 19:20:22ID:???
CUA TECHNOLOGY DAY 2006
ttp://www.rubyist.net/~matz/20061207.html#p01
08778752006/12/18(月) 20:01:20ID:???
>>875
そうなんです。
他に4つほど入れましたが、それは全てhttp:で始まるものでした。
0878nobodyさん2006/12/19(火) 06:52:22ID:???
今のJava並に実績が出てから飛びついても遅くはない。
業務システムって10年は使うから、トレンドより安定性重視。

Javaの出始めに飛びついたところって、今も続いてないだろ(w
0879nobodyさん2006/12/19(火) 08:21:17ID:???
当時のサーバサイドJavaは理想のみだったけどRailsはフルスタックだよ
実績できてから導入ってのは賛成だけど、飛びついて確かめても悪いことは
無いと思うよ
0880nobodyさん2006/12/19(火) 23:50:22ID:???
突貫工事が必要かつ、数ヶ月とか数週間動けばいい、
実験モノ、イベントモノにはとても
向いてるとおもう。

身から出た錆とはいえ、慣れてるからといってJavaでやって、
けっきょく工数たりなくてバグでまくったのを見ると悲しいでつ。
0881nobodyさん2006/12/20(水) 00:01:13ID:???
>>880
新調したブラのアンダーサイズが合わないのがツラいぐらい同意。
0882nobodyさん2006/12/20(水) 23:29:18ID:???
つーか、サイズぐらい計ってもらって買うのが基本。
ブランドやデザインによっても変わるし、自分のに合うのを店員に持ってこさせれば良い。

イベントものだとトラフィックが捌けないので、rubyは無いなあ。
実験ものなら、そこいらのphp廚に丸投げの方が楽。
工数足りないって単なるミスだろ。全然rubyに関係無い。
0883nobodyさん2006/12/21(木) 00:02:40ID:???
ばかだなぁ。
買ってから太ったんだろうw
0884nobodyさん2006/12/21(木) 15:35:55ID:???
最新の行を5つとって配列に突っ込みたいんだけど、
配列って先に宣言しなきゃ、pushとか<<とか使えないんですか?なんかエラーが出るみたいで・・・。
宣言する方法は、5.timesとか使って全部にnil入れるとかでおk??
0885nobodyさん2006/12/21(木) 16:17:33ID:???
>>884
ActiveRecordで
last_five = Model.find(:all, :order => 'updated_at DESC', :limit => 5)
という話? (厳密には配列じゃないけど)
0886nobodyさん2006/12/21(木) 16:18:07ID:???
pushしていくだけなら array = [] でpushも<<もできるお。
0887nobodyさん2006/12/21(木) 16:40:19ID:???
>>884
PHPから来た人か?
PHPだと初期化なんかナシに
foreach($a as $v) $ary[] = $v;
で$aを$aryにコピーできたりする恐ろしい仕様だからなあ。便利ではあるけど。
変数の中身も配列でありハッシュでありインスタンスでもあるし。
配列作ったあとに$ary->hoge = "hogehoge"とかしても問題ないあたり良くも悪くもすげぇと思う。
0888nobodyさん2006/12/21(木) 17:38:49ID:???
はい、また他言語叩きです
0889nobodyさん2006/12/21(木) 17:55:30ID:???
叩きに見えるらしい。
0890nobodyさん2006/12/21(木) 17:56:03ID:???
>>887
そのコードだと初期化してないからnotice吐くし
配列にプロパティセットなんてできない
適当に言い過ぎ
0891nobodyさん2006/12/21(木) 19:32:17ID:???
>>890
それは5系の話じゃないの。使ってないから知らないけど。
4系は注意も出ないようす(バージョン依存のバグかもしれんが)。
初期化してない範囲の配列アクセスは注意されるので勘違いしてないか?

4.4.4で試したら配列にインスタンス変数をセットするのはエラーにはならんし注意もなし。
値はとれないので無意味だが、エラーにならないのは深淵な理由があるのかもしれん。
逆にインスタンスに配列アクセスすると警告にはなる。(ex: $obj = new stdClass; $obj->a = "a"; $obj[5] = 5;)
適当は適当だが、まるっきり嘘というわけでもないし、俺はPHPはそれなりに好きだ。
もう4系はいいかげん使いたくないなとは思うが。
0892nobodyさん2006/12/21(木) 19:52:12ID:???
>>887のどこが恐ろしいのかわからん
0893nobodyさん2006/12/21(木) 20:05:25ID:???
ごめんここRailsスレだよ。PHPの話は別のスレッドでやってください。
0894nobodyさん2006/12/21(木) 23:51:25ID:???
CakePHPってRailsに比べてどう?
0895nobodyさん2006/12/21(木) 23:58:17ID:EmHnzAjc
ここ元々php板だし、我慢しようぜ・・・
ここには、rubyスレ一個しかねーしな、肩身狭い
0896nobodyさん2006/12/22(金) 00:13:23ID:???
実際問題887は、単純にスクリプト言語に慣れていないだけじゃない?
0897nobodyさん2006/12/23(土) 02:09:37ID:???
ruby板ぐらい作ってみれば?
0898nobodyさん2006/12/25(月) 19:20:34ID:???
> 894
たぶんRailsに慣れているほど不便に感じると思う
あとfindしたら配列で返ってきちゃうのが不便
0899nobodyさん2006/12/25(月) 19:36:55ID:???
なんかRailsの新しい本がでてた
「Railsレシピ」
オーライリー社
p292
2800円
0900nobodyさん2006/12/25(月) 20:59:42ID:???
>>899
発売日翌日に買ったけどまだ袋から出してないorz
0901nobodyさん2006/12/25(月) 23:34:59ID:???
原書持ってるけど結構おもしろいよ。レシピ本。
0902nobodyさん2006/12/27(水) 18:56:28ID:FPLAnSWq
LoginEngineに関する質問です。

Windowsで開発を行い、CentOSで公開しています。
どちらも、ruby、railsのバージョンは同じです。
ruby : 1.8.5
rails : 1.1.6
Windows上では正常に動作していました。

CentOS上で、/user/signup を開くと、

NoMethodError in User#signup
Showing vendor/plugins/login_engine/app/views/user/signup.rhtml where line #4 raised:

You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occured while evaluating nil.errors

4: <%= error_messages_for 'user' %>

というエラーが出ます。
@userがnilという事のようで、
応急処置として、signup.rhtmlに <% @user = User.new %>を追加すると動作します。

検索して、error_messages_forメソッドだけを変更しても、後の行の
<%= form_input changeable(user, "firstname"), "First Name", "firstname" %>
で、changeableメソッドを呼び出すときに同じエラーが出ます。

解決方法について、アドバイスお願いいたします。
09039022006/12/27(水) 21:22:39ID:???
更に、調査したところ、
/vendor/plugins/login_engine/app/controllers/user_controller.rb
が読み込まれていないようでした。
それで、/app/controllers/ 以下にuser_controller.rbをコピーすると、正常に動作しました。
原因は謎ですが、いちおう解決しました。
0904nobodyさん2006/12/28(木) 12:31:01ID:???
>>903
これは、>>768と同じ症状っぽいね。
プラグインが認識されないバグ?
0905nobodyさん2006/12/28(木) 12:53:28ID:???
<%= link_to "" %>
       ↑ここに<img src="<%= product.image %>">を入れたいんですが、どうすればいいでしょうか
0906nobodyさん2006/12/28(木) 13:00:19ID:???
<%= link_to(image_tag(product.image)) %>
0907nobodyさん2006/12/28(木) 20:17:05ID:???
ありがとうございます
09089022006/12/29(金) 22:53:12ID:???
追加情報です。

どうやら、Login EngineとUser Engineを併用しているのがいけないみたいです。
もちろん、Windows+WEBrickでは問題ありません。
Linux+Apache+mod_fcgidの環境だと問題があります。

Login Engineも、User Engineも UserController クラスを持っています。
Windows環境では、両方のメソッドにアクセスすることが出来ます。
ですが、Linux環境では、User Engineのメソッドにしかアクセスできません。
解決したとレスしましたが、上記の解決法(Login Engineのuser_controller.rbをコピー)では、
逆にUser Engineのメソッドにアクセスできなくなってしまいました。

どうしたら、良いでしょうか・・・
レス数が900を超えています。1000を超えると表示できなくなるよ。