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

【Ruby】Ruby on Rails Part6

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/10/24(金) 17:46:53ID:???
■前 Ruby on Rails のスレ が
http://pc11.2ch.net/test/read.cgi/php/1207425569/

■参考サイト
<英語>
本家:http://www.rubyonrails.org
API document:http://api.rubyonrails.com/
開発者のblog:http://weblog.rubyonrails.org/
参考wiki:http://wiki.rubyonrails.org/rails

<日本語>
Rails' wiki: http://wiki.fdiary.net/rails/

■参考スレ
Rubyについて Part 33
http://pc11.2ch.net/test/read.cgi/tech/1223709050/
Ruby 初心者スレッド Part 22
http://pc11.2ch.net/test/read.cgi/tech/1221467121/
0032nobodyさん2008/11/10(月) 07:09:29ID:???
>>31
pythonを学習する必要が無い
0033nobodyさん2008/11/10(月) 19:32:15ID:???
>>31
求人が多いこと。
すでにDjangoやZopeをマスターしているなら、乗り換える必要性はないと思うけど。
0034nobodyさん2008/11/12(水) 19:14:27ID:???
viでRails開発している人っている?
つか、みんなどんなエディタ使ってる?
#定期的に出る話題だとおもうけど、すまんのう。
0035nobodyさん2008/11/12(水) 20:21:19ID:???
Emacsだよ
vi使ってる人もたくさんいると思うけどvi使うのが不便なのかい?
0036nobodyさん2008/11/12(水) 21:41:34ID:???
netbeansはどうだろう
0037nobodyさん2008/11/12(水) 21:42:52ID:???
vim/emacs/TextMate/EmEditorを状況によって使い分けてる。
マカーなので一番多いのはTextMateだがな。

最近NetBeansもお試し中。
0038nobodyさん2008/11/13(木) 00:23:40ID:???
vim + ruby-modeで開発してるよ。rails.vimすら使ってない。
色づけとソース整形ができれば十分。
0039nobodyさん2008/11/13(木) 00:50:35ID:???
Aptana。1日1回は落ちるけど。
ttp://wota.jp/ac/?date=20060105
ttp://d.hatena.ne.jp/MillyC/20080924/1222255886
この辺にscoped_methodsの話があるけど、
ちょっとコードが複雑で追い切れてない。
with_scopeみたいにブロックの範囲内じゃなく、
任意のタイミングでscopeの開始、終了したいときは、
こんな感じでinstance_evalでscopet_methodsに
scopeをpush,popするだけでいいのかな。

def my_scope
{
:find => {:conditions => ["name <> ?", "name1"] }
}
end

Page.instance_eval do
 self.scoped_methods << my_scope
end

pages = Page.find(:all)

Page.instance_eval do
 self.scoped_methods.pop
end
0040nobodyさん2008/11/13(木) 01:38:23ID:vZzK0dow
Mac OS X 10.5でMacPortsで入れたapache2とrubyとgemで、
passengerを入れて、apache2を自動起動にして、
OSをリブートすると、apache2の自動起動に失敗するようです。

ログイン後、
$ sudo apachectrl start
だと、ちゃんと起動するのですが。

httpd.confから、passenger絡みの記述を削除すれば、正常に自動起動します。

何が悪いのでしょう。。。
0041nobodyさん2008/11/13(木) 10:22:29ID:???
>>40

Hope this helps.

code.google.com/p/phusion-passenger/issues/detail?id=131

>The following code change resolves the problem on my machine:

>1. Edit ext/apache2/Hooks.cpp
>2. Go to the function 'init_module'.
>3. Change 'delete hooks;' to '// delete hooks;'
>4. Reinstall Passenger.
0042nobodyさん2008/11/13(木) 11:53:31ID:???
vi使ってる人って、Terminal でvi使ってるの?
それとも、viアプリケーションみたいなのがあるの?
Emacsだと、Terminalでも使えるけど、最近はウィンドウアプリケーションとして使ってる人が多いよね。CarbonEmacsとか。
同じように、viでもウィンドウアプリケーションがあるのかな。
0043nobodyさん2008/11/13(木) 12:09:13ID:???
私はTeraTermから
0044nobodyさん2008/11/13(木) 13:18:40ID:???
ActiveRecordの話なんだけど、
たとえば「会社」に「倉庫」が必ず1つあって、
そこで「商品」を扱う場合、

