【Ruby】Ruby on Rails Part6
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/10/24(金) 17:46:53ID:???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/
0082nobodyさん
2008/11/26(水) 22:20:54ID:???0083nobodyさん
2008/11/27(木) 14:54:31ID:???0086nobodyさん
2008/11/28(金) 04:24:33ID:???rubiniusは縮小らしいですからね…
ところでRails画像アップロードプラグインって今もFile_columnが最強ですかね?
0087nobodyさん
2008/11/28(金) 15:14:55ID:???0088nobodyさん
2008/11/28(金) 16:09:21ID:???>アンテナ低すぎ。
Railsはメディアが取り上げたりしてるから、盛り上がってるのはわかる。
でもMerbは個人のブログでその名をちょくちょく見かける程度で、どうみても盛り上がってるようにはみえない。
だから、どこでMerbが盛り上がってるのか聞いたんだけど?アンテナ高い>>85が教えてくれ。
0089nobodyさん
2008/11/28(金) 16:14:38ID:???Merbにするメリットってあんまりないきがする。
0090nobodyさん
2008/11/28(金) 18:14:03ID:???end
だけれど、これってどのモデルのtransactionメソッド呼ぼうが
違いは無いという認識でよい?
テーブル毎にトランザクションの単位がかわるわけではないし。
0091nobodyさん
2008/11/29(土) 12:20:47ID:???0093nobodyさん
2008/11/29(土) 20:11:35ID:???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:???ファイル編集せずに
$ ./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:???> 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
0099nobodyさん
2008/11/29(土) 23:40:23ID:???そのために下記のページを参考にしているのですが、暗号の作り方
の部分がいまいちよく分かりません。
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:???「s[0, if s.size > 32 then 32 else s.size end]」は
RubyのStringには「self[nth, len]」という書式があって、
文字列のnthバイト目から長さlenバイト目までの部分文字列を新しく作って返す
よって質問文の意味は、sの最初から32バイト以上ならsの32バイト分、それ以下ならsを返すという意味になる
ていうかこんな書き方できるんですね、勉強になりマスタ
0102nobodyさん
2008/11/30(日) 00:58:12ID:???新顔で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:???カラム定義の次に Config.create() したら「createなんてメソッド無いよ」と言われ、
どー見ても合ってるのにと思ってしばらく悩んだ結果、
Config がrailsの予約語だったからのようなのですが(confにしたらテーブル作成に加えcreateもできたので)、
予約語に使われている語はテーブルにすら使ってはいけませんか?
0104nobodyさん
2008/11/30(日) 01:59:30ID:???0105dai
2008/11/30(日) 08:55:02ID:mlKxK2ns2つの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:???じゃだめってこと?
0109nobodyさん
2008/11/30(日) 14:56:43ID:???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:???メソッドを定義してしまえばいいんじゃない?
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:???0112nobodyさん
2008/12/03(水) 11:06:41ID:???詳しく丁寧に教えてください。
0113nobodyさん
2008/12/03(水) 11:15:31ID:???0115nobodyさん
2008/12/04(木) 13:49:56ID:ORX+Oq69これをコンソールじゃなくてファイルに出力するにはどうしたらよいのでしょうか?
0117115
2008/12/04(木) 20:40:28ID:ORX+Oq69$ script/server > /tmp/test.log 2>&1
としても/tmp/test.logに出力されなかったです
0118nobodyさん
2008/12/04(木) 22:28:19ID:???こちらの環境ではファイルに出力されますねぇ。
(バッファされるので時間差があるけど。)
というかlog/development.logではだめなんですか。
0119115
2008/12/05(金) 12:07:03ID:KklI24b5/tmp/test.logは作成されますが、中身が空のままになります
時間差ってどれ位ですか?
log/development.logだと、何時にどこからどんなmethodで
どんなリクエストがあってどんなステータスコードを返したかとかが
わからないので、WEBrickが吐き出すログが欲しいんです
0120nobodyさん
2008/12/05(金) 18:54:48ID:???svr = WEBrick::HTTPServer.new(:AccessLog=>設定内容}
詳しくはリファレンスマニュアルとソース読め
railsでどのファイルをいじればいいかは知らん
0121nobodyさん
2008/12/06(土) 00:13:43ID:???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:???環境は?
OS(じつはwindows?)とかシェル(じつはcsh?)とか分かれば
アドバイスもらえるんじゃね?
うちでは普通にリダイレクトできるけど。
Mac OS X/bash/Rails 2.1.2。
0124nobodyさん
2008/12/07(日) 07:09:39ID:???0125115
2008/12/08(月) 16:06:58ID:pc3akaHEOS:CentOS 5.2
シェル:bash
この様な環境です
アプリ変えるとかソースいじるとかも解決方法になるのですが、
今出力されているものをファイルに向けるだけだと簡単に解決できるので
リダイレクトで処理したいのですが、なぜかリダイレクトできません…
なぜできないんだろう…
0126nobodyさん
2008/12/09(火) 17:03:00ID:???0127nobodyさん
2008/12/09(火) 17:04:02ID:???0128115
2008/12/09(火) 21:41:09ID:Sc6VNW/K# script/server -p 3001 > /tmp/access.log 2>&1
ちゃんと付けてるのですが、やっぱりファイルに書き込まれません…
0130nobodyさん
2008/12/10(水) 23:53:47ID:???./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使うのは本番運用後で良いかと。
0132115
2008/12/11(木) 21:22:50ID:R1xyPwhGそれでも挙動は変わらなかったです…
0133nobodyさん
2008/12/12(金) 09:26:25ID:???selectタグが使えません。
<% select "rate", "rate", [["未読", 0],["☆", 5], ["◎", 4], ["○", 3], ["△", 2], ["×", 1]], {:index => i}, :id => "rate_rate_#{i}" %>
の様に書いても、エラーなどは表示されずただselectタグがあるべき部分が
空白になって表示されるだけです。
仕方なしに
<select id="rate_rate_<%=h i %>" name="rate[<%=h i %>][rate]">
<option value="0">未読</option>
<option value="5">☆</option>
<option value="4">◎</option>
<option value="3">○</option>
<option value="2">△</option>
<option value="1">×</option>
</select>
の様に書き、それでちゃんと動くのですが、なぜselectタグが使えないのか
気になって仕方がありません。
一応./script/serverの吐き出すログを見てみたのですが、それも
特にエラーなどは出ていないようです。
どうかご指南お願いします。
0134nobodyさん
2008/12/12(金) 10:18:24ID:???ほんとにこの通りに記述してあるなら、typoだから
0136nobodyさん
2008/12/14(日) 15:27:49ID:???リンクを踏んだらそのページを新規windowで開き、
元のページの方をAjaxで書き変えたいのですが、何か良い方法はありますか?
0137nobodyさん
2008/12/14(日) 15:50:22ID:???うーん思いつかない…
Javascript直書きで何とかできそうだけど方法はわからない
Javascriptスレの方で聞いてみたらどうでしょうか?
0138nobodyさん
2008/12/14(日) 15:52:51ID:???<a href="http://www.google.com" target="_blank" onclick="alert('hello'); return true">click!</a>
<a href="http://www.google.com" target="_blank" onclick="alert('hello'); return false">click!</a>
0139138
2008/12/14(日) 16:15:48ID:???寝ぼけていたらしい。
0140nobodyさん
2008/12/15(月) 23:08:05ID:???モデルで
class Hoge < ActiveRecord::Base
has_many :moges
(略)
class Moge < ActiveRecord::Base
belongs_to :hoge
(略)
とします。そしてコンソールで
1 hg = Hoge.new
2 hg.save
3 mg = Moge.new(:hoge_id => hg.id)
4 mg.save
5 hg.moges << mg
としたときに、どのタイミングでhg.mogesにMogeオブジェクトが
追加されるのでしょうか?
何度かrailsを作るところから試してみたのですが、3の次にhg.mogesの
中にmgが入っていることもあれば、5までしっかり書かないとhg.mogesの
中にmgが入らないときもある気がします。
本当に勘違いみたいな話ですが、どのように書けばどのタイミングで
hg.mogesにMogeオブジェクトが追加されるのでしょう?
0141nobodyさん
2008/12/15(月) 23:20:06ID:???mg = Moge.new
if hg.save
hg.moges << mg # ここでMoge追加、save。:hoge_id => hg.id も自動で付く
end
0142nobodyさん
2008/12/16(火) 14:41:43ID:r+TWFAeS0143nobodyさん
2008/12/16(火) 20:48:01ID:???0144nobodyさん
2008/12/16(火) 23:01:40ID:???そっち方面ではもっと流行ってないのかな・・・
0145nobodyさん
2008/12/16(火) 23:30:50ID:???モデル設計したりするのと違って、全然クリエイティブじゃない作業。
しかも、大方のデザイナにはこれができない(各種helperや, partialがあるから)。
会社にRailsのできるデザイナが居ればいいんだけど。
だから敷居の低いPHPの代替にはならない感じ。
0146nobodyさん
2008/12/16(火) 23:44:45ID:???入門のために買おうとして、amazonレビュー見たらそういう用途には向いてないようですが…
もし他にrails2系を学ぶのに良い入門書があればお勧めお願いします。
0147nobodyさん
2008/12/17(水) 00:03:08ID:???リファレンスみたいなのは1冊あった方が良いよ。
- Ruby on Rails 逆引きクイックリファレンス (マイコミ)
- Railsレシピブック 183の技 (ソフトバンククリエイティブ)
どっちもRails2対応。
本屋で立ち読みでもして、自分に合いそうな方を選ぶと良いかも。
ただし、Railsは更新のスピードが早いので、本の内容はすぐ古くなる。
本に加えてネットで情報を集めるのが吉。
入門書はRails1.x系なら
- はじめようRuby on Rails (アスキー)
が良かったけど、さすがに内容が古くなった。
0149nobodyさん
2008/12/19(金) 12:21:17ID:???http://wota.jp/ac/?date=20081216#p01
「 圧倒的ではないか、我が軍は」
って感じだなw
suggestリクエスト先にでも使ってみるか
所でThin使ってる人いる?
0150nobodyさん
2008/12/19(金) 13:48:58ID:???見られるサーバを立ち上げるコマンドって何だったっけ?
0151150
2008/12/19(金) 13:54:18ID:???gem serverだった。
0152nobodyさん
2008/12/20(土) 10:13:51ID:???emacs-railsとか
rinariとかあるけど
どれがいいわけ?
0154nobodyさん
2008/12/24(水) 15:06:29ID:???http://rubyonrails.org/merb
0155nobodyさん
2008/12/24(水) 15:09:15ID:???http://rubyonrails.org/images/pages/merb/lori.jpg
0156nobodyさん
2008/12/24(水) 17:46:07ID:???lighttpdから乗り換えようかと思って弄ってる
所で、Apache互換のアクセスログの吐き方知らね?
gettext使ってるからlighttpdだとエラー出るしで困る、どうにかなれ!
>>155
こwれwはwwwww
0157nobodyさん
2008/12/24(水) 20:31:31ID:???ラジオボタンをファンクショナルテストする方法はどうすればいいですか?
◎都内 ○都外
getでテストデータ呼び出して、きちんと都内が選択されているかどうかを調べたいです。
0158nobodyさん
2008/12/25(木) 01:06:25ID:???それって、
<input type="radio" name="tonai" value="true" />都内
<input type="radio" name="tonai" value="false" />都外
みたいになってるのであれば、
# 都内が選択されている
assert(params[:tonai] == 'true')
という感じで良いのでは?
0159nobodyさん
2008/12/25(木) 22:57:54ID:???User.count(:group =>ここに2つ以上書く方法が分かりません。
どなたかご存知の方いませんか???
0160nobodyさん
2008/12/25(木) 23:02:01ID:???:group => 'x, y'
実はここに書いた値はそのまま "GROUP BY #{値}" されるだけ。
:order も同じ要領で DESC とか付けられるよ。
0161nobodyさん
2008/12/25(木) 23:19:55ID:???うぉぉ、ありがとうございます!!!!!!!!!!
0163nobodyさん
2008/12/30(火) 17:57:38ID:???お勧めのレンタルサーバってありますか???
(皆様はどこのサーバを使ってますか??)
0164nobodyさん
2008/12/30(火) 18:17:55ID:???Dreamhost
ドメイン、サブドメイン、MySQLが無制限に使える。
Passenger(mod_rails)がプリインストールでドメインごとに切替えられる。
SVNもプリインストールでコンパネから操作可。Capistranoでデプロイ可能。
結構安い。
なんて事書くと、アフィリエイトコード貼ると思っただろ?
貼らないよ。
0165163
2008/12/30(火) 19:31:32ID:???本当に、ありがとうございます!!
海外のレンタルサーバなんですね。
海外サイトでクレジット番号を入力したことがなくて。。。。
(へたれですみません。)
国内でもいいのがないかググってみます。
0166nobodyさん
2008/12/31(水) 11:42:26ID:???0167nobodyさん
2008/12/31(水) 15:59:48ID:9mZRkEaM無料でやりたいなら、自宅サーバがいいよ。
0168nobodyさん
2008/12/31(水) 17:50:14ID:???動かすだけならさくら供用・Xreaでもおk(ただし激遅)
Dreamhostは海外の超有名大手だから心配しなくてもおk
現実的な速度で動かしたいならVPSかな
でもRails環境作るの結構しんどいよー
0169nobodyさん
2008/12/31(水) 20:54:39ID:???いくつもサービス上げてるけど、環境づくりに苦労したことは無いなぁ
0170nobodyさん
2008/12/31(水) 22:57:58ID:9mZRkEaM0171nobodyさん
2009/01/01(木) 00:59:28ID:???他は一切知らんけど
0172nobodyさん
2009/01/01(木) 09:54:20ID:???アプリのディプロイは以前はlightyだmongrelだと面倒だったが
今はたいていpassengerでいいから劇的に楽になった。
0173nobodyさん
2009/01/01(木) 10:53:45ID:???0174nobodyさん
2009/01/01(木) 11:08:14ID:???0175nobodyさん
2009/01/01(木) 17:25:43ID:???http://www.moongift.jp/2008/11/ruby_on_rails_portable/
http://sourceforge.net/project/showfiles.php?group_id=230695
のサイトから Ruby on Rails Portable を落として使ってみてるのですが、
コンソールからRubyのコマンドは返ってくるのですが、Railsのコマンド
が返って来ないみたいな、例えば一番単純な、rails の後にファイル名で
プロジェクトの作成とかも返って来ないのですが、
何かチューニングしなきゃダメなんですかね?
0176nobodyさん
2009/01/01(木) 20:08:28ID:???0180nobodyさん
2009/01/02(金) 00:59:46ID:0xasvExc本番環境はLinuxが良いけど。
0181175
2009/01/02(金) 04:17:35ID:???どうやら「環境変数でパスを通して下さい」みたいな感じのことが書いてあるので
自分が置いてるD:\RailsPortable(Use)の場所をRailsに教えなきゃいけない
のかな?と思い、マイコンピュータのプロパティからシステム変数の修正でパスを
選んで
;D:\RailsPortable(Use)\App\Rails\bin\rails
と付け加えたのですがRailsは動きません
根本的に何か違うのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています