【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/
0577nobodyさん
2007/06/08(金) 23:57:16ID:???できる範囲を超えたらあきらめたほうがいいな。
0578574
2007/06/09(土) 01:00:59ID:K9Grt71jDBにレコードを初めてINSERTするときのデフォルト値を表示させたいんですよ。
だからモデル側はまだ何も無い状態。
0579nobodyさん
2007/06/10(日) 00:16:39ID:???なにもないなら自分で埋めよう。
def new
@hoge = Hoge.new
@hoge.date = 3.days.from_now
end
<% = date_select :hoge, :date %>
モデルかデータベースでデフォルト値を定義してもいいけどね。
0580nobodyさん
2007/06/11(月) 21:13:10ID:???mod_perlのような、起動オーバーヘッド軽減できるような仕組みはありますか?
0581nobodyさん
2007/06/11(月) 21:21:11ID:???0583nobodyさん
2007/06/11(月) 23:49:40ID:???ただ、遅い・・・これが致命的につらい。
気長にマッタリ勉強していける性格ならRubyをお勧めするよ。
ま、ついでにApacheとかもがんばって勉強してもいいけど・・・
毒を食らわば皿までだ。
0585583
2007/06/12(火) 00:15:17ID:???0586nobodyさん
2007/06/12(火) 07:08:24ID:gjdXbgZv0587nobodyさん
2007/06/12(火) 07:09:57ID:gjdXbgZv0588nobodyさん
2007/06/12(火) 11:46:34ID:???画面遷移がどうも重い。同じ条件下のPerl製より速度が出ない。
皆さんどのへんチューニングしてます?
0589nobodyさん
2007/06/12(火) 11:54:09ID:???その作者が遅いと認めてる部分や
その注文系フォームをどういう環境で動かしていて遅いのか
もう少し具体的に書いてくれ、でないと
ああそこはやっぱりどうしようもないね、なのか
こうやったら速くなるんじゃね、とか言い様が無いからさ
0590nobodyさん
2007/06/12(火) 12:31:57ID:???0591nobodyさん
2007/06/12(火) 19:15:37ID:???sessionを使うために何か準備することとかあるんでしょうか?
session[:user]の有無でログイン状態をチェックしているのですが、
ログイン処理とは関係のないコントローラ(ただしログインしていることが前提)
でテストをしたいので、とりあえず
session[:user] = @hoge
と適当なユーザオブジェクトを放り込んでやろうとしたら
Symbol as array index
というエラーが出てしまいます。
ログインを管理するコントローラの方では普通にsessionにアクセスできるのですが、
sessionの初期化かなんかの方法があるんでしょうか?
教えてくださいませ
0592nobodyさん
2007/06/12(火) 22:08:13ID:???0593591
2007/06/12(火) 22:08:43ID:???@request.session[:user]
でした
0595nobodyさん
2007/06/12(火) 23:44:39ID:???0596nobodyさん
2007/06/13(水) 12:53:50ID:???0597nobodyさん
2007/06/13(水) 16:59:51ID:???レンサバじゃインスツールしてくれないとか。
0598nobodyさん
2007/06/13(水) 17:45:28ID:???FastCGIも使えるし
なんで国内とこんなにも価格差があるんだろ
0599nobodyさん
2007/06/13(水) 19:07:27ID:???0600nobodyさん
2007/06/13(水) 19:27:32ID:???0602nobodyさん
2007/06/13(水) 22:02:39ID:???ような気がするかもしれん
0603nobodyさん
2007/06/13(水) 23:22:35ID:???みたいにページ内にリンクを張りたい場合は、
link_to ではなく
<a href="<%= urf_for :action => "hoge" %>#foo">bar</a>
のようにする以外ないんでしょうか?
0604nobodyさん
2007/06/13(水) 23:39:36ID:???<%= link_to "bar", :anchor => "foo" %>
でいけるんじゃないか試してないが
0605603
2007/06/14(木) 00:02:26ID:???ありがとうございます。
無事に :anchor => "foo" でいけました。
助かりました。
ところで、
オンラインのドキュメントなどでは、ヘルパーメソッドに渡すオプションの項が options などと書かれていて
実際にどのようなオプションがあるのか、分からない事が多いです。
「options がどのようなオプションを受け付けるか」を知るにはソースを読む以外ないのでしょうか。
このようなリファレンス的な文書が見当たらず困っています。
0606nobodyさん
2007/06/14(木) 00:31:30ID:???link_toのanchorの場合は、url_forに渡るということが本文中に書いてあるので
url_forを見ることになる。
0607603
2007/06/14(木) 00:42:03ID:???ありがとうございます。
ActionController::Base#url_for に、各 options について書いてありました。
お恥ずかしい限りです。
もう少しちゃんとドキュメント読んでみます。
0608nobodyさん
2007/06/14(木) 22:44:13ID:???項目名を日本語化したり、項目非表示にするのはスペジェネ入れないと面倒っぽい?
あと、日付要素の出力フォーマットは設定とかできるんでしょうか?
初歩的質問で申し訳ないです
0609nobodyさん
2007/06/15(金) 08:31:10ID:???最初にrailsを使ってみるときに、即座に動くモノが得られること。
とりあえずのアプリを作るときに手間が省けること。
くらいかな。
本格的なものを作るときにはどうせ最後には無くなるものだし、
最初から使わない。
0610nobodyさん
2007/06/16(土) 01:32:48ID:???はげどー
おれは
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/rails_generator/generators/components/scaffold/templates/view_*.rhtml
を改変しちったよー
でもほんとはいけないことだから、自分用のscaffold generator作る方法だれか教えて!
0611nobodyさん
2007/06/16(土) 17:49:27ID:fqTepViI>>439
DreamHost糞重いよ。
あと、MySQLがとにかく重い。さくらインターネット並み(それ以上か?)に重い。
お勧めしないよー。
安かろう悪かろうの代表だよ。
安くて大容量だから、別の用途で、俺は使ってるけど、Railsはさすがに無理だった。
誰か、DreamHostで、Railsをまともに動かしている人、ノウハウ書いてくれっ
俺は、高くても、Rails対応をメインにうたっているサイトをお勧めします。
0613nobodyさん
2007/06/17(日) 00:01:01ID:???0614nobodyさん
2007/06/17(日) 01:01:40ID:???0615nobodyさん
2007/06/19(火) 02:00:29ID:???(無料のRoRコンテナはメモリが64Mなので…。)
0616nobodyさん
2007/06/19(火) 09:21:55ID:???誰か試して
0617nobodyさん
2007/06/19(火) 14:45:34ID:???http://www.techcrunch.com/2006/10/17/media-temple-crushes-shared-hosting/
0618nobodyさん
2007/06/19(火) 15:43:25ID:???スマートに日付とるにはどうすりゃいいんだ?
0619nobodyさん
2007/06/19(火) 20:20:58ID:???それの日本語訳がこれ。
http://jp.techcrunch.com/archives/media-temple-crushes-shared-hosting/
ただ海外サーバで良ければMedia Templeじゃなくても他にも
Railsをサポートしているところはいくらでもあるよ。
>>616
面白そう! Xen VPS+Ubuntu+(最適化された)Railsか。
ただ£45/monthは約1.1万円なんで高めの設定だね。
0620nobodyさん
2007/06/20(水) 14:57:24ID:???validates_presence_of :mail_address, :message=>hoge()
undefined method 'hoge' for User:Class
といわれてしまうんですが(もちろんhogeメソッドはあります)
:if みたいにシンボルを渡すのかなーと思ったんですが、これもダメでした。
教えてください
0621nobodyさん
2007/06/21(木) 02:40:43ID:???じゃなくて
def self.hoge
にしたら、いいんじゃない多分
0622nobodyさん
2007/06/22(金) 00:47:29ID:???もう少し分かりやすく書けなかったのだろうか。
クラスの説明なんか、
動物を親として、継承して犬や猫を作るありきたりの例で
良いのに、攻撃だの技だの、変な例で説明している。
こういうのは誰もチェックしないで出版するのか。
まともなリファレンス本は無いのか。
0623nobodyさん
2007/06/22(金) 01:09:55ID:???継承とか、Mix-inなんかは動物だとか、オブジェクトは「モノ」だとかいう
説明は結構解りづらい。他言語から入るひとのために、Rubyにはプリミティブ型
がないことをもっとはっきり言ってあげた方が親切だったかな。
あと、あの妙なAAはいただけなかったなあ。
AAって画面では面白く見えるんだけれど、紙面では絵に見えないんだ。
いっそ北斗の拳とかドラゴンボールで説明すれば理解しやすかったかもと
思ったり。
Rails本は5冊ぐらい買ったがアジャイル本とこれがあれば事足りる。
アジャイル本は今はもう人に勧められないからマイグレーションと
ActiveRecordまわりを追補して改訂第2版出してくれ。
0624nobodyさん
2007/06/22(金) 01:37:16ID:???俺的には最初は黄色い本か青い電車の本がわかりやすかった。
黄色の本の dbのセットアップをrakeにするというのは
開発マシンと運用が違うときに同じ作業をすぐ実行できるという点で
面白かった。まあ、何度かやってたら思いつくんだろうけど。
でも結局 アジャイル本を日本語と 第二版の英語の2つ用意して
この2つを見比べながらってことになってしまう。
1.2対応の日本語版でないのかな。でも出たころには
railsがさらに先に進んでるんだろうな。。。
0625620
2007/06/22(金) 11:24:53ID:???クラスメソッドでもダメでした
gettextの説明ページで
validates_presence_of :title, :message => N_("%{fn} can't be empty!")
ってかいてあったんで関数指定できるのかと思ったんですが
ダメなんですかねえ
(そもそもN_()は関数じゃない?
gettext使ったことないのでわからないです)
とりあえずvalidateで全部自前で書きましたがわかる方教えてください
0626nobodyさん
2007/06/22(金) 12:08:32ID:???存在しないもの呼んだりしちゃってるんじゃない?
0627nobodyさん
2007/06/22(金) 22:02:17ID:???0628nobodyさん
2007/06/24(日) 20:53:50ID:???それともテーブルは作らずに generate model Hoge して、
db/migrate/001_create_hoge.rb
に定義書いて rake migrate かけるんですか?
また、テーブルにフィールドを追加した時の作業手順とか、みなさんどうしてるのでしょうか?
ある程度決まっているものなのか、人それぞれなのか等も含めてオレはこうしてるっていうの教えて頂けると
助かります。
0629620
2007/06/24(日) 21:22:59ID:???ありがとうございます。
同一ファイル内なのでメソッドの順番を変えてみましたがやっぱりダメでした。
validateの条件のifはシンボルでメソッド名を渡せるので
メッセージもそうだろうと思ってたんですが、ActiveRecordのソースを見ると
evaluate_condition(configuration[:if], record)
と評価している(?)みたいなのに対して
:messageの方はそういうのはやってませんでした
(すいません、ソース見ても意味がよくわからないんでまちがってるかも)
ということで出来なさそうです
0630nobodyさん
2007/06/24(日) 21:50:35ID:???sessionの有効期限(時間)を指定する方法はありますか?
どなたか、ご教授下さい。
0631nobodyさん
2007/06/25(月) 00:04:53ID:???def self.up
create_table :cats do |t|
t.column(:name,:string)
t.column(:age,:integer)
}
end
end
のときに、
Cat.find_by_name("ミケ").alter_name #=>"ぬこ"
Cat.find_by_name("タマ").alter_name #=>"ぬこ"
Cat.new.alter_name #=>"ぬこ"
とやりたいのですが、
class Cat < ActiveRecord::Base
public
def alter_name
"ぬこ"
end
end
としてもDBのalter_name列を探しに行ってしまってうまくいきません。
何がダメなのでしょうか…。
0632nobodyさん
2007/06/25(月) 00:33:10ID:???ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_expires => Time.now + 1.week)
とかでしょうか。
最初に作成されたときから1週間と、
最後にアクセスされてから1週間じゃ意味がぜんぜん違う気がするけど。
>>631
ふつうにできたんですが……
0633nobodyさん
2007/06/25(月) 01:22:36ID:???テーブルが先に決まってたら(与えられていたら)前者
そうでなければ後者でmigrateしたほうが変更が楽なはず。
migrateに関しては 日本語のアジャイル本に載ってないのが残念だ。
0635nobodyさん
2007/06/25(月) 02:51:09ID:???え、あれ…
migrateって1.1からの新機軸なので1.0にあわせた アジャイル本1版には
出てないと思ったんだけど読み方があまかったか?
ちなみに英語の2版には出てますね。
知らない俺がバカだったくらい気持ちよくなれた.
0637nobodyさん
2007/06/25(月) 04:06:23ID:???0639nobodyさん
2007/06/25(月) 16:08:42ID:???2. find_by_sql( ["SELECT * ...
3. find_by_sql( ["SELECT column1, column2...
の三つを比較すると123の順で速くなる(3が最速)だと思ってたんだけど、
RSSを生成するテストをしてみたら実際には123の順に遅くなった。
なんでだろう?
find/find_by_sqlメソッドを単体でテストすると確かに3が一番速いんだけど。
もちろんRSS生成メソッドのfind以外は全部共通です。
0640間違い
2007/06/25(月) 16:09:34ID:???○1. find( :all, :conditions=>...
0643639
2007/06/26(火) 00:02:16ID:???一回のテストで1,2,3を順番に実行してたんだけど、
一回ずつバラバラにやってみたら期待通りの結果になった。
なんでだかわからないけど一安心。
0644nobodyさん
2007/06/26(火) 09:37:14ID:???0645nobodyさん
2007/06/26(火) 19:58:04ID:???チェックってどうやんの?
0646nobodyさん
2007/06/26(火) 22:03:37ID:???相手先のSMTPに正常に届けられたかどうかは、maillogをチェックするしかないな。
0647nobodyさん
2007/06/27(水) 14:50:46ID:???0648nobodyさん
2007/06/27(水) 22:29:14ID:???......
<%- end -%>
で前後の改行が出力される…
改行コードをCR+LFからCRにしても直らなかったから
悶々としてたけど、念のためLFだけにしたら直った。
0649nobodyさん
2007/06/29(金) 12:20:36ID:???0650nobodyさん
2007/06/29(金) 21:29:34ID:cisHoRstrake war:standalone:create
じゃなくて?
0652nobodyさん
2007/07/01(日) 08:28:26ID:???ActionMailerでメールを送るとき、POP before SMTP認証するにはどうすればいいのでしょうか?
ActionMailer::Base.server_settingにはPOPサーバを指定する項目がないようなのですが…。
0653nobodyさん
2007/07/01(日) 14:45:55ID:???require 'net/pop'
pop = Net::POP3.new( 'pop3.server.address', 110 )
pop.start( 'YourAccount', 'YourPassword' )
pop.finish
0654nobodyさん
2007/07/01(日) 18:15:27ID:???標準で用意されてるようだったら、よりスマートに書けるので、お聞きした次第です。
人の作ったものなのでできればあまり手を入れたくなかったのですが…。
試しに、その方法でやってみます。
0655nobodyさん
2007/07/01(日) 18:46:17ID:???http://wiki.rubyonrails.com/rails/pages/PopBeforeSMTPForActionMailer
0657nobodyさん
2007/07/02(月) 19:27:02ID:???概念的な事が気になっているので教えて頂きたいのですが・・・
(Rubyに限らず、他のWebフレームワークにも当てはまる事かもしれませんが)
Railsで開発したWebアプリケーションをapacheなどから起動しようとした時、
ルーティングコンポーネントでURL解読を始めるなどの動作は、Railsがインストール
されているマシンにJavaのように実行環境(仮想マシン)が存在してそれが制御
しているのでしょうか?
それとも、プロジェクトを作成する際に、必要なRailsのライブラリ郡が
作成されるスケルトンに全てrequireか何かで組み込まれて、プロジェクトを
制御しているのでしょうか?
馬鹿な事を質問してるかも知れませんが、よくわからなくて気になったもので・・・
0658nobodyさん
2007/07/02(月) 20:45:07ID:???0659nobodyさん
2007/07/02(月) 21:16:25ID:???<% form_tag("search", :method=>:get) do %>
<%= text_field_tag "query", "size" => 40 %>
<%= submit_tag("検索だよ〜んぴろぴろぴろ〜ん") %>
<% end %>
とすると、paramsの中に{”commit”=>”検索だよ〜んぴろぴろぴろ〜ん”}が渡されます。
POSTなら気にしないのですが、GETを使いたいので恥ずかしいです。
なんとかcommitを渡さない方法はないでしょうか。
0660nobodyさん
2007/07/02(月) 22:08:06ID:???試すのは任せた。
0661nobodyさん
2007/07/02(月) 22:14:24ID:???image_submit_tagにすればいい
0663659
2007/07/02(月) 23:31:38ID:???<%= submit_tag("検索だよ〜") %>
が、
<input name="commit" type="submit" value="検索だよ〜" />
に展開されて、
nameとvalueのセットが送られるというhtmlの仕様に則ってこんなことになってたんですね。
htmlソース見てよく考えればよかった…。気をつけます。
ありがとう!
0664nobodyさん
2007/07/03(火) 01:07:46ID:???え、マジで?
俺は使えればいーや!ってタイプなので深く考えた事無かったが、
なんとなく前者ジャマイカと思ってた。
そうすっと、RoRのプロジェクトはapacheからはRubyで組み上げた
一つにアプリみたいに見られてるの?
ActiveRecordみたいなRoRのライブラリ群はふつーのライブラリみたいに
Rubyのインスコディレクトリからrequireするみたいな感じで。
>>659-663
おまいら、大真面目に「ぴろぴろぴろ〜ん」って・・・・フイタ
0665nobodyさん
2007/07/03(火) 01:25:03ID:???・まずRailsを動かすのに、Apacheが必須なわけではない。
・ApacheをRailsを一緒に使う場合は、mod_rewriteなりを普通使うと思うけど、
この場合、内部的には単に通信をproxyしているだけ(つまり、ApacheからRailsは、"Webサーバー"として見られている。)。
0667nobodyさん
2007/07/03(火) 02:38:13ID:???Rails以前の基礎的なとこから理解してないようだし
ここにすべてを印すには余白が足りない
0668664
2007/07/03(火) 02:39:45ID:???解説アリが�d
「Webアプリケーションフレームワークと言ってるけどRailsの実体とは何ぞや?」という概念で見たら、
Railsのプロジェクト(=Rubyで作成したWebサーバアプリの基幹?)と介錯して良いんでしょうか?
プロジェクト自体はURLを解読してコントロールやアクションを呼び出すようなWebサーバの
制御部分を担ってて、Webアプリとしての中身はプロジェクトの開発環境を使ってユーザが
作る・・・みたいなイメージでOK?
(プロジェクトのディレクトリ構成も、Webアプリの仕様みたいな)
ActiveRecordのようなライブラリもRubyにパッケージとしてインスコされているもので、
人間からみたらRailsという概念もマシンからみたらRubyのプログラムに過ぎないと
考えて良いでしょうか?
0669nobodyさん
2007/07/03(火) 03:14:34ID:???ok
「ruby script\server」で、Railsのプロジェクトを起動させるんだけど、severファイルからrequireが始まるでっかいRubyのプログラムが起動するだけだよ。
で、前の質問からちょっと、CGIの仕組みでRailsが動いている、と勘違いしているんじゃないかなと思った。違ってたらすまん。
「ruby script\server」でRailsを起動させた場合、Webサーバーを含んだRubyスクリプトが起動するんだ
なので、Railsを処理の面から見た場合
HTTPリクエストを受ける→URLを解釈する→アクションを実行する→HTMLなりを返す
までを含んだ、WebサーバーなRubyスクリプトだと見ることが出来るかな。
Webサーバーの役割をなくすこともできるけど、まあいいや。
0670nobodyさん
2007/07/03(火) 12:25:08ID:???>CGIの仕組みでRailsが動いている、と勘違いしているんじゃないかなと思った
横槍スマソ、apacheがWebサーバの場合はCGIで動く事もあるんじゃないの?
(CGIじゃ遅すぎるから、FastCGIとかmod_rubyとか使うだろうけど・・・・・)
「ruby script\server」の場合は(大抵の環境では)WebrickがWebサーバとして起動して
「DispatchServlet.dispach」を呼び出すし、
apacheをWebサーバとして使用する場合はVirtualHostとして動かしたいRailsのプロジェクトの
publicをDocumentorootとして設定する事で
apacheのCGIからアクセス → [Railsプロジェクトの]public/dispatch.{cgi,fcgi,rb} を実行
の流れで最終的に「require "dispatcher" Dispatcher.dispatch」が呼び出されて、URL解析が
始まるんジャマイカ?
Webサーバーのアプローチが異なるだけで、
>HTTPリクエストを受ける→URLを解釈する→アクションを実行する→HTMLなりを返す
>までを含んだ、WebサーバーなRubyスクリプトだと見ることが出来るかな。
って所には同意だけど。
0672nobodyさん
2007/07/03(火) 15:08:21ID:???「検索だよ〜んぴろぴろぴろ〜ん」にしてみよっと。
0673659
2007/07/03(火) 20:32:16ID:???検証してないですが、そうやって直書きなら問題なくいけますよね
折角フォームヘルパがあるので>>662のやり方でやらせてもらいましたが。
>>672
をいw
0674nobodyさん
2007/07/03(火) 23:17:39ID:???0675nobodyさん
2007/07/03(火) 23:54:55ID:???Rails 1.2.3でEngines及びLogin Engineプラグインを利用する
http://rubyist.g.hatena.ne.jp/pulscope/20070327/p1
■ このスレッドは過去ログ倉庫に格納されています