class company < ActiveRecord::Base
has_one :storage
end

class storage < ActiveRecord::Base
belongs_to :company
has_many :goods
end

class goods < ActiveRecord::Base
belongs_to :storage
end

ってなると思うんだけど。
倉庫自体はとくに固有のデータは持たなくて、
ActiveRecordの操作系メソッドが欲しいだけなんけど、
storagesテーブルは作成しなくちゃならないのかな。

モデル上、会社が直接商品を操作するんじゃなくて
手続きの集合としての倉庫クラスを置きたいんだけどさ。
0045nobodyさん2008/11/13(木) 21:31:38ID:???
>>42
Gtk+を使ったものがあるね。gVim。
0046nobodyさん2008/11/13(木) 21:33:30ID:???
>>44
会社オブジェクトにその手続きを持たせても構わないんじゃないの?
「現実にあるモノとそれらの関係」をそのままモデル化する必要はない。

0047nobodyさん2008/11/13(木) 21:34:48ID:???
module StorageOperations
end

class Company < AR::Base
include StorageOperations
end
とか。
0048442008/11/13(木) 23:46:39ID:???
>>46,47
なるほどねー。
手続きはまとめたいので、Moduleでやってみることにします。
ありがとう!
0049nobodyさん2008/11/14(金) 03:14:57ID:???
>>34
vimとscreenとbashでやってる。
macだからTerminal.app上で。
rails.vimはいれてるけど、使かわなくなってる。てか使いこなせてない。

まわりに使ってる人もいないし、
emacsやほかのエディタと比較してどうかはわからない。

0050nobodyさん2008/11/14(金) 03:29:40ID:???
Merbどうすか?
思ったよりメモリ食うイメージがあって手を出してないんですが
0051nobodyさん2008/11/14(金) 10:27:06ID:???
まだ情報少ないし、これからって感じかな。
趣味で試すには面白そう。
でも仕事はRailsかな。
チームのみんながある程度習熟してないと困るし。
0052nobodyさん2008/11/14(金) 17:04:20ID:???
rubyフレームワークが増えるとRailsの開発にも刺激になってよさそうですね
0053nobodyさん2008/11/14(金) 20:01:15ID:???
簡単なアプリで比べたけどMerbもrailsも
メモリーの使用量は変らない。
1プロセス、35MB以上くう。
railsはメモリーくいすぎ。
0054nobodyさん2008/11/14(金) 22:57:38ID:???
>>42
Terminalだね。WindowsからPoderosaでLinuxにアクセスしてる。
0055nobodyさん2008/11/14(金) 23:44:05ID:???
何がメモリくってんのかな。
rubyが悪いのか、ActiveRecordがわるいのか、ActionPackか?
PHPでなんかしらのフレームワーク使った場合と比べてどうなんすかね
0056nobodyさん2008/11/16(日) 03:32:41ID:???
バイナリのカラムを検索するいい方法はないでしょうか。
  create_table :hosts do |t|
    t.binary :macaddr, :limit => 6
    t.string :hostname
  end
のようなテーブルを作って、MACアドレスをバイナリで保存する処理を考えているのですが、
  Host.find_by_macaddr(mac_bin)
のようにMACアドレスで検索しようとしたらログに
  ActiveRecord::StatementInvalid: SQLite3::SQLException: unrecognized token: "'": SELECT * FROM "hosts" WHERE ("hosts"."macaddr" = '')  LIMIT 1
と出力され、うまくいきません。
  Host.find_by_macaddr(ActiveRecord::ConnectionAdapters::SQLiteColumn.string_to_binary(mac_bin))
のようにすることで一応動くのですが。
0057nobodyさん2008/11/17(月) 00:52:51ID:???
質問スレが見当たらなかったのでこちらで失礼します。
RailsでURLをクリックした時に、そのURLをcontorollerに渡す方法はありますか?
URLは、link_to title,urlで生成されているものです。
0058nobodyさん2008/11/17(月) 03:21:33ID:???
>>57
コントローラではrequest.url、request.request_uriあたりじゃね?
何が返るのかは定義を見ること。

