【Ruby】Ruby on Rails Part6 at PHP
【Ruby】Ruby on Rails Part6 - 暇つぶし2ch21:nobodyさん
08/11/01 13:41:28
インスタンスメソッドとして定義してるんじゃね?


22:19
08/11/02 03:33:36
このようにメソッドにselfを付けるとうまくいきました

class User < ActiveRecord::Base
 def self.clean
  
 end
end

これがインスタントメソッドなのでしょうか
script/runnerやscript/consoleから呼び出す場合はselfを付けるとうまくいっています
ただ、一部self無しでも動く場合もあるんですよね
勉強して出直してきます!ありがとうございました

23:nobodyさん
08/11/02 13:04:46
>>22で定義したのはクラスメソッド。
>>21は、インスタンスメソッドとして定義してる*から動かない*んじゃね?と言っている。で、それが当たったわけだな。


24:nobodyさん
08/11/02 14:14:30
>>23
そうですね、21さんの言葉をきっかけになんとなくselfを付けてみました
Railsはクラスやメソッドを意識しなくてもそれなりに動くものが作れる反面、
自分はRubyについて何もわかってないんだなーと再認識させられました


25:nobodyさん
08/11/02 21:25:49
ほんとにレベル低い質問で申し訳ないんですが、
=> Booting WEBrick...
=> Rails 2.1.2 application started on URLリンク(0.0.0.0:3000)<)で見れないのって何ででしょうか?

一応動いていたapache2はとめました。

OSはdebian4.0です。
# gem list
/usr/bin/gem:14:Warning: Gem::manage_gems is deprecated and will be removed on or after March 2009.
*** LOCAL GEMS ***
actionmailer (2.1.2)
actionpack (2.1.2)
activerecord (2.1.2)
activeresource (2.1.2)
activesupport (2.1.2)
rails (2.1.2)
rake (0.8.3)
#
一行目の警告がでたので
gem install -v=2.1.2 rails
しました。

どなたかご教示いただければ助かります。
よろしくお願いいたします。

26:25
08/11/02 22:30:43
>>25
rebootで解決しました。
ブラウザがクラッシュしてたようです。
お騒がせいたしました。

27:nobodyさん
08/11/06 02:38:58 uZzb8Dww
さーせん。1つ質問です。

ActiveRecordのhas_many使って
1対多のテーブル関係を持つ(親-子)
form_forを使用してデータをhtml表示させたいんですが

<%= f.text_field :name %>
みたいな感じで、親は表示できるのですが
子を表示させる方法で躓いています。

<%= f.text_field :子のカラム名 %>
のような方法で出力できるかと思ったのですが
うまくいきません。

どなたか、お願いします。

28:nobodyさん
08/11/06 22:03:36
>>27
つ fields_for


29:27
08/11/07 00:12:42 F8NNnS0m
>>28
おおおお!ありがとう!!

you will go to heaven!!

30:nobodyさん
08/11/09 10:33:14
postgreでやってるのだが、db:migrateすると
idカラム生成の時にシーケンステーブルも自動生成しましたといった
NOTICEメッセージがダラダラ出てうざいです。
NOTICE消す方法ってありますか?


31:nobodyさん
08/11/10 05:39:35
Djangoやzopeと比べたRoRのメリットは何があるのでしょうか

32:nobodyさん
08/11/10 07:09:29
>>31
pythonを学習する必要が無い

33:nobodyさん
08/11/10 19:32:15
>>31
求人が多いこと。
すでにDjangoやZopeをマスターしているなら、乗り換える必要性はないと思うけど。

34:nobodyさん
08/11/12 19:14:27
viでRails開発している人っている?
つか、みんなどんなエディタ使ってる?
#定期的に出る話題だとおもうけど、すまんのう。

35:nobodyさん
08/11/12 20:21:19
Emacsだよ
vi使ってる人もたくさんいると思うけどvi使うのが不便なのかい?

36:nobodyさん
08/11/12 21:41:34
netbeansはどうだろう

37:nobodyさん
08/11/12 21:42:52
vim/emacs/TextMate/EmEditorを状況によって使い分けてる。
マカーなので一番多いのはTextMateだがな。

最近NetBeansもお試し中。


38:nobodyさん
08/11/13 00:23:40
vim + ruby-modeで開発してるよ。rails.vimすら使ってない。
色づけとソース整形ができれば十分。

39:nobodyさん
08/11/13 00:50:35
Aptana。1日1回は落ちるけど。
URLリンク(wota.jp)
URLリンク(d.hatena.ne.jp)
この辺に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

40:nobodyさん
08/11/13 01:38:23 vZzK0dow
Mac OS X 10.5でMacPortsで入れたapache2とrubyとgemで、
passengerを入れて、apache2を自動起動にして、
OSをリブートすると、apache2の自動起動に失敗するようです。

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

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

