【Ruby】Ruby on Rails Part3
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/02/06(火) 20:10:09ID:nOZh/PU9Ruby 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/
0175nobodyさん
2007/04/07(土) 12:01:43ID:???最近emacs使ってないし入れてもいないんだけど、
こんな感じで対応できたりする?
--- rails-log.el (リビジョン 169)
+++ rails-log.el (作業コピー)
@@ -27,6 +27,7 @@
;;; Code:
(defvar rails-log:last-log nil)
+(defvar rails-log:lines-to-follow 10 "*Number of lines to follow by tail")
(defun rails-log:files ()
(directory-files (rails-core:file "log") nil "¥¥.log$"))
@@ -48,6 +49,7 @@
(start-process "tail"
buffer
"tail"
+ "-n" (number-to-string (or rails-log:lines-to-follow 10))
"-f" (rails-core:file (concat "log/" log-file)))))
(defun rails-log:open (log-file)
0176nobodyさん
2007/04/08(日) 08:20:16ID:???updated_atが自動更新されるのを防ぎたいんだけど
どうやったら良いですか?
0177nobodyさん
2007/04/08(日) 09:27:07ID:???方法1: クラス単位ながら record_timestamps = true/falseで制御できるので
save の度にこれを切り替える。
方法2: updateが、updated_without_tmestampsだけを呼ぶように、
特異メソッド定義をする。(cf. AR/lib/active_record/timestamp.rb)
あたりでどうか。
0178nobodyさん
2007/04/08(日) 09:27:51ID:???updated_without_timestamps→
update_without_timestamps
0180nobodyさん
2007/04/09(月) 11:12:11ID:znqt2L3Wdate_select で年の範囲を指定(増やす)したいのですが、
いい方法はありませんか?何個かあるので個別にでなくまとめて
できればいいんですが・・・。
さっきから検索してますが、なかなかみつかりません。
おねがいします!
0181nobodyさん
2007/04/09(月) 11:35:30ID:???そんなかでdate_selectを定義して呼びだせばいいんじゃまいか?
0183nobodyさん
2007/04/09(月) 11:48:01ID:???初心者なのでなかなかわからないことばかりなのですが、
ヒントをいただいたのでもうちょっとがんばってみたいと思います。
0184172
2007/04/09(月) 18:42:20ID:???遅レスですみませんが、今試したところ、うまく行きました!
setvar rails-log:lines-to-follow 100 で100行の表示になります!
本当に便利になりました。ありがとうございます!
0185nobodyさん
2007/04/09(月) 23:29:39ID:???2つのテーブルがあります。それぞれa, b とします。どちらのテーブルも定義
は同じで、
id, user_id1, user_id2
となっています。
テーブルaのレコードのうち、user_id1 と user_id2 の組み合わせが、テーブ
ルbに含まれないものを取り出したいのですが、どのように指定したらよいでしょ
うか?SQLを書く以外に方法を思いつかなくて、困っています。教えていただけ
ないでしょうか?
なお、他にuserテーブルもあって、
id, name
という定義になっています。このidが、aとbのuser_id1, user_id2に収められ
ています。
0186nobodyさん
2007/04/09(月) 23:40:40ID:???同じスキーマのテーブルが2つあるって。。
テーブル設計やり直した方がいいとおも
0187185
2007/04/10(火) 00:06:52ID:???両方に含まれるものを取るなら簡単ですが、
aには含まれ、bには含まれないというものを指定する方法が分からないのです。
0188185
2007/04/10(火) 00:14:04ID:???略しましたが、それぞれ他のカラムも持っています。
これらのテーブルは実際のところ、user_id1, user_id2 の二つを主キーとする
複合キーに近いのです。aはトランザクションテーブルであり、bは2ユーザの禁
止された組み合わせを保持するマスタだとお考えください。
もっと良いテーブル定義があるなら、それもお教えいただければ大変助かりま
す。
0189nobodyさん
2007/04/10(火) 07:41:42ID:???まず会社名から聞こうか。
0190185
2007/04/10(火) 12:49:41ID:???とりあえずはSQLで対処することにします。Railsアジャイル本のP221にも、必
要ならSQLを使おうと書いてありますし。
ActiveRecordは、自動採番の1カラムID以外をサポートしておらず、従来のデー
タモデリングの手法がそのままでは使えませんが、ノウハウを身につければそ
んなにSQLを書く必要はない、とどこかで聞いたような記憶があります。
ですから、>>185そのままのテーブル定義でもActiveRecordで所望の結果を得ら
れる、またはテーブル定義を改変すれば得られる、のではないかと予想して質
問したのですが、どうも質問の仕方が悪かったようです。
今さらですが、質問を追加すると、ActiveRecordでどうしてもSQLを使わなけれ
ばならない場合もあると思いますが、それを見分ける方法はないものでしょう
か?
0191nobodyさん
2007/04/10(火) 21:00:00ID:???> 全く回答がいただけません。難しいのか、それとも質問が問題外なのか。
問題外だから。
> どうも質問の仕方が悪かったようです。
だったら書き直してこいよ。あんな情報量の少ない質問に答えられるハズがない。
> 今さらですが、質問を追加すると、ActiveRecordでどうしてもSQLを使わなけれ
> ばならない場合もあると思いますが、それを見分ける方法はないものでしょう
> か?
必要なときに使う。見分け方はリファレンスを見て該当する機能がない場合。
0192nobodyさん
2007/04/11(水) 00:30:21ID:???SQLつかわずに、id1,2の組をaから抽出しつつ
rubyのコードでループまわして解決することもできるとおもうが
それはダメ?
active recordでなんでもできるというよりは、 railsつかうくらいなんだから、
sqlよりはrubyが使えるという前提なだけなんだとおもうが,
どっちが効率いいかは自分で考えて、やりたいほうでやればいいとおもう。
0193nobodyさん
2007/04/11(水) 07:30:46ID:n4G4bIgPそれにヒアドキュメント使えばそこまで
ソースは汚くならないよ。
S2Daoの外だしSQLみたいなライブラリがあればもっと悩まなくていいんだけどね
0194nobodyさん
2007/04/11(水) 22:11:58ID:???users テーブルと prefectures テーブルがあります。
users テーブルには name, email などのフィールドがあり、prefecture_id というフィールドを
prefectures テーブルの id フィールドに関連付けています。
prefecture テーブルは id, name の2フィールドだけです。
user.rb では belongs_to :prefecture と宣言して views/users/_form.rhtml では
<%= select('participation', 'prefecture_id', @prefectures, :include_blank => true) %>
と記述すると、データは引っ張ってきてるようなのですが、値が
<option value="#<Prefecture:0x48a8e38>">#<Prefecture:0x48a8e38></option>
となってしまいます。
これはどうやったらいいのでしょうか?
<option value="1">北海道</option>
のように表示したいです。
ちなみに users_controller.rb では @participation = Participation.new としています。
0195nobodyさん
2007/04/11(水) 22:43:49ID:???module PrefectureHelper
def options_for_prefecture
Prefecture.find(:all).map{|pref| [ pref.name, pref.id ]}
end
end
コントローラ
helper :prefecture
ビュー
<%= select 'participation', 'prefecture', options_for_prefecture %>
とかかなぁ。
0196nobodyさん
2007/04/12(木) 11:08:42ID:???0197nobodyさん
2007/04/12(木) 15:51:43ID:???レスありがとうございます、おそくなってすいません。
教えてもらったやり方で都道府県のプルダウンが表示できました。
でも更新がエラーになりました。
フィールド名が prefecture_id でなく prefecture となるためのようです。
>>196
<%= collection_select('participation', 'prefecture_id', @prefectures, 'id', 'name', :include_blank => true) %>
とすることで解決しました。
お二人ともどうもありがとうございました!
0198nobodyさん
2007/04/13(金) 00:01:11ID:???http://blog.masuidrive.jp/articles/2007/04/04/joyent
0199nobodyさん
2007/04/14(土) 00:33:16ID:6tinSehY$cd hello
$./script/server
として、
http://localhost:3000/
を表示、
About your application’s environment
をクリックすると、
`/rails/info/properties' not found.
何が足りないんでしょうか?
0200nobodyさん
2007/04/14(土) 00:40:55ID:???0201nobodyさん
2007/04/14(土) 15:37:31ID:6tinSehYまでは表示されるんですよね。
うーむ
0202nobodyさん
2007/04/14(土) 15:43:47ID:???0203nobodyさん
2007/04/14(土) 16:27:35ID:???0204nobodyさん
2007/04/14(土) 16:36:15ID:???$ ./script/server
を実行したディレクトリから相対パスで
log/development.log
というファイルを見る。
0205nobodyさん
2007/04/14(土) 18:46:14ID:B2xpWsRyhttp://www.antoniocangiano.com/articles/2007/02/10/top-10-ruby-on-rails-performance-tips
Rails(つーか、Rubyプログラム)を早くする10のチップス
0206nobodyさん
2007/04/14(土) 21:40:24ID:6tinSehYってどこを読みにいってるんでしょうか?
0207nobodyさん
2007/04/14(土) 22:32:26ID:???rails-x.y.z/builtin/rails_info/rails/info_controller.rb
というかログは見たのかと。
0208nobodyさん
2007/04/14(土) 22:41:35ID:6tinSehYをクリックしたときのログは、
Processing InfoController#properties (for 127.0.0.1 at 2007-04-14 22:38:27) [GET]
Session ID: f23ae9ce2c7a252c1b125a13c239630e
Parameters: {"action"=>"properties", "controller"=>"rails/info"}
Completed in 0.08135 (12 reqs/sec) | Rendering: 0.00256 (3%) | 200 OK [http://localhost/rails/info/properties]
となっています。
0209nobodyさん
2007/04/15(日) 00:39:09ID:???コンソール(script/console)から
>> app.get('/rails/info/properties')
はたぶん200が返るよね。(正常動作)
>> Rails::Info
や
>> Rails::Info.properties
は実行できる?
0210nobodyさん
2007/04/15(日) 00:54:17ID:VaZuR0Twirbが入っていませんでした。
ruby1.8-devは入れたんだけどな。
というわけで,
#apt-get install irb
でAbout your application’s environmentから動作環境が表示されるようになりました。
ありがとう。
0211nobodyさん
2007/04/15(日) 01:01:29ID:???0212nobodyさん
2007/04/15(日) 01:10:39ID:???irbのライブラリ側でバイナリあるかみてるのかね
0213nobodyさん
2007/04/15(日) 01:47:46ID:bwS+3MUr0214nobodyさん
2007/04/15(日) 10:33:07ID:???0215nobodyさん
2007/04/15(日) 11:17:24ID:???#<ArgumentError: Anonymous modules have no name to be referenced by>
["/usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:404:in `to_constant_name'", "/usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:214:in `qualified_name_for'",
"/usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:476:in `const_missing'",
"/usr/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/dispatcher.rb:117:in `reset_after_dispatch'",
制限かかったので中略。
[2007-03-29 06:50:53] ERROR `/rails/info/properties' not found.
192.168.0.8 - - [29/Mar/2007:06:50:53 JST] "GET /rails/info/properties HTTP/1.1" 404 294
http://192.168.0.10:3000/ -> /rails/info/properties
irb抜いて再現。
0216nobodyさん
2007/04/15(日) 11:21:43ID:???dispatcher.rb:117がまさに
Breakpoint.deactivate_drb if defined?(BREAKPOINT_SERVER_PORT)
だな。ここでRailsの自動ロード(const_missingから↑の処理)によって
breakpoint.rbが読まれて、最初(18行目)のrequire 'irb'に引っかかるってことか。
0217216
2007/04/15(日) 11:23:32ID:???Debianのruby-irbってバイナリ(というか/usr/bin/irbはスクリプトだが)
しか入ってないらしいから、requireが失敗するのは変だな。
0218nobodyさん
2007/04/15(日) 11:45:56ID:???インストールファイル一覧みると拡張子.rbなスクリプトが結構あるようです。
ちなみにVine4,1でも同じ現象に悩んでて、irb追加で動作しました。
0219nobodyさん
2007/04/15(日) 11:51:45ID:???0220212
2007/04/15(日) 13:33:24ID:???irbのライブラリも入ってるのか
debian使ってるのでdebianかと思って早とちった
debianはirbパッケージがbinの分だけの構成
納得
0221nobodyさん
2007/04/15(日) 13:49:53ID:???依存情報みると、
ruby1.8(>=1.8.2-3)
rake(>0.7.0)
rdoc(>1.8.2)
libpgsql-ruby1.8 |libmysql-ruby1.8 | libdbi-ruby1.8
libredcloth-ruby1.8
liberb-ruby
となってます。
irbは推奨。
パッケージ使うのとgemから入れるのとどっちがよかったんでしょ?
#深く考えずにgemから入れてるので、ruby関係のファイルダブってる予感。
0222nobodyさん
2007/04/15(日) 13:56:55ID:???gemで入れれるものは全部gemで入れるなあ
あとダブっちゃうとパッケージ入れたものが優先されちゃって
それのバージョンが古くて動かないとか時々ハマる
ので、基本rubyのライブラリはgemで入れている
0223nobodyさん
2007/04/15(日) 22:26:40ID:R7zqEagRgemは、面倒だが更新が早い(というか即更新)
面倒っつーか、正式にはgemだけど
0224nobodyさん
2007/04/15(日) 22:48:47ID:???gem 面倒かなあ。
gem のインストールを1回やれば、あとは手間というほどのものは
ないとおもうけどなあ
0225nobodyさん
2007/04/15(日) 23:16:06ID:???0226nobodyさん
2007/04/16(月) 16:54:04ID:Cp2bXGKb@aa.bb = bb.new
@aa.cc = cc.new
if @aa.save
render :action => 'susumu'
else
render :action => 'modoru'
end
の状態でccのvalidateがうまくいかない。
bbモデルのvalidateではちゃんと検出して差し戻しが起きるのに
ccモデルのvalidateではerrors.addしても
susumuに行ってしまいます。
わかる方いたら教えてください。
0227nobodyさん
2007/04/16(月) 19:21:02ID:beYyUphlRubyを選んでRailsという素晴らしいアイデアを
実現したDHHって今更ながら凄い。
多分、RailsがなければRubyという言語の良さに
一生気づく事も無かったかもしれない。
Railsについてはまだまだ知らない事だらけだが、
こいつのやる事なら勉強してみる価値ありそうだ
そう思わせてくれる。
0229nobodyさん
2007/04/16(月) 21:24:33ID:3HLa8xFU0230nobodyさん
2007/04/16(月) 21:59:48ID:a8d2FLrtそれとも、両方手元のあった方が良い?
0231nobodyさん
2007/04/17(火) 05:11:40ID:???0232nobodyさん
2007/04/17(火) 07:24:14ID:57xOi4kkaa
has_many bb
has_one cc
で、両方とも
belongs_to aa
になります。
0233nobodyさん
2007/04/17(火) 07:25:33ID:57xOi4kk@aa.bb << bb.new
@aa.cc = cc.new
ですね。
0234nobodyさん
2007/04/17(火) 08:15:03ID:???0235230
2007/04/17(火) 08:18:58ID:65SxndUC0236nobodyさん
2007/04/17(火) 08:46:27ID:57xOi4kkbbにもccにも
belongs_to :aa
があります。
ちなみに、cc.saveをするとちゃんとvalidateが動いて差し戻すので
addしてるerrorsが違うオブジェクトなのでしょうか…。
0237nobodyさん
2007/04/17(火) 16:43:35ID:???0238nobodyさん
2007/04/19(木) 17:09:42ID:???hogehoge.comにリダイレクトする方法ありませんか?
mongrelのみでアプリ立ち上げているもんで、、、
0239nobodyさん
2007/04/19(木) 21:14:27ID:???0240nobodyさん
2007/04/20(金) 01:06:03ID:???RadRailsで、右下のペインのタブ(Servers, Generators, Rake Tasksなど)を
閉じてしまった場合、どうすれば元に戻せるでしょうか?
タブを閉じるボタンはあるのに、再度開く方法が分からず、
タブを移動する際に誤って、閉じる(×)ボタンを押してしまわないか心配です。
0241nobodyさん
2007/04/20(金) 03:46:08ID:???目から鱗でした。ありがとうございます。
valuedomainでのdnsだったので
http://seesaa.info/
を参考に無事完了です。
0243240
2007/04/20(金) 22:48:25ID:???ありがとうございます。
Window > Show View > Other ...
から、各項目を復帰できる事を確認しました。
周りにも、タブを閉じてしまって困っている人がいるので助かりました。
0244nobodyさん
2007/04/23(月) 14:22:03ID:???<p><label for="user_type">タイプ</label>
<%= select 'user', 'type', [ "タイプ1", "タイプ2", "タイプ3" ] %></p>
とすると、こんなんでます。
TypeError in users#create
Showing app/views/users/_form.rhtml where line #8 raised:
wrong argument type String (expected Module)
どなたかご教授ください。
0245nobodyさん
2007/04/23(月) 16:03:10ID:???ttp://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#M000510
いいか、びっくりすんなよ。なんとその情報はリファレンスマニュアルに実例つきで書いてあるんだ!
0247nobodyさん
2007/04/24(火) 20:18:46ID:???適用したいと思い、継承したクラス内でクラス変数の設定をしたのですが、
親クラスのクラス変数も上書きされてしまっています…。
↓ソースだとこんな感じです
class Model < ActiveRecord::Base
self.pluralize_table_names = false
end
回避するにはモデルごとにpluralize_table_names変数をセットするしかないのでしょうか…?
どなたか良い解法後存知でしたら教えてください。
0248nobodyさん
2007/04/24(火) 22:48:24ID:???親クラスに影響与え天だよ
スコープが甘いんじゃねーの?
0249nobodyさん
2007/04/24(火) 22:58:31ID:cwLWyb36何でなんだろ・・・
コマンドラインからだと、そこまで遅くないんだけどな
0251nobodyさん
2007/04/25(水) 00:59:22ID:???class Model < ActiveRecord::Base
def self.pluralize_table_names
false
end
end
>>248
1.9 では親クラスと共有しなくなった。
0252nobodyさん
2007/04/25(水) 10:02:52ID:???http://capsctrl.que.jp/kdmsnr/wiki/bliki/?ClassInstanceVariable
0253nobodyさん
2007/04/25(水) 13:55:01ID:???実装者からはid触れなくするってことなんかな?
バッチとかでtrancateしてinsertし直す時に困りそうな気がするんだが…。
0254nobodyさん
2007/04/25(水) 14:17:42ID:???自己レス
warning: Object#id will be deprecated; use Object#object_id
よく嫁よ俺…orz
0255nobodyさん
2007/04/25(水) 15:55:33ID:l0yezZx4debugってどうやればいいんでしょう?
サイトをいじりながらデバッグしたいんですけど、
出来ないのかな?
0256244
2007/04/25(水) 20:29:04ID:???<%= radio_button 'send', 'type', 'mail' %>aaa
<%= radio_button 'send', 'type', 'login' %>bbb
Rails API ドキュメントむずい・・
0257nobodyさん
2007/04/25(水) 21:03:10ID:???<% send.type = 'mail' %>
と値を設定しておいてやればいいのでは?
0258nobodyさん
2007/04/25(水) 21:03:47ID:???<% send.type |= 'mail' %>
の方がいいね。
0260244
2007/04/25(水) 21:51:46ID:???<%= radio_button 'send', 'type', 'mail' %>aaa
<%= radio_button 'send', 'type', 'login' %>bbb
no method name given
だめでし
0262244
2007/04/25(水) 22:56:47ID:???エラーで無くなったけどcheckedにならないですね。
<% @send.type ||= 'mail' %>
<%= radio_button 'send', 'type', 'mail' %>aaa
<%= radio_button 'send', 'type', 'login' %>bbb
だめぽ
0263nobodyさん
2007/04/26(木) 08:06:56ID:7y5iCbkB0264nobodyさん
2007/04/26(木) 09:48:50ID:???単に@send.typeがObject#typeを呼んでるだけなんじゃないの?
method_missing経由でカラム名のアクセサがあるように見せているので、
すでにメソッドがあったり、自分で上書きしたりすればデフォルトのアクセッサは
動かなくなる。
0265nobodyさん
2007/04/26(木) 18:39:23ID:???ARでカーソルみたいなRecordSetのような概念はないんでしょうか?
WebアプリだったらそもそもそんなにHitする画面はねーよ、っていう思想なのかな・・
0266nobodyさん
2007/04/26(木) 22:44:12ID:???いまんとこないですな。
ぐぐるといろいろ工夫してる人がいるみたいですが。
MySQLのid割り当てのしかたを前提にしたちょっとインチキ。
http://weblog.jamisbuck.org/2007/4/6/faking-cursors-in-activerecord
ActiveRecordEnumerable(試作)
http://schuerig.de/michael/blog/index.php/2007/02/03/ar-enumerable/
0267nobodyさん
2007/04/26(木) 23:27:48ID:???Railsで、アップロードされたファイルを受信する際に、ファイルのサイズに制
限をつけるにはどうしたらよいのでしょうか?巨大ファイルを送信されたとき
に拒否したいのです。
0268nobodyさん
2007/04/28(土) 01:15:37ID:???ファンクションテストで使う、assins には、メソッドと単なるハッシュの二種
類があるそうですが、この単なるハッシュのスコープは何でしょうか?
単なるローカル変数だとしたら、そのテストメソッドの中のスコープしかあり
ませんから、テストメソッドの実行前に価をセットしておけるはずがないと思
います。不思議です。
0269nobodyさん
2007/04/28(土) 06:33:56ID:???assignsのハッシュはViewのインスタンス変数のハッシュそのものじゃないか。
ソース見てないけど。
>>267
File.size(params[:uploaded_file].local_path) じゃだめかね
直接params[:uploaded_file].sizeでいけたかも。
0270nobodyさん
2007/04/28(土) 14:21:10ID:???0271nobodyさん
2007/04/28(土) 14:21:31ID:weHXkhvgこの現象ってページングの時もですか?
1億件から30行とってくる場合に、1億件ARRAYに入れて30件抽出すると言う事ですか?
0272nobodyさん
2007/04/28(土) 14:36:30ID:???find(:all, ...
:offset => paginator.current.offset, :limit => per_page)
という呼び出しをしているのでだいじょぶ。
0273nobodyさん
2007/04/28(土) 15:27:33ID:???そこでメモリ食ったり処理速度上のネックになったりはする。
表示する件数がやたら多い場合とかだけどね。
0274271
2007/04/28(土) 18:50:24ID:weHXkhvgサンクスです
安心しました
■ このスレッドは過去ログ倉庫に格納されています