# 実は referr?er だったり……
0059nobodyさん2008/11/18(火) 01:48:36ID:???
routesの書き方、という意味なら
「URLをパラメータにする Rails」あたりでぐぐる
0060572008/11/21(金) 03:55:17ID:???
>>58,59
そんなやり方があったのですね、どうもありがとうございます。
重ねてまた聞きたいのですが、外部のサイトに飛びつつactionも呼ぶことって出来ますか?
具体的に言うと、yahooの検索apiから結果を取得してresultsに入れたものを
view上で
<% @results.each do |result| %>
<li><%= link_to result.Title, result.ClickUrl %></li>
<% end %>
のように書き、このリンクをクリックした時にactionを呼び出して、そこでrequest.urlを使って色々とやりたいのですが。。
0061nobodyさん2008/11/21(金) 11:39:00ID:???
>>60
redirectでいいんじゃね?
「HTTP redirect」でぐぐってみて。
0062nobodyさん2008/11/21(金) 21:49:12ID:???
>>60
コントローラの中で @results が得られて、それをビューで一覧。
ビューに示されたリンクを辿ると最終的に該当URLに飛ぶ、ということか。

コントローラに
def goto
redirect_to params[:url] # 値に対してなんらかの検証をしたほうがいいかも。
end
みたいなリダイレクト専用アクションを用意して
<%= link_to h(result.Title), :action => 'goto', :url => result.ClickUrl %>

JavaScriptが使えるならクライアントサイドのみで
<%= link_to_function h(result.Title), %Q|location.href="#{result.ClickUrl}"| %>
とかも可能かも。
0063nobodyさん2008/11/22(土) 04:30:32ID:???
クリックされたリンクをロギングしたいってことだよね。
なら >>61-62 みたいに、リダイレクトが一番素直でしょ。
でもこれだと訪問済リンク問題がでるから、これを避けたい場合 >>62 みたいにJavaScriptを使うことになる。
Googleの検索結果ページは後者だよね。
0064nobodyさん2008/11/22(土) 06:12:17ID:???
さすがに location.href の書き換え先が対象URLじゃぁアクションは起こらないな。
<%= link_to_remote h(result.Title), :url => { :action => 'goto', :url => result.ClickUrl } %>
か?
0065nobodyさん2008/11/22(土) 21:19:46ID:???
上手く説明できるかどうか分からんしRubyスレ行きかもしれんが、質問。

migrationしてデータベースと Hoge modelだけ作って、
./script/console からデータベースをいじってる。
hoge = Hoge.new() してhoge.name = hage などしてデータを入れて、
hoge.save をした。
その後 hoge2 = Hoge.find(:all, :conditions=>"name = hage") をして
データを呼び出したんだが、これが array クラスになってしまって、
hoge2.name で hage を呼び出せない。
要は Hoge.find で呼び出したデータを簡単に Hoge クラスとして扱いたい。

どうしたらいいのか教えてほしい。
0066nobodyさん2008/11/22(土) 21:48:48ID:???
find :all しているのでArrayになる。条件に該当するオブジェクトを全部取得するので。

name = "hage" がユニークなら、Hoge.find(:first, :conditions => ["name => ?", "hage"]) や
Hoge.find_by_name("hage") とすればいい。

あるいは、仕様上 name = "hage" のオブジェクトが複数存在するなら、
hoges = Hoge.find(:all, :conditions=>"name = hage")
hoges.each{|hoge| do_something} と複数のオブジェクトに対して順に処理すればいい。
0067nobodyさん2008/11/22(土) 22:02:19ID:???
一個も無い時の返り値にも違いがあるのでご注意あれ
0068nobodyさん2008/11/23(日) 01:08:31ID:???
1個しかなくても:allなら配列で [ hage ] が返るってことだな。
0069nobodyさん2008/11/23(日) 04:16:51ID:???
質問させてください。環境はrails 2.2.2です。

http://www.tutorialspoint.com/ruby-on-rails-2.1/index.htm
を参考に初めてrailsやってるんですが、
http://www.tutorialspoint.com/ruby-on-rails-2.1/rails-views.htm
まできて、 /book/list にアクセスした際に、「テンプレートが無い」ではなく、「uninitialized constant BookController::Book」となりました。
見た感じ、BookControllerというクラスにBookなんて変数無い、と見えたので、BookControllerのlistメソッドを下記のように変更したら、次に勧めました
def list
+ @books = Books.find(:all)
- @books = Book.find(:all)
end