何が悪いのでしょう。。。

41:nobodyさん
08/11/13 10:22:29
>>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.

42:nobodyさん
08/11/13 11:53:31
vi使ってる人って、Terminal でvi使ってるの?
それとも、viアプリケーションみたいなのがあるの?
Emacsだと、Terminalでも使えるけど、最近はウィンドウアプリケーションとして使ってる人が多いよね。CarbonEmacsとか。
同じように、viでもウィンドウアプリケーションがあるのかな。

43:nobodyさん
08/11/13 12:09:13
私はTeraTermから

44:nobodyさん
08/11/13 13:18:40
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テーブルは作成しなくちゃならないのかな。

モデル上、会社が直接商品を操作するんじゃなくて
手続きの集合としての倉庫クラスを置きたいんだけどさ。

45:nobodyさん
08/11/13 21:31:38
>>42
Gtk+を使ったものがあるね。gVim。


46:nobodyさん
08/11/13 21:33:30
>>44
会社オブジェクトにその手続きを持たせても構わないんじゃないの?
「現実にあるモノとそれらの関係」をそのままモデル化する必要はない。



47:nobodyさん
08/11/13 21:34:48
module StorageOperations
end

class Company < AR::Base
include StorageOperations
end
とか。


48:44
08/11/13 23:46:39
>>46,47
なるほどねー。
手続きはまとめたいので、Moduleでやってみることにします。
ありがとう!

49:nobodyさん
08/11/14 03:14:57
>>34
vimとscreenとbashでやってる。
macだからTerminal.app上で。
rails.vimはいれてるけど、使かわなくなってる。てか使いこなせてない。

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



50:nobodyさん
08/11/14 03:29:40
Merbどうすか?
思ったよりメモリ食うイメージがあって手を出してないんですが

51:nobodyさん
08/11/14 10:27:06
まだ情報少ないし、これからって感じかな。
趣味で試すには面白そう。
でも仕事はRailsかな。
チームのみんながある程度習熟してないと困るし。

52:nobodyさん
08/11/14 17:04:20
rubyフレームワークが増えるとRailsの開発にも刺激になってよさそうですね

53:nobodyさん
08/11/14 20:01:15
簡単なアプリで比べたけどMerbもrailsも
メモリーの使用量は変らない。
1プロセス、35MB以上くう。
railsはメモリーくいすぎ。

54:nobodyさん
08/11/14 22:57:38
>>42
Terminalだね。WindowsからPoderosaでLinuxにアクセスしてる。

55:nobodyさん
08/11/14 23:44:05
何がメモリくってんのかな。
rubyが悪いのか、ActiveRecordがわるいのか、ActionPackか?
PHPでなんかしらのフレームワーク使った場合と比べてどうなんすかね

56:nobodyさん
08/11/16 03:32:41
バイナリのカラムを検索するいい方法はないでしょうか。
  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))
のようにすることで一応動くのですが。


57:nobodyさん
08/11/17 00:52:51
質問スレが見当たらなかったのでこちらで失礼します。
RailsでURLをクリックした時に、そのURLをcontorollerに渡す方法はありますか?
URLは、link_to title,urlで生成されているものです。

58:nobodyさん
08/11/17 03:21:33
>>57
コントローラではrequest.url、request.request_uriあたりじゃね?
何が返るのかは定義を見ること。

# 実は referr?er だったり……


59:nobodyさん
08/11/18 01:48:36
routesの書き方、という意味なら
「URLをパラメータにする Rails」あたりでぐぐる


60:57
08/11/21 03:55:17
>>58,59
そんなやり方があったのですね、どうもありがとうございます。
重ねてまた聞きたいのですが、外部のサイトに飛びつつactionも呼ぶことって出来ますか?
具体的に言うと、yahooの検索apiから結果を取得してresultsに入れたものを
view上で
<% @results.each do |result| %>
<li><%= link_to result.Title, result.ClickUrl %></li>
<% end %>
のように書き、このリンクをクリックした時にactionを呼び出して、そこでrequest.urlを使って色々とやりたいのですが。。

61:nobodyさん
08/11/21 11:39:00
>>60
redirectでいいんじゃね?
「HTTP redirect」でぐぐってみて。

62:nobodyさん
08/11/21 21:49:12
>>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}"| %>
とかも可能かも。


63:nobodyさん
08/11/22 04:30:32
クリックされたリンクをロギングしたいってことだよね。
なら >>61-62 みたいに、リダイレクトが一番素直でしょ。
でもこれだと訪問済リンク問題がでるから、これを避けたい場合 >>62 みたいにJavaScriptを使うことになる。
Googleの検索結果ページは後者だよね。