これはチュートリアルの間違いですか?それとも2.1と2.2.2の違いですか?
0070nobodyさん2008/11/23(日) 06:20:47ID:???
ls app/modelsして、そこにあるファイルの内容を貼ってみて。
0071nobodyさん2008/11/23(日) 06:22:06ID:???
たぶんあなたが
ruby script/generate Book とすべきところを
ruby script/generate Books としてしまったのではないかと思うのだが。
0072nobodyさん2008/11/23(日) 06:23:02ID:???
modelが抜けた。
0073nobodyさん2008/11/23(日) 13:43:37ID:???
>>70-72
app/modelsにbooks.rbがあるのと、コマンド履歴に>71がありました。
どう見てもtypoです。本当にありがとうございました。
0074nobodyさん2008/11/24(月) 02:00:37ID:???
皆さんどこでrails覚えましたか?
0075nobodyさん2008/11/24(月) 03:10:41ID:???
ベッドの上よ。うっふん
0076nobodyさん2008/11/24(月) 13:43:36ID:???
http://guides.rubyonrails.org/index.html
入門向けコーナーができたらしい
0077nobodyさん2008/11/25(火) 16:25:16ID:???
>>66
遅くなりましたが、ありがとうございます。解決しました。
0078nobodyさん2008/11/25(火) 17:37:28ID:???
validationしたときのエラー情報は、どこに保存されてますか?
model? controller? それともどっか別の場所?
0079nobodyさん2008/11/25(火) 18:49:48ID:???
>>78
ActiveRecord::Errorsオブジェクト。
validate対象オブジェクトのerrorsメソッドで取り出せる。
validateを自分で定義したりvalidates_eachの場合は
errors.addで自分でエラーを突っ込む必要がある。

http://api.rubyonrails.org/classes/ActiveRecord/Validations.html
http://api.rubyonrails.org/classes/ActiveRecord/Errors.html
0080nobodyさん2008/11/25(火) 19:54:59ID:???
>>79
ちょーさんくす
あいしてる
0081nobodyさん2008/11/26(水) 16:26:48ID:???
Merbが徐々に盛り上がってきましたね
0082nobodyさん2008/11/26(水) 22:20:54ID:???
Engine Yardの懐具合によっては開発スピード落ちるかもしれんね。
0083nobodyさん2008/11/27(木) 14:54:31ID:???
Rubyってスタンドアロンのアプリ作れる?
0084nobodyさん2008/11/27(木) 15:41:55ID:???
>>81
>Merbが徐々に盛り上がってきましたね
どのへんで?
0085nobodyさん2008/11/27(木) 22:36:19ID:???
>>83
想定しているモノが行き違っている気はするが、作れる。
>>84
アンテナ低すぎ。

0086nobodyさん2008/11/28(金) 04:24:33ID:???
>>82
rubiniusは縮小らしいですからね…

ところでRails画像アップロードプラグインって今もFile_columnが最強ですかね?
0087nobodyさん2008/11/28(金) 15:14:55ID:???
Merbのrailsに対するメリットって何?
0088nobodyさん2008/11/28(金) 16:09:21ID:???
>>85
>アンテナ低すぎ。
Railsはメディアが取り上げたりしてるから、盛り上がってるのはわかる。
でもMerbは個人のブログでその名をちょくちょく見かける程度で、どうみても盛り上がってるようにはみえない。
だから、どこでMerbが盛り上がってるのか聞いたんだけど?アンテナ高い>>85が教えてくれ。
0089nobodyさん2008/11/28(金) 16:14:38ID:???
Merbは先日1.0がリリースされたんで国内外のブログが取り上げただけだろ。
Merbにするメリットってあんまりないきがする。
0090nobodyさん2008/11/28(金) 18:14:03ID:???
MyModel.transaction do
end
だけれど、これってどのモデルのtransactionメソッド呼ぼうが
違いは無いという認識でよい?
テーブル毎にトランザクションの単位がかわるわけではないし。
0091nobodyさん2008/11/29(土) 12:20:47ID:???
railsって流行ってるみたいだけどどうやったら使えるの?
0092nobodyさん2008/11/29(土) 15:14:54ID:???
>>91
おまいにはムリ

というレスが明日までに10はつくであろう
0093nobodyさん2008/11/29(土) 20:11:35ID:???
rails 2.2.2でマイグレーションについて質問させてください。
booksテーブルを作成し、カラムを追加する手順です。

■booksテーブルを作成
./script/generate model Book

■booksテーブルにカラム作成するためにファイル編集
vi db/migrate/20081129110040_create_books.rb

class CreateBooks < ActiveRecord::Migration
 def self.up
  create_table :books do |t|
    t.string   :title
  end
 end

以下略

■DB作成
rake db:create

■migrate
rake db:migrate

booksテーブルが出来る。カラムはidとtitleのみ
0094nobodyさん2008/11/29(土) 20:12:29ID:???
続き

■booksテーブルにnameカラムを追加するためにファイル編集
./script/generate migration books_add_name

vi db/migrate/20081129110451_books_add_name.rb

class BooksAddName < ActiveRecord::Migration
 def self.up
   add_column(:books, :name, :text, :default=>'')
 end

 def self.down
   ramove_column(:books, :name)
 end
end

■migrate
rake db:migrate


ここまででbooksテーブルを作成し、カラム追加ができるのですが、以下が疑問です。
・booksテーブル作成時、 ./script/generate model Book のように「Book」と単数形で実行したのに、何故出来上がるのは「books」という複数形なのか
・そもそもスキーマを変更する手順はこれで合っているか

以上をよろしくお願いします・・
0095nobodyさん2008/11/29(土) 20:17:49ID:???
CoC。テーブル名は複数形

ファイル編集せずに
$ ./script/generate model Book title:string name:text
とかやった方がいいよ。
なんでnameがtextなのか知らんけど。

本番になるまではテーブルなんて壊し放題なんだから
add_columnとかするよりも元のファイル書き換えて
$ rake db:migrate VERSION=0
$ rake db:migrate
で作り直しちゃった方が良い。
0096nobodyさん2008/11/29(土) 20:51:55ID:???
>>95
> CoC。テーブル名は複数形

「設定より規約」で、「テーブル名は複数形、そのテーブルを扱うモデルは単数形」というルールがあるから、
自動的に複数形になるってことですか?

> ファイル編集せずに

ファイル編集した理由が、
http://www.tutorialspoint.com/ruby-on-rails-2.1/rails-active-records.htm
に従ったからなんですが、開発時のスキーマ定義は普通generateの引数に取るものなのですか?
開発時の常識とか、普通はこうする、とかを全然知らないので分からないので、変なところがあれば指摘してもらえると助かります。

参考に、redmineと9arrowsのソースを見たのですが、redmineはスキーマ変更用のマイグレーションファイルがたくさんあって、
9arrowsはスキーマ作成用のしかなかったので、95氏のいうような手法のようです。

> 本番になるまではテーブルなんて壊し放題なんだから

確かに開発時はその方法の方がスマートですね。
本番になった後にスキーマ変更したい場合なのですが、>94の方法は変なことをやっていますか?
0097nobodyさん2008/11/29(土) 21:41:46ID:???
それ自体は全然変じゃないよ。
本番になった後はもちろんそうする。

ただスキーマ定義はgenerateの引数の方が手っ取り早いかな。
generateしたあとでファイル開いて編集するの面倒だし。

あと、generateコマンド使うと勝手に複数形になってしまうので
そういうもんだと思った方がいい。
generateコマンド使わないなら、テーブル名を単数形にすることもできる。

class Book < ActiveRecord::Base
 set_table_name 'book'
end
0098nobodyさん2008/11/29(土) 23:10:10ID:???
>>97
勉強になりました、ありがとうございます。
0099nobodyさん2008/11/29(土) 23:40:23ID:???
質問です。今作ってるWebアプリでユーザ管理をしようと思っています。
そのために下記のページを参考にしているのですが、暗号の作り方
の部分がいまいちよく分かりません。
ttp://d.hatena.ne.jp/nyaago69/20080904/1220519371
特にdef self.new_salt の中身が分かりません。
rand.to_s.tr('+', '.') と書いてありますが、randを使ってる限り
その中に+が入り込むことはないと思いますし、
s[0, if s.size > 32 then 32 else s.size end]
は何をやっているのか分かりません。
解説をお願いします。
0100nobodyさん2008/11/30(日) 00:19:54ID:???
randはわからんが・・・