64:nobodyさん
08/11/22 06:12:17
さすがに location.href の書き換え先が対象URLじゃぁアクションは起こらないな。
<%= link_to_remote h(result.Title), :url => { :action => 'goto', :url => result.ClickUrl } %>
か?


65:nobodyさん
08/11/22 21:19:46
上手く説明できるかどうか分からんし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 クラスとして扱いたい。

どうしたらいいのか教えてほしい。

66:nobodyさん
08/11/22 21:48:48
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} と複数のオブジェクトに対して順に処理すればいい。

67:nobodyさん
08/11/22 22:02:19
一個も無い時の返り値にも違いがあるのでご注意あれ

68:nobodyさん
08/11/23 01:08:31
1個しかなくても:allなら配列で [ hage ] が返るってことだな。


69:nobodyさん
08/11/23 04:16:51
質問させてください。環境はrails 2.2.2です。

URLリンク(www.tutorialspoint.com)
を参考に初めてrailsやってるんですが、
URLリンク(www.tutorialspoint.com)
まできて、 /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の違いですか?

70:nobodyさん
08/11/23 06:20:47
ls app/modelsして、そこにあるファイルの内容を貼ってみて。


71:nobodyさん
08/11/23 06:22:06
たぶんあなたが
ruby script/generate Book とすべきところを
ruby script/generate Books としてしまったのではないかと思うのだが。


72:nobodyさん
08/11/23 06:23:02
modelが抜けた。


73:nobodyさん
08/11/23 13:43:37
>>70-72
app/modelsにbooks.rbがあるのと、コマンド履歴に>71がありました。
どう見てもtypoです。本当にありがとうございました。

74:nobodyさん
08/11/24 02:00:37
皆さんどこでrails覚えましたか?

75:nobodyさん
08/11/24 03:10:41
ベッドの上よ。うっふん

76:nobodyさん
08/11/24 13:43:36
URLリンク(guides.rubyonrails.org)
入門向けコーナーができたらしい

77:nobodyさん
08/11/25 16:25:16
>>66
遅くなりましたが、ありがとうございます。解決しました。

78:nobodyさん
08/11/25 17:37:28
validationしたときのエラー情報は、どこに保存されてますか?
model? controller? それともどっか別の場所?

79:nobodyさん
08/11/25 18:49:48
>>78
ActiveRecord::Errorsオブジェクト。
validate対象オブジェクトのerrorsメソッドで取り出せる。
validateを自分で定義したりvalidates_eachの場合は
errors.addで自分でエラーを突っ込む必要がある。

URLリンク(api.rubyonrails.org)
URLリンク(api.rubyonrails.org)

80:nobodyさん
08/11/25 19:54:59
>>79
ちょーさんくす
あいしてる

81:nobodyさん
08/11/26 16:26:48
Merbが徐々に盛り上がってきましたね

82:nobodyさん
08/11/26 22:20:54
Engine Yardの懐具合によっては開発スピード落ちるかもしれんね。

83:nobodyさん
08/11/27 14:54:31
Rubyってスタンドアロンのアプリ作れる?

84:nobodyさん
08/11/27 15:41:55
>>81
>Merbが徐々に盛り上がってきましたね
どのへんで?

85:nobodyさん
08/11/27 22:36:19
>>83
想定しているモノが行き違っている気はするが、作れる。
>>84
アンテナ低すぎ。



86:nobodyさん
08/11/28 04:24:33
>>82
rubiniusは縮小らしいですからね…

ところでRails画像アップロードプラグインって今もFile_columnが最強ですかね?

87:nobodyさん
08/11/28 15:14:55
Merbのrailsに対するメリットって何?

88:nobodyさん
08/11/28 16:09:21
>>85
>アンテナ低すぎ。
Railsはメディアが取り上げたりしてるから、盛り上がってるのはわかる。
でもMerbは個人のブログでその名をちょくちょく見かける程度で、どうみても盛り上がってるようにはみえない。
だから、どこでMerbが盛り上がってるのか聞いたんだけど?アンテナ高い>>85が教えてくれ。


89:nobodyさん
08/11/28 16:14:38
Merbは先日1.0がリリースされたんで国内外のブログが取り上げただけだろ。
Merbにするメリットってあんまりないきがする。

90:nobodyさん
08/11/28 18:14:03
MyModel.transaction do
end
だけれど、これってどのモデルのtransactionメソッド呼ぼうが
違いは無いという認識でよい?
テーブル毎にトランザクションの単位がかわるわけではないし。

91:nobodyさん
08/11/29 12:20:47
railsって流行ってるみたいだけどどうやったら使えるの?