「s[0, if s.size > 32 then 32 else s.size end]」は
RubyのStringには「self[nth, len]」という書式があって、
文字列のnthバイト目から長さlenバイト目までの部分文字列を新しく作って返す
よって質問文の意味は、sの最初から32バイト以上ならsの32バイト分、それ以下ならsを返すという意味になる
ていうかこんな書き方できるんですね、勉強になりマスタ
0101nobodyさん2008/11/30(日) 00:39:29ID:???
>>100
ありがとうございます。自分はてっきり配列を作るときのtypoかと思ってました。
0102nobodyさん2008/11/30(日) 00:58:12ID:???
>>86
新顔でPaperclipというのが出た。
http://www.thoughtbot.com/projects/paperclip/

attachment_fuから乗り換えた人の記事。
http://thewebfellas.com/blog/2008/11/2/goodbye-attachment_fu-hello-paperclip
0103nobodyさん2008/11/30(日) 01:53:51ID:???
rakeでconfigsというテーブルを作った際、初期データも入れようと思って
カラム定義の次に Config.create() したら「createなんてメソッド無いよ」と言われ、
どー見ても合ってるのにと思ってしばらく悩んだ結果、
Config がrailsの予約語だったからのようなのですが(confにしたらテーブル作成に加えcreateもできたので)、
予約語に使われている語はテーブルにすら使ってはいけませんか?
0104nobodyさん2008/11/30(日) 01:59:30ID:???
たしかAdminもダメだったような気がする
0105dai2008/11/30(日) 08:55:02ID:mlKxK2ns
actives_caffoldについてご教示下さい。
2つのmodelを定義して、片方にだけ{カラム名}_columnを指定しようとした
のですが、同じカラム名を使っていると両方のmodelに適用されてしまうの
は仕様でしょうか。

例えば、
ruby script/generate model aaa title:string name:string
ruby script/generate model bbb title:string name:string
のようにmodelを生成し、各controllerにactivescaffoldの設定を行った後
にaaa_helper.rbにのみtitle_columnを設定。
------------
class AaaController < ApplicationController
active_scaffold :aaa do |config|
     :
------------
module AaaHelper
def title_column(record)
link_to(h(record.title), :action=>:●●●)
end
end
------------
こうすると、title_columnを設定していないbbbのtitleにもlink_toが適用
されてしまいます。
(ruby1.8.6、rails2.0.2、activescaffold1.1.1)
0106nobodyさん2008/11/30(日) 11:11:34ID:???
質問です。
日付を保存するのにDateクラスを使ってます。
このDateクラスのデータを上手く使ってweeks.agoなどの
演算をしたいのですが、どのようにすればいいのか分かりません。
よろしくお願いします。
0107nobodyさん2008/11/30(日) 13:07:05ID:???
Date.tody - 2.weeks
じゃだめってこと?
0108nobodyさん2008/11/30(日) 13:47:31ID:???
>>107
その方法で出来ました。
メソッドだけで完結せねばという思い込みが頭にありました。
ありがとうございます。
0109nobodyさん2008/11/30(日) 14:56:43ID:???
質問です。今ARの勉強をしています。
Magazine_titleというモデルとMagazineというモデルを作りました。
それぞれ以下のような関係性を持たせています。

class MagazineTitle < ActiveRecord::Base
has_many :magazines
end

class Magazine < ActiveRecord::Base
belongs_to :magazine_title
end

ここで、MagazineTitleのパラメータ次第で、Magazineの
パラメータを設定したいと考えています。具体的には、
magazine_title.cycle == "weekly" であった場合、
magazie.sale_close_date = magazine.sale_date + 1.weeks
としたいのです。
これを出来ればmodelでやりたいのですが、
そのような方法はあるでしょうか?
それともcontorollerでやる方が適切でしょうか?

どうかご助言をお願いします。
0110nobodyさん2008/11/30(日) 15:06:05ID:???
大乳児^H^H^H代入時に固有の動作をさせたいなら
メソッドを定義してしまえばいいんじゃない?

class Magazine
def magazine_title=(mt)
write_attribute(:matazine_title, mt)
write_attribute(:sale_close_date, sale_date + 1.week)
end
end

0111nobodyさん2008/11/30(日) 15:07:23ID:???
あれ、1つめのwrite_attributeはwrite_attribute(:magazine_title_id, mt.id) か。
0112nobodyさん2008/12/03(水) 11:06:41ID:???
windowsに開発環境をセットアップする手順を
詳しく丁寧に教えてください。
0113nobodyさん2008/12/03(水) 11:15:31ID:???
やっぱubuntuでいいや
0114nobodyさん2008/12/03(水) 21:40:37ID:???
>>112
Instant Rails
0115nobodyさん2008/12/04(木) 13:49:56ID:ORX+Oq69
webrickを起動するとアクセスログがコンソールに出力され続けますが、
これをコンソールじゃなくてファイルに出力するにはどうしたらよいのでしょうか?
0116nobodyさん2008/12/04(木) 20:12:28ID:???
>>115
$ script/server > /dev/null 2>&1
じゃね?
01171152008/12/04(木) 20:40:28ID:ORX+Oq69
>>116
$ script/server > /tmp/test.log 2>&1
としても/tmp/test.logに出力されなかったです
0118nobodyさん2008/12/04(木) 22:28:19ID:???
>>117
こちらの環境ではファイルに出力されますねぇ。
(バッファされるので時間差があるけど。)

というかlog/development.logではだめなんですか。
01191152008/12/05(金) 12:07:03ID:KklI24b5
>>118
/tmp/test.logは作成されますが、中身が空のままになります
時間差ってどれ位ですか?

log/development.logだと、何時にどこからどんなmethodで
どんなリクエストがあってどんなステータスコードを返したかとかが
わからないので、WEBrickが吐き出すログが欲しいんです
0120nobodyさん2008/12/05(金) 18:54:48ID:???
webrickのアクセスログはサーバインスタンス生成時に設定する
svr = WEBrick::HTTPServer.new(:AccessLog=>設定内容}
詳しくはリファレンスマニュアルとソース読め
railsでどのファイルをいじればいいかは知らん
0121nobodyさん2008/12/06(土) 00:13:43ID:???
mongrel入れてみたら分かるんじゃないかな。
WEBrickほとんど動かしてないからあれだけど。
mongrelのlog/development.logならお望みのものは分かるような。

0122nobodyさん2008/12/06(土) 00:23:19ID:???
(ログファイル指定とオプション設定)
/ruby/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands\servers\webrick.rb
(paramsらへん)
/ruby/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/webrick_server.rb

結局はlog4rとか使うのがよいのかも
使ったことないけど
0123nobodyさん2008/12/07(日) 02:47:53ID:???
>>115
環境は?
OS(じつはwindows?)とかシェル(じつはcsh?)とか分かれば
アドバイスもらえるんじゃね?

うちでは普通にリダイレクトできるけど。
Mac OS X/bash/Rails 2.1.2。
0124nobodyさん2008/12/07(日) 07:09:39ID:???
あれってただの標準エラー出力だよな
01251152008/12/08(月) 16:06:58ID:pc3akaHE
>>123
OS:CentOS 5.2
シェル:bash
この様な環境です

アプリ変えるとかソースいじるとかも解決方法になるのですが、
今出力されているものをファイルに向けるだけだと簡単に解決できるので
リダイレクトで処理したいのですが、なぜかリダイレクトできません…
なぜできないんだろう…
0126nobodyさん2008/12/09(火) 17:03:00ID:???
&2>1 つけた?
0127nobodyさん2008/12/09(火) 17:04:02ID:???
おっと、 2>&1
01281152008/12/09(火) 21:41:09ID:Sc6VNW/K
>>127
# script/server -p 3001 > /tmp/access.log 2>&1

ちゃんと付けてるのですが、やっぱりファイルに書き込まれません…
0129nobodyさん2008/12/09(火) 23:49:50ID:???
>>128
-e production つけてみたらどうだろう
つまりproduction環境で実行する
0130nobodyさん2008/12/10(水) 23:53:47ID:???
マイグレーションするためのファイルを作るとき、例えばbooksテーブルにuser_idを追加するとき、
./script/generate migration add_user_id_to_book user_id:integer
としたらint(11)なuser_idというカラムを追加するようなファイルができたのですが、カラムを複数追加するとき、カラム設定を複数書くとき(user.idにリファレンス張るとか)はどう書いたらいいですか?
0131nobodyさん2008/12/11(木) 00:09:40ID:???
本番運用中じゃなければ、migrationのファイル編集しちゃえば?
そのたびにファイル作ってたら、ファイル数えらい事になる。管理しにくい。

カラム足したりするmigration使うのは本番運用後で良いかと。
■ このスレッドは過去ログ倉庫に格納されています