92:nobodyさん
08/11/29 15:14:54
>>91
おまいにはムリ

というレスが明日までに10はつくであろう

93:nobodyさん
08/11/29 20:11:35
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のみ

94:nobodyさん
08/11/29 20:12:29
続き

■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」という複数形なのか
・そもそもスキーマを変更する手順はこれで合っているか

以上をよろしくお願いします・・

95:nobodyさん
08/11/29 20:17:49
CoC。テーブル名は複数形

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

本番になるまではテーブルなんて壊し放題なんだから
add_columnとかするよりも元のファイル書き換えて
$ rake db:migrate VERSION=0
$ rake db:migrate
で作り直しちゃった方が良い。


96:nobodyさん
08/11/29 20:51:55
>>95
> CoC。テーブル名は複数形

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

> ファイル編集せずに

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

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

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

確かに開発時はその方法の方がスマートですね。
本番になった後にスキーマ変更したい場合なのですが、>94の方法は変なことをやっていますか?

97:nobodyさん
08/11/29 21:41:46
それ自体は全然変じゃないよ。
本番になった後はもちろんそうする。

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

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

class Book < ActiveRecord::Base
 set_table_name 'book'
end


98:nobodyさん
08/11/29 23:10:10
>>97
勉強になりました、ありがとうございます。

99:nobodyさん
08/11/29 23:40:23
質問です。今作ってるWebアプリでユーザ管理をしようと思っています。
そのために下記のページを参考にしているのですが、暗号の作り方
の部分がいまいちよく分かりません。
URLリンク(d.hatena.ne.jp)
特にdef self.new_salt の中身が分かりません。
rand.to_s.tr('+', '.') と書いてありますが、randを使ってる限り
その中に+が入り込むことはないと思いますし、
s[0, if s.size > 32 then 32 else s.size end]
は何をやっているのか分かりません。
解説をお願いします。

100:nobodyさん
08/11/30 00:19:54
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を返すという意味になる
ていうかこんな書き方できるんですね、勉強になりマスタ

101:nobodyさん
08/11/30 00:39:29
>>100
ありがとうございます。自分はてっきり配列を作るときのtypoかと思ってました。

102:nobodyさん
08/11/30 00:58:12
>>86
新顔でPaperclipというのが出た。
URLリンク(www.thoughtbot.com)

attachment_fuから乗り換えた人の記事。
URLリンク(thewebfellas.com)

103:nobodyさん
08/11/30 01:53:51
rakeでconfigsというテーブルを作った際、初期データも入れようと思って
カラム定義の次に Config.create() したら「createなんてメソッド無いよ」と言われ、
どー見ても合ってるのにと思ってしばらく悩んだ結果、
Config がrailsの予約語だったからのようなのですが(confにしたらテーブル作成に加えcreateもできたので)、
予約語に使われている語はテーブルにすら使ってはいけませんか?

104:nobodyさん
08/11/30 01:59:30
たしかAdminもダメだったような気がする

105:dai
08/11/30 08:55:02 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)


106:nobodyさん
08/11/30 11:11:34
質問です。
日付を保存するのにDateクラスを使ってます。
このDateクラスのデータを上手く使ってweeks.agoなどの
演算をしたいのですが、どのようにすればいいのか分かりません。
よろしくお願いします。

107:nobodyさん
08/11/30 13:07:05
Date.tody - 2.weeks
じゃだめってこと?

108:nobodyさん
08/11/30 13:47:31
>>107
その方法で出来ました。
メソッドだけで完結せねばという思い込みが頭にありました。
ありがとうございます。

109:nobodyさん
08/11/30 14:56:43
質問です。今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でやる方が適切でしょうか?

どうかご助言をお願いします。

110:nobodyさん
08/11/30 15:06:05
大乳児^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



111:nobodyさん
08/11/30 15:07:23
あれ、1つめのwrite_attributeはwrite_attribute(:magazine_title_id, mt.id) か。


112:nobodyさん
08/12/03 11:06:41
windowsに開発環境をセットアップする手順を
詳しく丁寧に教えてください。

113:nobodyさん
08/12/03 11:15:31
やっぱubuntuでいいや

114:nobodyさん
08/12/03 21:40:37
>>112
Instant Rails

115:nobodyさん
08/12/04 13:49:56 ORX+Oq69
webrickを起動するとアクセスログがコンソールに出力され続けますが、
これをコンソールじゃなくてファイルに出力するにはどうしたらよいのでしょうか?

116:nobodyさん
08/12/04 20:12:28
>>115
$ script/server > /dev/null 2>&1
じゃね?

117:115
08/12/04 20:40:28 ORX+Oq69
>>116
$ script/server > /tmp/test.log 2>&1
としても/tmp/test.logに出力されなかったです

118:nobodyさん
08/12/04 22:28:19
>>117
こちらの環境ではファイルに出力されますねぇ。
(バッファされるので時間差があるけど。)

というかlog/development.logではだめなんですか。

119:115
08/12/05 12:07:03 KklI24b5
>>118
/tmp/test.logは作成されますが、中身が空のままになります
時間差ってどれ位ですか?

log/development.logだと、何時にどこからどんなmethodで
どんなリクエストがあってどんなステータスコードを返したかとかが
わからないので、WEBrickが吐き出すログが欲しいんです


120:nobodyさん
08/12/05 18:54:48
webrickのアクセスログはサーバインスタンス生成時に設定する
svr = WEBrick::HTTPServer.new(:AccessLog=>設定内容}
詳しくはリファレンスマニュアルとソース読め
railsでどのファイルをいじればいいかは知らん

121:nobodyさん
08/12/06 00:13:43
mongrel入れてみたら分かるんじゃないかな。
WEBrickほとんど動かしてないからあれだけど。
mongrelのlog/development.logならお望みのものは分かるような。



122:nobodyさん
08/12/06 00:23:19
(ログファイル指定とオプション設定)
/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とか使うのがよいのかも
使ったことないけど

123:nobodyさん
08/12/07 02:47:53
>>115
環境は?
OS(じつはwindows?)とかシェル(じつはcsh?)とか分かれば
アドバイスもらえるんじゃね?

うちでは普通にリダイレクトできるけど。
Mac OS X/bash/Rails 2.1.2。


124:nobodyさん
08/12/07 07:09:39
あれってただの標準エラー出力だよな

125:115
08/12/08 16:06:58 pc3akaHE
>>123
OS:CentOS 5.2
シェル:bash
この様な環境です

アプリ変えるとかソースいじるとかも解決方法になるのですが、
今出力されているものをファイルに向けるだけだと簡単に解決できるので
リダイレクトで処理したいのですが、なぜかリダイレクトできません…
なぜできないんだろう…

126:nobodyさん
08/12/09 17:03:00
&2>1 つけた?

127:nobodyさん
08/12/09 17:04:02
おっと、 2>&1

128:115
08/12/09 21:41:09 Sc6VNW/K
>>127
# script/server -p 3001 > /tmp/access.log 2>&1

ちゃんと付けてるのですが、やっぱりファイルに書き込まれません…

129:nobodyさん
08/12/09 23:49:50
>>128
-e production つけてみたらどうだろう
つまりproduction環境で実行する

130:nobodyさん
08/12/10 23:53:47
マイグレーションするためのファイルを作るとき、例えばbooksテーブルにuser_idを追加するとき、
./script/generate migration add_user_id_to_book user_id:integer
としたらint(11)なuser_idというカラムを追加するようなファイルができたのですが、カラムを複数追加するとき、カラム設定を複数書くとき(user.idにリファレンス張るとか)はどう書いたらいいですか?


131:nobodyさん
08/12/11 00:09:40
本番運用中じゃなければ、migrationのファイル編集しちゃえば?
そのたびにファイル作ってたら、ファイル数えらい事になる。管理しにくい。

カラム足したりするmigration使うのは本番運用後で良いかと。


132:115
08/12/11 21:22:50 R1xyPwhG
>>129
それでも挙動は変わらなかったです…

133:nobodyさん
08/12/12 09:26:25
質問です。
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の吐き出すログを見てみたのですが、それも
特にエラーなどは出ていないようです。
どうかご指南お願いします。

134:nobodyさん
08/12/12 10:18:24
> <% select "rate",...
ほんとにこの通りに記述してあるなら、typoだから

135:133
08/12/12 10:36:53
>>134
typoでした。お恥ずかしい…orz。
ありがとうございました。

136:nobodyさん
08/12/14 15:27:49
ひどく抽象的な質問で答えにくいかもしれませんが
リンクを踏んだらそのページを新規windowで開き、
元のページの方をAjaxで書き変えたいのですが、何か良い方法はありますか?

137:nobodyさん
08/12/14 15:50:22
>>136
うーん思いつかない…
Javascript直書きで何とかできそうだけど方法はわからない
Javascriptスレの方で聞いてみたらどうでしょうか?

138:nobodyさん
08/12/14 15:52:51
ひんと

<a href="URLリンク(www.google.com)<)" target="_blank" onclick="alert('hello'); return false">click!</a>


139:138
08/12/14 16:15:48
あれ、違いが出ないな。
寝ぼけていたらしい。


140:nobodyさん
08/12/15 23:08:05
勘違いかもしれない話の、質問です。
モデルで
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オブジェクトが追加されるのでしょう?

141:nobodyさん
08/12/15 23:20:06
hg = Hoge.new
mg = Moge.new

if hg.save
hg.moges << mg # ここでMoge追加、save。:hoge_id => hg.id も自動で付く
end


142:nobodyさん
08/12/16 14:41:43 r+TWFAeS
流行らないみたいだね。出るのが遅すぎたかな

143:nobodyさん
08/12/16 20:48:01
俺たちこいつと出会うのが遅すぎたよね


144:nobodyさん
08/12/16 23:01:40
Javaの代替手段でなくPHPの代替手段になって欲しいんだがなー
そっち方面ではもっと流行ってないのかな・・・


145:nobodyさん
08/12/16 23:30:50
Railsはデザインはめるのが辛い。
モデル設計したりするのと違って、全然クリエイティブじゃない作業。
しかも、大方のデザイナにはこれができない(各種helperや, partialがあるから)。
会社にRailsのできるデザイナが居ればいいんだけど。

だから敷居の低いPHPの代替にはならない感じ。


146:nobodyさん
08/12/16 23:44:45
実践railsって本はどうでしょうか?
入門のために買おうとして、amazonレビュー見たらそういう用途には向いてないようですが…
もし他にrails2系を学ぶのに良い入門書があればお勧めお願いします。

147:nobodyさん
08/12/17 00:03:08
入門書はともかく、
リファレンスみたいなのは1冊あった方が良いよ。

- Ruby on Rails 逆引きクイックリファレンス (マイコミ)
- Railsレシピブック 183の技 (ソフトバンククリエイティブ)

どっちもRails2対応。
本屋で立ち読みでもして、自分に合いそうな方を選ぶと良いかも。
ただし、Railsは更新のスピードが早いので、本の内容はすぐ古くなる。
本に加えてネットで情報を集めるのが吉。

入門書はRails1.x系なら
- はじめようRuby on Rails (アスキー)
が良かったけど、さすがに内容が古くなった。


148:nobodyさん
08/12/18 03:22:44
>>147
ありがとうございますた

149:nobodyさん
08/12/19 12:21:17
Rails Metal
URLリンク(wota.jp)

「 圧倒的ではないか、我が軍は」
って感じだなw
suggestリクエスト先にでも使ってみるか


所でThin使ってる人いる?

150:nobodyさん
08/12/19 13:48:58
RoRのリファレンスをローカルの8808番だか8088番だかポートで
見られるサーバを立ち上げるコマンドって何だったっけ?

151:150
08/12/19 13:54:18
自己解決。
gem serverだった。

152:nobodyさん
08/12/20 10:13:51
emacs使ってる人、
emacs-railsとか
rinariとかあるけど
どれがいいわけ?

153:nobodyさん
08/12/20 17:02:47
>>152
自分で試してみて、しっくりするものを使えばいいと思う。

154:nobodyさん
08/12/24 15:06:29
合体するそうです。
URLリンク(rubyonrails.org)


155:nobodyさん
08/12/24 15:09:15
なんか色々と酷いのが混じってるなwwww

URLリンク(rubyonrails.org)

156:nobodyさん
08/12/24 17:46:07
>>149
lighttpdから乗り換えようかと思って弄ってる
所で、Apache互換のアクセスログの吐き方知らね?
gettext使ってるからlighttpdだとエラー出るしで困る、どうにかなれ!

>>155
こwれwはwwwww

157:nobodyさん
08/12/24 20:31:31
すいません。教えてください。
ラジオボタンをファンクショナルテストする方法はどうすればいいですか?

◎都内 ○都外

getでテストデータ呼び出して、きちんと都内が選択されているかどうかを調べたいです。

158:nobodyさん
08/12/25 01:06:25
>>157
それって、
<input type="radio" name="tonai" value="true" />都内
<input type="radio" name="tonai" value="false" />都外
みたいになってるのであれば、

# 都内が選択されている
assert(params[:tonai] == 'true')

という感じで良いのでは?



159:nobodyさん
08/12/25 22:57:54
ActiveRecordで GROUP BY を複数する方法が分かりません。。。。

User.count(:group =>ここに2つ以上書く方法が分かりません。

どなたかご存知の方いませんか???

160:nobodyさん
08/12/25 23:02:01
>>159

:group => 'x, y'

実はここに書いた値はそのまま "GROUP BY #{値}" されるだけ。
:order も同じ要領で DESC とか付けられるよ。


161:nobodyさん
08/12/25 23:19:55
>> 160 さんへ

うぉぉ、ありがとうございます!!!!!!!!!!

162:nobodyさん
08/12/25 23:36:57
>>158

うまくいきました!!
ありがとうございました。


163:nobodyさん
08/12/30 17:57:38
正月休みに ruby on rails を習得して社内の人にみせたいんですけど
お勧めのレンタルサーバってありますか???
(皆様はどこのサーバを使ってますか??)

164:nobodyさん
08/12/30 18:17:55
>>163
Dreamhost
ドメイン、サブドメイン、MySQLが無制限に使える。
Passenger(mod_rails)がプリインストールでドメインごとに切替えられる。
SVNもプリインストールでコンパネから操作可。Capistranoでデプロイ可能。
結構安い。

なんて事書くと、アフィリエイトコード貼ると思っただろ?
貼らないよ。

165:163
08/12/30 19:31:32
>>164
本当に、ありがとうございます!!
海外のレンタルサーバなんですね。

海外サイトでクレジット番号を入力したことがなくて。。。。
(へたれですみません。)

国内でもいいのがないかググってみます。

166:nobodyさん
08/12/31 11:42:26
意味がわからない。

167:nobodyさん
08/12/31 15:59:48 9mZRkEaM
Railsの場合、root権がもらえるVPSプランがおすすめ。国内なら安いところで月額3000~6000円。
無料でやりたいなら、自宅サーバがいいよ。

168:nobodyさん
08/12/31 17:50:14
>>165
動かすだけならさくら供用・Xreaでもおk(ただし激遅)
Dreamhostは海外の超有名大手だから心配しなくてもおk
現実的な速度で動かしたいならVPSかな

でもRails環境作るの結構しんどいよー

169:nobodyさん
08/12/31 20:54:39
どこがしんどいのか分からない
いくつもサービス上げてるけど、環境づくりに苦労したことは無いなぁ

170:nobodyさん
08/12/31 22:57:58 9mZRkEaM
たぶんmakeやApacheという単語を知らない人には厳しいというニュアンスなんじゃない?

171:nobodyさん
09/01/01 00:59:28
redhat系ならyumで相当楽
他は一切知らんけど

172:nobodyさん
09/01/01 09:54:20
環境作りでめんどいところはとくにない。
アプリのディプロイは以前はlightyだmongrelだと面倒だったが
今はたいていpassengerでいいから劇的に楽になった。


173:nobodyさん
09/01/01 10:53:45
最近のpassengerは安定してきたの?

174:nobodyさん
09/01/01 11:08:14
37signalsが使うくらいには。

175:nobodyさん
09/01/01 17:25:43
すみません、RubyもRailsも初心者です

URLリンク(www.moongift.jp)
URLリンク(sourceforge.net)

のサイトから Ruby on Rails Portable を落として使ってみてるのですが、
コンソールからRubyのコマンドは返ってくるのですが、Railsのコマンド
が返って来ないみたいな、例えば一番単純な、rails の後にファイル名で
プロジェクトの作成とかも返って来ないのですが、
何かチューニングしなきゃダメなんですかね?


176:nobodyさん
09/01/01 20:08:28
URLリンク(jp.rubyist.net)

177:nobodyさん
09/01/01 22:49:49
>>175
RubyにおいてプラットフォームにWindowsを選ぶ時点で
無用なハードルを1つ増やすようなもの。


178:nobodyさん
09/01/01 22:59:45
>>177
馬鹿じゃね

179:nobodyさん
09/01/01 23:15:36
>>177
氏ぬの?

180:nobodyさん
09/01/02 00:59:46 0xasvExc
開発環境や勉強用途ならWindowsはアリだと思う。
本番環境はLinuxが良いけど。

181:175
09/01/02 04:17:35
展開したRuby on Rails Portable の ReadMeをGoogle翻訳してみると
どうやら「環境変数でパスを通して下さい」みたいな感じのことが書いてあるので
自分が置いてるD:\RailsPortable(Use)の場所をRailsに教えなきゃいけない
のかな?と思い、マイコンピュータのプロパティからシステム変数の修正でパスを
選んで 
;D:\RailsPortable(Use)\App\Rails\bin\rails
と付け加えたのですがRailsは動きません
根本的に何か違うのでしょうか?  

182:nobodyさん
09/01/02 04:34:17
>>181
パスを通してなかったのか?
環境変数に通すパスはRailsのある(略)\binまでで良いよ

てか現状パスは通っているんだよな?
プロンプトでset PathするなりirbでENVでパス通ってるの確認できる状態なん?

183:nobodyさん
09/01/02 04:47:55
>>181

rubyは動いてるから飛ばします。パス設定はしてあるようなので

rails -vでバージョン出ない?
出たらパス通ってる。

出なかったら次はプロンプトで
cd (おまいのRailsインスコしたディレクトリ)\binに移動して
上に書いたrails -vでバージョン出る?
ここで表示されるなら単純にパス設定をミスってるだけ。

ここでも出なかったらrails再インスコして上記を再度やる。

投稿から時間たってるし、ここに書いた事くらいはやってるよな?
やって動かないの認識でエスパー募集でおk?

184:175
09/01/02 09:28:43
おはようございます。
Ruby on Rails Portable ←(Portable)を Dドライブに展開しただけなので
Railsはインストールしてません。ただ同じようにインストールしてないRuby
の方はコンソールから ruby-vでバージョン出るので動いてるんですよ。

>>183 >>182
とりあえず Rails -v が返ってくるところを cd/ して見つけて
見つかったらそこにパスを通せば良いんですよね?

Ruby on Rails Portable の Railsがどこかにあるんだと思いますが
よく解りません。とりあえず今から出かけるので帰ってからまた探してみます。



185:nobodyさん
09/01/02 10:32:02
>>184

>ただ同じようにインストールしてないRuby
>の方はコンソールから ruby-vでバージョン出るので動いてるんですよ。

インストールしていなければ、このような動きはしないぞ。
以前にRubyを入れた事があるんじゃないのか?
ActiveScriptRubyとか。
ちなみにgem -vでバージョン出たりしないか?
その場合、gem install railsでインストールできるからそれでOKだろ。
Portableを使いたいのではなく、Railsを使いたいんでしょ?

186:nobodyさん
09/01/02 10:52:25
>>184
>Railsはインストールしてません。
>ただ同じようにインストールしてないRubyの方はコンソールから ruby-vでバージョン出るので動いてるんですよ。

ん??
インスコしてないのにruby -vで動作してるっておかしくね?
以前に入れた?もしくは展開しただけって言ってるけど普通にインスコしてんじゃね?

>Ruby on Rails Portable の Railsがどこかにあるんだと思いますがよく解りません。

自分でインスコ(してなく展開だけだっけ?)したのにどこのディレクトリ(フォルダ)に
あるのかわからん状態で>>181で環境変数に追加して動作しないって言ってたのか??

パスがどこかわかなん状態で適当にパスを追加したって動作しないくらいはわかるよな?
適当に追加 = そこには何も無い(奇跡でパスが当れば良いね) <- こんな感じですよ。

展開だけにしたにしろrailsが壊れてないならcd (展開したディレクトリ)に移動してrails -vで返答はある。
単にRailsを使いたいなら>>185のやり方が一番楽じゃないかなと思う。

187:185
09/01/02 11:11:00 VbNvKLaT
>>184
さっきのは忘れてくれ。
念のため、Portable試してみたら、確かに同じ状況を確認できた。
Portableは使った事がないから気づかなかった。
展開したディレクトリ直下のRailsPortable.exeを実行すると、
rubyとgemにパスが通った状態のコマンドプロンプトが起動する。
ここでは確かにruby -vは実行できる。
しかし、rails -vでパスが通っていないというエラーが出る。
(実際には、rails.cmdへパスが通っているのだが)

RailsPortable\App\Rails\bin以下に
rails.cmdとrailsというファイルがあってここが問題。
この中身を見れば何やっているか分かるはずだけど、初心者じゃ無理かも。
railsの中身は省略するけど、ただのrubyスクリプト。
で、修正するべきなのは、rails.cmdのほう。

rails.cmdの内容
--------------------------
@ruby "/PortableApps/RailsPortable/App/Rails/bin/rails" %*
--------------------------

zipを展開すると、RailsPortableというディレクトリになるから、初期状態では動くはずがない。
@ruby "/RailsPortable/App/Rails/bin/rails" %*
にしないと動かない。
もし、Dドライブに置くのであれば、D:/を付ける必要があるかも。
gemとかrakeも全部こんな調子だから、正直Portableはおすすめできない。
というかこんなの使いたくないなw

188:nobodyさん
09/01/02 11:14:52 l8SeDnaW
>>187
おまい優しいなw

189:nobodyさん
09/01/02 11:17:33
で昨日から返答してた奴らは>>187みたく動くか確認してやらなかったのがバレたなwww

190:nobodyさん
09/01/02 11:51:32
C:/PortableApps の下で RailsPortable を展開すれば良かっただけじゃね?


191:nobodyさん
09/01/02 11:53:31
>>181 = >>175
WindowsにおいてインストールディレクトリにD:を選ぶ時点で
無用なハードルを1つ増やすようなもの。

192:nobodyさん
09/01/02 11:56:26
インストール先は個人の自由だけどさ
Railsを試すのが今回の目的っぽいし>>190の言うように
展開しとけば問題無かったんじゃないの?


193:nobodyさん
09/01/02 12:04:37
素人は大人しくVMWareインスコしてLinux使ってなさいってことだな


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch