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

【Ruby】Ruby on Rails Part7

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2009/04/30(木) 23:07:27ID:???
■前 Ruby on Rails のスレ が
http://pc11.2ch.net/test/read.cgi/php/1224838013/

■参考サイト
<英語>
本家: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 35
http://pc12.2ch.net/test/read.cgi/tech/1238194350/
Ruby 初心者スレッド Part 27
http://pc12.2ch.net/test/read.cgi/tech/1238632943/l50
0002nobodyさん2009/04/30(木) 23:09:01ID:???
■変遷
【Agile】Ruby on rails相談所【DRY】
http://pc8.2ch.net/test/read.cgi/php/1118663500/
【Agile】Ruby on rails相談所 part2【DRY】
http://pc10.2ch.net/test/read.cgi/php/1151254378/
【Ruby】Ruby on Rails Part3
http://pc11.2ch.net/test/read.cgi/php/1170760209/

↓ム板に

Ruby on Rails
http://pc11.2ch.net/test/read.cgi/tech/1191381506/

↓

Ruby on Rails のスレ が
http://pc11.2ch.net/test/read.cgi/php/1207425569/
↓
イマココ

0003nobodyさん2009/04/30(木) 23:10:32ID:???
次スレ

【Ruby】Ruby on Rails Part7
http://pc11.2ch.net/test/read.cgi/php/1241100447/
000432009/04/30(木) 23:15:06ID:???
>>3は誤爆です、失礼
0005nobodyさん2009/04/30(木) 23:35:01ID:???
>>1のつづき

現在、RubyはPHPが支配する世界の陰で細々と生活しております
表向きはPHPerで、裏でせっせとrubyっていましょう
0006nobodyさん2009/05/01(金) 01:43:12ID:???
たまにはperlのことも思い出してあげてください
0007nobodyさん2009/05/01(金) 01:43:53ID:???
無理です
0008nobodyさん2009/05/01(金) 21:03:58ID:???
これって、サーバーのroot権限不要で
動作させられるようにならないの?

cakephpはできてるよね?
0009nobodyさん2009/05/01(金) 21:18:21ID:???
お前は何をいってるんだ
0010nobodyさん2009/05/01(金) 21:21:52ID:???
これってさー
サーバーの管理権限がないと
動作が遅すぎて重すぎて、
まともに動かせないんだよね?
0011nobodyさん2009/05/01(金) 21:39:51ID:???
rails対応謳ってる所でも無い限りそう
0012nobodyさん2009/05/01(金) 23:34:29ID:???
cakephpってさ、
サーバーの管理権限なくても
まともなスピードで動くんだよね?
0013nobodyさん2009/05/01(金) 23:41:46ID:???
それはCakePHPのスレで訊いた方がいいんでないかい?
0014nobodyさん2009/05/01(金) 23:43:12ID:???
重い重いと言われ心配したがサクサクじゃん。
これでダメって、最低1日2〜30万PVはあるんだろうな。
0015nobodyさん2009/05/01(金) 23:44:53ID:???
>>12
お前は何を言っているんだ
0016nobodyさん2009/05/02(土) 15:23:45ID:???
共有鯖とか元々重い所で動かそうとしてるだけだろう。
0017nobodyさん2009/05/02(土) 17:02:26ID:???
共有鯖ってfast_cgi使えないことないか?
俺は趣味アプリが完成したらさくらインターネットの専用サーバ借りる予定。
月8,000円くらいだったかな。

0018nobodyさん2009/05/02(土) 18:07:46ID:???
共有鯖で使えるところはみかけるけど、ちょっと負荷かけるとダメポになるとかそんなんばっかだ
0019nobodyさん2009/05/02(土) 21:12:12ID:???
なんでcakephpは管理者権限ないところでも
十分なスピードで動くのに、
ruby on railshs動かないの?
0020nobodyさん2009/05/02(土) 22:39:50ID:???
膨大な量のクラスをロードするから起動に時間がかかる。
一度ロードしてしまえばそれなりに動くが、単純なCGIではそうもいかない。
0021nobodyさん2009/05/02(土) 22:55:09ID:???
管理者権限があるサーバーでは
なぜ動作が速くなるの?
0022nobodyさん2009/05/02(土) 23:47:51ID:???
「管理者権限があるサーバー」ってVPSのこと言ってるのだろうか
聞き方があまりにも幼稚すぎて答える気にならんな
社会性のかけらも感じられない
0023nobodyさん2009/05/02(土) 23:55:00ID:???
痛いところを突かれるとしどろもどろになるなんて、
子供みたいでカワイイ
0024nobodyさん2009/05/03(日) 00:06:05ID:rx1Rm2aS
はやくrails3こないかなー
0025nobodyさん2009/05/03(日) 00:11:51ID:???
GWで変なのがわいてきた・・・
0026nobodyさん2009/05/03(日) 02:38:45ID:???
rails楽しいな〜。
GW中開発三昧だ〜。
0027nobodyさん2009/05/03(日) 02:50:14ID:???
さくらのサーバー安いなと思って調べたら、
回線を太くするととたんに高くなるんだな。
10MだったらVPSでも問題ないだろうし微妙だと思った。
0028nobodyさん2009/05/03(日) 06:18:26ID:???
>>19
CGI駆動だとRailsはメチャメチャ重いからだろ

PHPが標準のモジュール駆動だと重いといわれるCakePHPもそこそこ動く
だが、共有レンタルサーバーの多くはphpもCGI駆動だから気をつけれ

Railsをまともn動かす時は、Passengerとか使うのでそうなると、
多くの共有サーバーは入ってないので、管理者権限いるってこと。

ただ、まともにサービスしようとしたら、いろいろ弄る必要があるから、
結局管理者権限ないと話にならんが
0029nobodyさん2009/05/03(日) 07:54:16ID:???
既に回答を貰っているのにそれが理解できずに勝った気になるって痛いな。

0030nobodyさん2009/05/03(日) 10:29:22ID:???
>>19
日本語でおk
0031nobodyさん2009/05/03(日) 14:31:36ID:???
>>27
VPS安いな〜。VPSにしようかな。
0032nobodyさん2009/05/03(日) 14:37:31ID:C26VReX1
VPSでも国内だと高いけどね。
0033nobodyさん2009/05/03(日) 16:53:21ID:???
VPSで2000円くらいのやつ使ってる。たぶん国内だと一番安いくらいかな。
海外だともっと安いのがあるのかもしれないけど、おれは満足してるよ。
ブラウザベースの管理アプリも用意されてて割と便利だし。
0034nobodyさん2009/05/03(日) 21:33:23ID:???
>>33
plz
0035nobodyさん2009/05/03(日) 23:13:01ID:???
プリーズってなにを?plzって初めて見たからぐぐってしまった。
0036nobodyさん2009/05/03(日) 23:30:06ID:???
おそらく、このplzはkwskと翻訳すればいいのではないかと。
0037nobodyさん2009/05/04(月) 00:47:10ID:???
adminってコントローラ作って、管理者が全てのテーブルをメンテナンス
できるような設計にしようと思ってるんだけど、rails的にどうなの?

一般利用者はほとんどのテーブルに対して参照ばっかりだから、
それぞれのコントローラのupdateやdelete、insertを発行するメソッドは
管理者のみ、っていう方法もあるんだけど、どうしたらいいんかな〜。
0038nobodyさん2009/05/04(月) 02:55:49ID:???
adminコントローラ1個だとごちゃごちゃするから
admin/userとか階層作って管理する方法を自分は採用してる。
0039nobodyさん2009/05/04(月) 03:25:03ID:???
>>38
管理用コントローラに、メソッドを追加するっていうこと?
0040382009/05/04(月) 10:34:22ID:MqCVRAIX
>>39
Admin::UserControllerを 作ってlistやdeleteアクションを定義する感じ。
0041nobodyさん2009/05/04(月) 22:11:00ID:???
>>40
ありがとう。37です。
あんま想像つかないけど、そんな方法があるのか。

結局自分は、コントローラとモデルとテーブルを1:1:1になるよう用意することにして、
(コントローラは増えることもあるけど)
各コントローラの参照系以外のメソッドに管理者認証を求めるフィルタを設定した。
0042nobodyさん2009/05/07(木) 15:29:56ID:6IKl0wLq
すいません質問させてください。
カラムがid, user_id, name
のテーブルがあったとして、それのActiveRecord::Baseの継承クラスのインスタンス5つが配列aに格納されているとします。
この配列aの中に、user_idが5であるインスタンスがあった場合それを取り出し、なかった場合nilかfalseを返すような処理を書きたいのですが、どう書くのが一番スマートでしょうか??
ご教示頂けると幸いですm(_ _)m
0043nobodyさん2009/05/07(木) 18:47:11ID:???
>42
まず、あなたなりに書いたらどうなるの?
その後教えてあげます。
0044nobodyさん2009/05/07(木) 21:22:30ID:???
>>42
既にふつうの(=ARのHasManyProxyなどでない)配列になっているっ
てことだよな?
Enumerable#find / detectでも好きに使えばいいじゃん。

0045422009/05/08(金) 00:27:37ID:XobVG3ns
>>44
ありがとうございます!
findの使い方よくわかっていませんでした。。
0046nobodyさん2009/05/09(土) 07:16:53ID:???
>>41
コントローラはnamespace使って管理側とユーザ側で分けた方がよいね
script/generate controller admin::users

routes.rbもnamespace使える
map.namespace(:admin) do |admin|
admin.resources :users
end

0047nobodyさん2009/05/09(土) 07:27:31ID:???
:butyo とか :tanto とか :baito とかもあると統制上便利。
0048nobodyさん2009/05/10(日) 16:27:57ID:???
>>46-47
なるほど・・・。
名前空間でコントローラを整理できることを知らなかった。
ありがとう!

一般ユーザと会員ユーザ、システム管理者からなるシステムを作っているのだけど、
作り直そうか迷うなぁ。

わけた方がすっきりするんだろうけど、一般ユーザと会員ユーザの出来ることは
ほとんど同じなんだよなぁ。
0049nobodyさん2009/05/10(日) 16:38:53ID:???
今すぐに作り直す必要はないと思うよ。
長く運用してると、機能追加などで次第に一般ユーザと会員ユーザの違いが
大きくなっていくので、そのときに整理し直してもいいと思う。
0050nobodyさん2009/05/10(日) 22:14:49ID:???
むしろ意味的・機能的に全く別物でない限り、一般ユーザと会員ユーザはコントローラ分けないほうがいい場合もある
システムごと分離するか、コントローラを分割するか、ユーザのrole機能で対応するかは適材適所やね
0051nobodyさん2009/05/11(月) 00:35:14ID:???
一括だとロールに突っ込めると便利だけど、ロールの使い方知らないと涙目。
0052nobodyさん2009/05/11(月) 21:33:11ID:???
>>49-50
とりあえずそうしてみる。

何回か組んで失敗しないと、理想的なrailsプログラムは組めないと感じた。
0053nobodyさん2009/05/11(月) 23:14:24ID:2slawtRU
Rails + rspec + rspec-rails で開発しています。
Rails 2.1.1 / rspec 1.1.12 / rspec-rails 1.1.12

spec ファイルにおいて、 fixture のデータがロードされたり消されたりする
タイミングがわかりません。

hoges テーブルに対する Hoge というモデルの spec ファイルを作っていて、
以下のようになっています。

describe "○ができること...01"
 fixtures :hoge

 it "A..." do
 end
end

describe "○ができること...02"
 fixtures :hoge_for_some_cases

 it "B..." do
 end
 it "C..." do
 end
end

describe "○ができること...03"
 fixtures :hoge

 it "D..." do
 end
end
0054532009/05/11(月) 23:16:54ID:???
hoges テーブルに対する fixture(ymlファイル) を2種類作っているのですが、
describe "○ができること...02" が走って
fixtures :hoge_for_some_cases がロードされた後、
describe "○ができること...03" の
it "D..." do が動くときに、
fixtures :hoge_for_some_cases で insert されたデータが残っているようです。
これは describe "○ができること...03" で期待する条件とは違うため、テストが失敗します。

○質問1:
fixture によるデータ投入は、spec が起動されるときに一度だけなのか?
fixtures という行を通過する度になるのでしょうか?

# fixtures という行を通過する度に、
# delete from foo と
# hoge.yml の中身の全件 insert が走る?

describe "○ができること...02" のブロックを消し、fixtures :hoge_for_some_cases が動かないようにするれば、
describe "○ができること...01" も
describe "○ができること...03" も動きます。

○質問2:
fixtures :hoge_for_some_cases の中身をfixtures :hoge に書いてしまえばいいのでしょうが、
データ件数が多いため、describe ごとに yml ファイルを分けたいのですが、これは rails 的ではないのでしょうか?

○質問3:
また、ひとつの describe が終わるごとにデータが truncate されるとうれしいのですが、それはどうすればいいのでしょうか?
(これも Rails 的ではない?)

○質問4:
ちなみに spec を実行後に DB の中身を覗くと、レコードが残っているので、これはそういうものみたいですね。
※fixture で投入されたデータのトランザクションと、
 テストメソッドの中で model.save 等で保存されるトランザクションは違う?
0055鉄道教信者{鉄ヲタ(鉄道マニア)}2009/05/12(火) 00:01:43ID:i2JJHx+d
あるレンタル鯖でのトラブル

障害発生期間 :
  2009 年 03 月 06 日

現象 :
 1. 全サービスが使用できない。

原因 :
 ・モデムの電源ケーブルが外れていた。

現在 :
 ・モデムの電源ケーブルを挿し直しました。

hahahaha!
0056nobodyさん2009/05/12(火) 20:34:40ID:???
よくある話
掃除のおばちゃんが掃除機のコンセントがないからと
勝手に電源ケーブル抜いてそのまま忘れて帰るんだよ
0057nobodyさん2009/05/12(火) 20:35:25ID:???
もろひろゆきじゃん
0058nobodyさん2009/05/12(火) 20:36:18ID:8mXS3koF
すいませんちょっとお聞きしたいのですが

if x=='dog'
Dog.find :all
elsif x=='cat'
Cat.find :all
elsif x=='horse'
Horse.find :all
end
0059582009/05/12(火) 20:37:09ID:8mXS3koF
のようなことをしたいんですが、これって一行で書けないでしょうか?
教えて頂けると幸いです。
0060nobodyさん2009/05/12(火) 20:37:20ID:???
fixtureなどさっさと捨ててしまえ
代わりにfactory girlをどうぞ
0061nobodyさん2009/05/12(火) 20:44:51ID:???
一行ったって意味合いが色々あんだろうが

単純に一行にするなら↓
if x == 'dog' then Dog.find :all elsif x == 'cat' then Cat.find:all else Horse.find :all end

モデルに多態性を持たせたいのならSTIかポリモルフィック関連を調べてちょ
0062nobodyさん2009/05/12(火) 20:58:40ID:???
elseとか考えなくて良いなら
x.classify.constantize.find :all
0063nobodyさん2009/05/12(火) 21:02:44ID:???

977 名前:nobodyさん[] 投稿日:2009/04/27(月) 20:17:33 ID:ty2d5Btl
すいません分かりにくかったかもしれないと思ったので書き直します・・

if x='friends'
User.friends
elseif x='pearents'
User.parents
else x='children'
User.childern
end

を一行で書けないか・・みたいな感じです。


978 名前:nobodyさん[sage] 投稿日:2009/04/27(月) 20:24:34 ID:???
User.send(x)

979 名前:nobodyさん[sage] 投稿日:2009/04/27(月) 20:26:28 ID:???
> 977
User.method(x).call

0064582009/05/12(火) 21:04:34ID:8mXS3koF
>>61
>>62
レスありがとうございますm(__)m

>classify.con...
うおぉぉ。。
rubyすごすぎる(笑)
0065nobodyさん2009/05/12(火) 21:18:38ID:???
>>62
xが外部入力だったら超怖い気がするのです…w
フィルタかける方法ないの?
0066nobodyさん2009/05/12(火) 21:29:38ID:???
じゃ、
x.classify.constantize.find(:all) if ["dog", "cat", "horse"].include?(x)
0067nobodyさん2009/05/12(火) 21:36:33ID:???
>>64
ビジネスロジック層で得意げにメタプログラミングを駆使とか絶対やめとけよ・・・
いつか刺されるぞ・・・
0068nobodyさん2009/05/12(火) 21:43:04ID:???
それでソースがすごくすっきりするならいいと思うけど困るときもあるね
「使いたいから使う」みたいなのもたまに見かけるし
0069nobodyさん2009/05/13(水) 05:15:55ID:???
>>50
>ユーザのrole機能
そんな機能があったんかー、しらんかった。pluginかな?
ActiveRecord継承のRoleモデルつくってた。
まだ初めて半年だけど、もう以前の環境(php)には、戻れなウィッシュ。
0070nobodyさん2009/05/13(水) 08:44:50ID:???
単にrole based access controlを実装するという話だと思った。
確かにActiveRbacというプラグインもあるけど。
概念はRails Recipesにも載ってるね。

0071nobodyさん2009/05/16(土) 18:32:34ID:???
よくわかっていない質問ですまないのですが、お聞きください。

こちらのwebベースrailsコンソールのgeneratorプラグインを使ってみようとしているのですが、
eviltrout's kawaii at master - GitHub
http://github.com/eviltrout/kawaii/tree/master


通常のプラグインのインストールのように、

 ruby script/plugin install git://github.com/eviltrout/kawaii.git

とするのではなく、ダウンロードしきて、lib/generatorsに放り込め、とあるのですが、
つまりこれは、lib/generators放り込むところが手動になってしまいます。
こういうのって、上記のようにインストールしただけでgeneratorに組み込めるようなプラグイン側の仕組みってないものでしょうか?

まあ、公式にも別途あるように、一度~/.rails/generatorsにいかに入れとけばいいという話もあるのでしょうが…

kawaii公式のインストール項目抜粋
> 1. Install the Kawaii generator
>
> If you want to generate Kawaii in multiple rails apps:
> Copy the kawaii directory to ~/.rails/generators
>
> To install for one rails app:
> Copy the kawaii directory to your application's lib/generators directory.
> (You might have to create lib/generators yourself.)
0072nobodyさん2009/05/16(土) 18:47:23ID:???
vendor/plugins/プラグイン名/lib/generatorsにファイルがあれば、
generatorとして認識される。
こいつがそういう配置になってないだけ。
0073nobodyさん2009/05/16(土) 23:17:33ID:???
@categories = Category.find(:all, :order => :category)

上記はcategory ascでソートされますが、これをcategory descで
ソートされるようにするのにいい方法はありますでしょうか?
:order => 'category desc' とすれば一応できたのですが、これだと
テーブルのカラム名を直に入力してしまうので、これをやってしまっていいのか迷っています。
よろしくお願いします。
0074nobodyさん2009/05/16(土) 23:28:15ID:???
:orderの値には「SQLの一部」を書くことになっているので、その方法でOK。
シンボルを書けるのは、単にSQLに埋め込むときにシンボルを #to_s した
ものが入るから。

0075nobodyさん2009/05/16(土) 23:37:41ID:???
なるほど、レスさんくす。

通常あり得ないとは思うけど、カラム名が変わったときにシンボルで指定できると
修正が1カ所ですむけど、カラム名直書きしてしまうと、そのカラムが含まれる
すべての箇所を修正しないといけないから、何かスマートな方法あるかなと思っただけなんだ。
0076nobodyさん2009/05/17(日) 00:00:07ID:???
class Category
named_scope :by_category_asc, :order => 'category ASC'
named_scope :by_category_desc, :order => 'cateogry DESC'
end

としておくと、
Category.by_category_desc.find(:all, :conditions => '...')
などと書ける。
パラメータはマージされるので何度もSQLが走るということもない。
0077nobodyさん2009/05/17(日) 00:11:22ID:???
なるほど、ありがとう!
上の方法の方がスマートなので、そっちで書いてみます。
0078nobodyさん2009/05/17(日) 00:18:09ID:???
> カラム名が変わったときにシンボルで指定できると修正が1カ所ですむけど

この意味が分からないのだが、
例えば「category」カラムの名前が「business_category」に変わったとしたら、
その1カ所をどういうふうに修正するの?
0079nobodyさん2009/05/17(日) 00:35:24ID:???
すみません、シンボルをどこかに実体があって、それを
シンボリックリンクのように参照しているものだと妄想してました…。
0080nobodyさん2009/05/17(日) 02:22:44ID:???
>>79
なるほど、了解。自分が知らない重大なことかと思ったよ。
0081nobodyさん2009/05/17(日) 15:05:25ID:???
>>72
なるほどやっぱりそうなんですね。

というか、railsのソース見てて思ったんですが
Rubygemsでも特定の配置にしたら、railsのgeneratorとして読み込んでくれるんですね。
利用者としてはこっちの方が簡単だ。
ちゃんと動くの確認したら、gems化の要望出しときます…。
0082nobodyさん2009/05/17(日) 15:13:57ID:???
ところでアプリケーションテンプレート使ってる?
何となくどんなの使ってるかしりたいんで皿島元々

plugin 'restful-authentication', :git => 'git://github.com/technoweenie/restful-authentication.git'
plugin 'forgot_password', :git => 'git://github.com/greenisus/forgot_password.git'
plugin 'role_requirement', :git => 'git://github.com/timcharper/role_requirement.git'
gem 'mislav-will_paginate', :lib => 'will_paginate', :source => 'http://gems.github.com'
gem 'rubyist-aasm', :lib => 'aasm', :source => 'http://gems.github.com'
gem "capistrano-ext", :lib => "capistrano"
rake("gems:install")
generate("authenticated", "--include-activation", "--aasm", "user", "session")
rake("db:migrate")
generate(:controller, 'welcome', 'index')
route "map.root :controller => 'welcome'"
run "rm public/index.html"
run "rm public/images/rails.png"
file ".gitignore", <<-CODE
.DS_Store
log/*.log
tmp/**/*
db/*.sqlite3
doc/api
doc/app
CODE
run "touch log/.gitignore"
run "touch tmp/.gitignore"
git :init
git :add => "."
git :commit => "-a -m 'Initial commit'"
0083nobodyさん2009/05/17(日) 15:21:02ID:???
いかん。すげー中途半端なテンプレだな。
なにやりたいかってbortぽいのをアプリケーションテンプレート使って作りたいんだけど素人は一からコツコツやれってことだろなぁ。
0084nobodyさん2009/05/17(日) 17:37:58ID:???
>>82
自分はまったく使ってないわ。
そんなに新規で作る事が少ないというのもあるけど、
一から設定するのもそれほど手間じゃないから。

今よく使うのはこんなもんかな。
mislav-will_paginate
jpmobile
postgres
rmagick
i18n_genrators
mongrel
mongrel_cluster
バージョン管理はSubversion。
そのうちgitも試してみたいと思う。

公開する時は、Passengerを使う事が多くなってきたけど、
スペックが低いサーバだとPassengerよりmongrelを複数起動して、
Apacheのproxy_balancerで動かすほうがレスポンス早いので、mongrelもしばらく使うつもり。
0085822009/05/18(月) 00:04:25ID:???
アプリケーションテンプレート集みつけたんで一応はっときますよ
http://github.com/jeremymcanally/rails-templates/tree/master

>>84
確かにPassengerの初回起動は遅いもんなぁ。
mongrel使った事ないから試してみるよ!
0086nobodyさん2009/05/18(月) 00:53:06ID:???
>>85
mongrel 使ったことないということだけど、
普段(ローカルの開発環境) は webrick 使っていて、本番環境は Passenger を使っているの?
0087822009/05/18(月) 01:22:25ID:???
>>86
うん
開発webrickで本番Passenger。
monoで開発してた時も開発XSP本番mod_monoだったなぁ。
なんとなくapacheの方が安定してるのかなぁという思い込みでt
0088nobodyさん2009/05/18(月) 01:24:25ID:???
なぜ今さらMongrel? もう1年くらい開発止まってるでしょ。
今ならThinかEbbじゃないの。
0089862009/05/18(月) 02:32:23ID:???
>>87
なるほど、どうもありがとう。

>>88
私はRailsはじめて2ヶ月弱なので、そういうのがわからないんです。
職場のプロジェクト環境が、ローカルの開発環境は mongrel で(gem install だけで入るし、Windows でも動くので)、
本番をどうしようかと話していてます(本番は passenger の予定)

Passenger が出てくる前は、雑誌やwebを読んでいて、
fastCGI、lighttpd、apache + mongrel_cluster という組み合わせがあったけど、
いまは本番運用ではどれが定番なんですか?(Linuxの場合)
Thin と Ebb というのは初めて知ったのでこれからググってくる。
0090nobodyさん2009/05/18(月) 08:33:09ID:???
ここのスレ見て参考にしてPassengerにしたら1日半に1回くらい順調に落ちる。ありがとな。
ホスティングだからメモリの問題だとは思うけど。
0091nobodyさん2009/05/19(火) 06:26:08ID:???
2年前くらいにrailsはアジャイルだって騒がれてたけど
今でもrailsは開発早いの?
それとも何か新しいのでた?
ほかの言語もrails並に早くなった?
0092nobodyさん2009/05/19(火) 07:14:33ID:???
結局、腕の善し悪しに左右されます
0093nobodyさん2009/05/19(火) 08:26:28ID:???
>>91
体制次第。
0094nobodyさん2009/05/19(火) 11:23:22ID:???
バージョン頻度と、その互換性のなさに少し微妙な空気が流れている気がする
0095nobodyさん2009/05/19(火) 11:30:03ID:???
ほんとバージョン管理しんどいな
rails3がでてmerbと統合したら、、
0096nobodyさん2009/05/19(火) 11:55:09ID:???
rails は黒魔術が多いなぁ。
複数人でやると、こんな書き方があるのかーというばかり。
聞けば分かるけど、読んだだけではすぐには分からない書き方が多いような気もする。
0097nobodyさん2009/05/19(火) 12:13:21ID:???
読んで分からんというか、そこだけ読んでもわからんというのはある。
動的にメソッド追加してて、どこに定義があるのかctagsで追えないとか。

でも勘とgrepでソース読めばなんとかなるレベルだとは思う。
ruby-debugがマシになってきて、railsの動的なコードの山もあまり怖くなくなってきた気がしなくもない。
0098nobodyさん2009/05/19(火) 12:57:37ID:???
>>96-97
それも「開発効率が悪い」の一種だよね
0099nobodyさん2009/05/19(火) 17:55:25ID:???
始めて数日のひよっこだけどメソッドを追えないのは
規定を知らないだけで開発効率関係ないと思う
動的にメソッド入るならコメも入れてよって泣きながら探してる
0100nobodyさん2009/05/19(火) 22:26:10ID:???
railsって始めるのに何をしたらいいの?
rubyを書けること?
MVCを理解すること?
railsの統合開発環境をインストールして、どっかの本を見ながらいじればいいの?
0101nobodyさん2009/05/19(火) 22:34:10ID:???
APIが理解できれば何とでもなる
0102nobodyさん2009/05/19(火) 22:38:35ID:???
>>100
プログラム初心者だと大変かもしれない。
Ruby初心者でも他の言語の経験があれば大丈夫かな。

Rubyが理解できる事が必須だけど、Railsと一緒に覚えていけばいい。
まずは環境のインストール方法が分かりやすく載っている本を買って
そのとおり進めていくほうが迷わないのでおすすめ。
本が扱っているバージョンはちょっと古いけど、そのバージョンに自分の環境を合わせる事が大切。
うっかり最新版を入れてしまうと、Railsの仕様が変わっているために迷子になってしまう。
0103nobodyさん2009/05/19(火) 22:39:09ID:???
railsで何を作るかをまず決める
0104nobodyさん2009/05/19(火) 22:57:59ID:???
何が作れるか分からない
例えばPHPならデータベースへの接続がしやすいとか、
なんとなーくこういうのに向いてるよっていう指標は無いの?
と、全くrubyを知らない俺が聞いてみる。
0105nobodyさん2009/05/19(火) 23:18:46ID:???
PHPでやれることはRailsでもできる
好みの問題という気がする。
0106nobodyさん2009/05/20(水) 02:04:50ID:???
Webで公開されているAPIがjavaのとき
Railsでは使えないの?
それとも使えるrailsのgemがあるの?
0107nobodyさん2009/05/20(水) 02:19:51ID:???
Web APIということはHTTPを喋って何らかのボディを返すと
いうことなので、ふつうは言語不問。
ボディの内容を解釈できるかは足回り(XMLとかJSONとかなら
パーサが要るわけで)次第。

0108nobodyさん2009/05/20(水) 02:53:06ID:???
レスをそのまま解釈すれば、
普通のAPI(どこかに落ちててWebでダウンロードできる)だと思うけど
0109nobodyさん2009/05/20(水) 06:03:49ID:???
Rails3ってでた?

0110nobodyさん2009/05/20(水) 06:19:02ID:???
出たよ。なかなか好印象。
0111nobodyさん2009/05/20(水) 07:03:26ID:???
RoRの開発環境って色々あるけど、
今は何を使ったらいいの?
0112nobodyさん2009/05/20(水) 10:18:11ID:???
IDEは重いからエディター派
Rinari+emacsか
macならtextmateがオヌヌメ
0113nobodyさん2009/05/21(木) 10:55:01ID:???
time_selectとかdate_selectのデフォルト値ってどうやって変えればいいですか?
from_forでf.time_selectだと:default => {:hour => }があるみたいですが、
time_selectだと上記オプションでは上手くいきません。
Controller側に設定したい時間オブジェクトがあるのでデフォルト値をそれにしたいのですが…。
01141132009/05/21(木) 13:29:08ID:???
すみません、自己解決しました。
0115nobodyさん2009/05/21(木) 18:30:28ID:Fhc0Zbqv
>>111
・Aptana RadRails重い
・NetBeans めちゃ軽い ただし、rspec、autotest等最新版に対応してないので、小細工がいる。(動かせることは動かせる)
0116nobodyさん2009/05/21(木) 18:34:10ID:???
6.7で対応するんだろ?
0117nobodyさん2009/05/21(木) 18:50:04ID:???
>>116
Betaで開発してもOKなら、6.7でもいいと思うよ
0118115=1172009/05/21(木) 20:01:06ID:???
NetBeansためしにNightlyにしたら、autospecとかrspecとかもちゃんと動いた…。
今までの苦労はなんなんだよw

>>116 にはありがとうといいたい。

・NetBeans 6.7m3 Download
http://bits.netbeans.org/download/6.7/m3/

・NetBeans Nighly ダウンロード
http://bits.netbeans.org/download/trunk/nightly/latest/
0119nobodyさん2009/05/21(木) 20:43:24ID:???
betaで良ければって言うけど、正式板リリースは6月じゃなかったか?
0120nobodyさん2009/05/22(金) 23:09:09ID:???
attachment-fuで画像とかをmysqlに保存しようとするとバイナリデータが
ぶっ壊れるんだけど、同じ現象解決した人いないか?
file_fieldメソッドをviewに読み込んでPOSTしてるんだけど、
受け取ったファイルを試しに自作のBLOB型のカラムに

自作table.blob型のカラム = params[:file_fieldのid].read

で保存したら正しく保存されたっぽい。
rails2.3.2

attachment-fuプラグインは、:storageオプションを:db_fileにすると
db_filesテーブルに保存してくれるようだが、中を覗いてみると
バイナリがかなり欠損して、元ファイルの1/5くらいのサイズになっている・・・。
0121nobodyさん2009/05/23(土) 01:34:50ID:???
データサイズを指定しいたりしてw
0122nobodyさん2009/05/23(土) 07:49:36ID:???
それ共有鯖で無茶してるだけじゃないの?
0123nobodyさん2009/05/23(土) 09:42:19ID:???
RoRって作るのはすごい速いらしいけど、
覚えるのは何ヶ月くらいかかるの?
0124nobodyさん2009/05/23(土) 10:59:34ID:???
HTMLとCSSとSQLとRubyをマスターしてるなら覚えるのはRailsの規約だけ
0125nobodyさん2009/05/23(土) 11:47:12ID:???
>>121-122
いや、ローカルの開発サーバ…。
windowsなのが原因なのかもしれん。
とりあえずレスありがとう。
0126nobodyさん2009/05/23(土) 15:56:37ID:???
WindowsだとFileをテキストモード(笑)で読んでるところがあって、それで壊れたということがあったよ。
パッチ送った気がするけど、スルーされてたのか。。。

中で一時ファイルとかをFile.read(path)的に読んでるところがあったらそれをFile.open(path, "rb", &:read)に
書き換えればうまくいくのではないだろうか。
0127nobodyさん2009/05/24(日) 01:42:02ID:xGQhsS/X
質問させてください。

よくない例かもしれないのですが、
person.parents << parent = Parent.new
person.children << GrandParent.new(:grand_parent_id => parent.id)
person.save

みたいなことがしたいのですが、これだとChild.grand_parent_idがnilになってしまいます。
このような場合で、あるテーブルと、そのテーブルにhas_manyな関係のテーブル2つ(合計3つ)を同時にsaveするうまい方法があったら教えていただけないでしょうか??
ご教示頂けると幸いです><
0128nobodyさん2009/05/24(日) 14:19:16ID:???
>>127
少し面倒でも、トランザクションの中で1つ1つsave!するほうが確実だと思うよ。
トランザクションだから同時に保存するという要件も満たしているし。

begin
 ActiveRecord::Base.transaction {
  parent.save!
  person.save!
  children.save!
 }
rescue Exception
end
0129nobodyさん2009/05/24(日) 21:48:48ID:???
多対多の関連があるテーブルで相手要素をチェックボックスで選択するようなフォームをエレガントに作ったよって人いる?

例)
興味のある麺類を選んでください。
□ うどん
□ そば
□ きしめん

↑ユーザプロフィールと麺類を多対多で関連づける

最初はact_as_bitsで実装して上手く行っていたのだけど、要素の順番を保存できないのと
要素を動的に追加したいという要望がでてきてact_as_bitsでは対応できなくなったぽい

んで、代替策として多対多の関連を定義して対応することにしたんだけど、
railsのモデル更新系フォームヘルパが複数選択のチェックボックス(パラメータを配列で送る)に
対応してないじゃないですか!
仕方がないのでチェックボックスのname属性を自力で書き換えたり
モデルにチェック/非チェックを返すアクセサメソッドの定義を追加したりしたんだけど
なんだかすごいメンドクセーという次第でして

この辺を上手いこと解決できる方法やプラグインなどはないでしょうか?
要望としては、できればcheckbox_tagは使いたくないです
0130nobodyさん2009/05/24(日) 22:03:09ID:???
自分でつくれば?
0131nobodyさん2009/05/24(日) 23:13:20ID:???
自分で作るぐらいならrailsを使わないほうが簡単な現実。
0132nobodyさん2009/05/25(月) 00:14:50ID:???
や、動くもの自体は既にできているのですが、もっと上手い方法があるかなーと思いまして
0133nobodyさん2009/05/25(月) 00:44:27ID:???
「動く」ってビット列でその手のデータを保存するなんて・・・
0134nobodyさん2009/05/25(月) 00:54:00ID:???
データの内容は例であって本筋とは関係のない話です
実物は集計する必要もない項目ですが、こっちの方がイメージしやすいかと思いまして
0135nobodyさん2009/05/25(月) 00:58:08ID:???
>>131
プラグインくらいつくらないの?

それじゃrailsをつかいこなしてるとはとてもでないけどいえない
0136nobodyさん2009/05/25(月) 13:45:02ID:???
redmineの質問なのですが、Rails製なのでここでもよいですよね?

Windowsで動かしてみているのですが、redmine.batに以下を書いて、

 ruby script/server -e production -p 2900

batを起動すると、DOS窓?が開いた状態になってしまうのですが、
これを開かないで実行しておくことはできないのでしょうか?

 rubyw script/server -e production -p 2900

だと、タスクマネージャで見ているとrubywがすぐに終了してしまいます…

Portable化したいので、サービス化以外の方法で行いたいのですが…
01371362009/05/25(月) 14:21:47ID:???
>>136 ですが、
Railsスレの過去ログ見てたら解決策がありました。

バッチファイル化しなければよかったんですね…。
例えば、ショートカットを作って、
 ruby script/server -e production -p 2900
を割り当てて、作業ディレクトリをredmineのものにしたら、窓ひらかずに起動できました。

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

追加でお聞きしたいものなのですが、
このようにして起動した場合、タスクマネージャではプロセスruby.exeが載ってしまって、
他のRubyプロセスと区別がつかないのですが、区別を付くようにする方法ってないものでしょうか?
重いrubyアプリなどを動かした時に、redmineの方を間違って落としてしまわないかと心配です。

Ruby初心者スレの方で聞いたほうがいいのかな…。
0138nobodyさん2009/05/25(月) 14:57:47ID:???
>>137
ruby.exe を hoge.exe に別名でコピーして、
ruby script/server の代わりに、
hoge script/server とやる。

なんかダサイけど、これが一番手っ取り早い。

あるいは、Linux 版で mongrel 使っていると、
$RAILS_ROOT/log に mongrel.pid というファイルが出来るので、
その pid を kill すればいいけど、Windows でもそうなっていませんか?
01391362009/05/25(月) 15:46:00ID:???
>>138
ありがとうございます。
おお、ruby.exeは名前変えても動くんですね!

findしてみましたけど、mongrel.pidは見つかりませんでした。logにもなかた。windowsのせいかな…

exeの名前を変えると言われて気づいたのですが、タスクマネージャのメニューから「表示」「列の選択」から、
「コマンドライン」をチェックすると、プロセス起動時に渡した引数を見ることができました。
これで見分けがつきます!
これはVistaの機能だと思うのですが、Windows XPなら Process Explorerとかを使えば同じことができるはずです。

ありがとうございます。助かりました。

て今気づいたけど、
>>136-137が実は解決していませんでした orz
窓がやはり出てしまいます。ショートカットのオプションで最小化していただけでした。
裏で動かすには、サービス化以外で何がいいんだろ…。
0140nobodyさん2009/05/25(月) 15:48:11ID:OXJaCHfT
railsを初めて触って動作を確かめています。

scaffoldでモデル(member)とビューを自動で作ったのですが、
気になる点があるので質問させてください。

以下のどちらのURLでもメンバーID=1番の情報を表示できるのですが、
これはどこで定義されているのでしょうか?(showが省略できる)

http://localhost:3000/members/show/1
http://localhost:3000/members/1

members_controller.rbもroutes.rbにも見当たりませんでした。

indexとshowは特殊なアクションでrails内部で既に定義されているという
ことなのでしょうか?

(railsのバージョンは2.3.2です。)
0141nobodyさん2009/05/25(月) 15:53:56ID:???
routes.rbの中にmap.resourcesってやつがあると思う。
そいつが指定されるとそうなる。
0142nobodyさん2009/05/25(月) 15:58:47ID:OXJaCHfT
>>141
すばやい返事ありがとうございます。
ちょっとmap.resourcesについて調べてみます。
0143nobodyさん2009/05/25(月) 16:00:39ID:???
>>138
NTFSならハードリンクでもいける
01441382009/05/25(月) 16:14:38ID:???
>>143
Rails ではなく Windows の話になるけど、
hoge.exe を ruby.exe のハードリンクとした場合、
hoge.exe を消すと ruby.exe も消されてしまわない?(WinXP)
http://www.atmarkit.co.jp/fwin2k/win2ktips/982hardlink/hardlink.html

いまやってみたら、消そうとしたら「アクセスが拒否されました」と言われて、そもそも
ハードリンクで作った hoge.exe が消せなくなった。
(再起動したら消せるかも知れないが、めんどくさくてやってない)

>>139
バッチファイルに、以下じゃダメかな?
start ruby scrit/server
01451362009/05/25(月) 16:30:14ID:???
>>139

> バッチファイルに、以下じゃダメかな?
> start ruby scrit/server

実は、
 start /B ruby scrit/server
とか
 cmd.exe /k start /B ruby scrit/server
とか色々試したのですが、うまくいかず、結局、wshのjscriptを使って起動させることにしました。

----------redmine_start.js-----------
shell = WScript.CreateObject("WScript.Shell");
shell.Run("ruby.exe script/server -e production -p 3500", 0);
----------------------------------
Runに 0 を指定するとウインドウを非表示で起動してくれるみたいです。

参考:
Run メソッド
http://msdn.microsoft.com/ja-jp/library/cc364421.aspx
Windows Script Programming: バッチファイル、コンソールアプリなどを非表示で実行する。
http://scripting.cocolog-nifty.com/blog/2006/10/post_c77d.html


無事解決した模様です。ありがとうございました。
01461382009/05/25(月) 16:33:13ID:???
>>145
こちらこそ参考になりました。どうもありがとう
0147nobodyさん2009/05/25(月) 18:08:00ID:???
>>126
レスありがとう。まさにそんな感じだった。
バイナリデータが、一部がごそっと欠損するわけじゃなくて、
途中途中のデータが消えてスカスカになる感じ。
まさに、バイナリデータを文字として開いているような・・・。

結局、指摘の方法をやってみたけどもだめで、素直にlinuxでやることにした。
(やりかたが間違ってたら申し訳ない。)


しかし新たな問題が発生。。。

今error_message_forを使ってエラーメッセージをだしているのだけども、
attachment-fuのvalidates_as_attachmentをつかって検証すると、
添付ファイルが無いときに

Content type can't be blank
Size can't be blank
Size is not included in the list
Filename can't be blank

と上記のような、ユーザーには関係ない内部的なエラーが表示される…。
今は、controllerの添付ファイルアップロード用メソッドに、
添付ファイルがpostされなかったら@モデル名.erros.addに「添付ファイルが無い」旨の
エラーメッセージを詰めて、処理を中断するようにしてるけど・・・

このプラグイン使っている人は、ファイルが選択されずにpostされたときは 、
どこで検証して、メッセージを表示してるんだ?
0148nobodyさん2009/05/25(月) 18:21:59ID:???
>>144
> hoge.exe を消すと ruby.exe も消されてしまわない?(WinXP)
> http://www.atmarkit.co.jp/fwin2k/win2ktips/982hardlink/hardlink.html
Explorerにそういうバグがあるの?
リンク先にもそんな記述はないようだけど。

> いまやってみたら、消そうとしたら「アクセスが拒否されました」と言われて、そもそも
> ハードリンクで作った hoge.exe が消せなくなった。
そりゃhoge.exeが動いてるんじゃね?
01491382009/05/25(月) 18:53:30ID:???
>>148
>> hoge.exe を消すと ruby.exe も消されてしまわない?(WinXP)
>> http://www.atmarkit.co.jp/fwin2k/win2ktips/982hardlink/hardlink.html
>Explorerにそういうバグがあるの?
>リンク先にもそんな記述はないようだけど。

失礼、ジャクションと勘違いしていた。

>> いまやってみたら、消そうとしたら「アクセスが拒否されました」と言われて、そもそも
>> ハードリンクで作った hoge.exe が消せなくなった。
>そりゃhoge.exeが動いてるんじゃね?

こっちについては、hoge.exe は動いていなかったが、なぜかはわからん。
Who Lock Me で調べても出てこなかったが、ファイルサイズも小さいし気にしないことにする。

0150nobodyさん2009/05/25(月) 23:46:56ID:???
Drupalと連携できないのRoRは糞だダメだカスだ
0151nobodyさん2009/05/26(火) 00:16:03ID:???
>>126
報告ですが、linuxだとできますた。
自分は最近やっとこさVMとかlinuxとか動かせるようになったひよっこだが、
オープン系の人ってwindows嫌いなんだろうかw
0152nobodyさん2009/05/26(火) 00:43:30ID:???
オープンソースとオープン系は別物。

「オープン系」はメインフレームの一社でのまるごとシステム提供に
対してUNIXやWIndowsでいろいろなメーカーのを使うことを指す用語。

嫌いというか、 Windowsに興味がない人は多い。
UNIX畑の人が優勢な世界だしね。
MacはOSXになってUNIX寄り(定義上はUNIXそのもの)になったから
まだましだが。
0153nobodyさん2009/05/26(火) 01:01:38ID:???
Windows使う奴はゆとりかマジ基地の2択
0154nobodyさん2009/05/26(火) 01:21:20ID:???
職場じゃWindowsしか使わせてもらえないんですけど
「Windowsしか使えない奴」なら同意してあげる
0155nobodyさん2009/05/26(火) 04:50:28ID:???
>>151
Windows嫌いというより、テキストモードが負の遺産というのはガチ
0156nobodyさん2009/05/26(火) 07:31:40ID:???
マクはUNIX系とは言いがたい。
sshで全部の設定が出来る訳じゃないし、鯖用途で使われてるのは、ほぼ皆無。
まだLinuxのほうがUNIXに操作方法が近い。

CUIとrubyみたいなスクリプト系の相性の良さは異常だしな。
GUIのためにスクリプトの手間が増えるのは萎える。
0157nobodyさん2009/05/26(火) 08:41:50ID:???
>>156
そのへんをふまえて「定義上は」と書いてある。
0158nobodyさん2009/05/26(火) 11:29:07ID:2daPE8kx
既存のテーブルbook, itemがあります。
主キーとしてそれぞれbookid, itemidが設定されています。
それぞれのモデルに
set_table_name "book"
set_primari_key "bookid"
has_many :items

set_table_name "item"
set_primari_key "itemid"
belongs_to :book
を設定しています。

script/consoleを使用して以下のようにしています。
b = Book.find(1)
b.items
ですが、b.itemsの行で以下のようなエラーが出ます。
ActiveRecord::StatementInvalid: PGError: ERROR: column item.book_id does not exist
itemテーブルのbook_idを探しているようなのですが、itemテーブルの外部キーはbookidなので
エラーが出ているようです。
railsがbookidでitemテーブルを検索するようにするためにはどうしたらよいのでしょうか?
0159nobodyさん2009/05/26(火) 15:11:42ID:???
Railsをfastcgi等を使用してapacheで走らせたときに
スクリプトへの変更はすぐに反映されますか?それともサーバの再起動が必要?
0160nobodyさん2009/05/26(火) 17:41:24ID:???
試してごらん
01611592009/05/26(火) 19:04:33ID:???
出来ないということですね
ありがとうございます
0162nobodyさん2009/05/26(火) 20:00:03ID:???
railsは自動的に色々ソースを補助してくれているようだけど。
もし自分がはまったとき、
みんなソースをどうやって追いかけているの?
全部見ていく訳じゃないんでしょう?
0163nobodyさん2009/05/26(火) 20:06:28ID:???
言葉の勉強をしよう
0164nobodyさん2009/05/26(火) 20:25:56ID:???
PassengerならApache再起動なしでいけるけどな
0165nobodyさん2009/05/26(火) 22:04:58ID:???
>>158
foreign_keyオプションについて調べるんだ。
0166nobodyさん2009/05/26(火) 22:07:08ID:???
>>162
定義箇所をgrepで探す。
Railsはとくに動的に定義されるメソッドが多いからそれだけじゃ
どうにもならなくなるんだが。
その場合、method_missingあたりから追うことになるな。

エラーなら、とりあえずログに出てくるバックトレースを見る。
0167nobodyさん2009/05/26(火) 22:41:14ID:nc85Zu/k
Rails のアプリケーションは、http://myhost/foo/ みたいに、ディレクトリを一段下げた状態で運用できますか?

たとえば /usr/local/foo 以下が RAILS_ROOT だとして、RAILS_ROOT で mongrel 等を使って
ruby script/server で起動すると、アプリの URL は
http://myhost/ 直下になりますよね。
開発環境では、これで開発しています。

本番環境が、Passenger を使って http://myhost/foo/ 以下で運用することになりました。
Passenger 等を使うと、/*** はいくらでも httpd.conf で自由に定義できると思いますが、
アプリの view で image_tag("icon.png") とすると、
<img src="/images/icon.png">
とレンダリングされてしまい、/image ディレクトリは web サーバのトップにあることが前提となってしまいます。

Passenger 等で、http://myhost/foo/ にアプリケーションを展開した場合、
image_tag("icon.png") は、
<img src="/foo/images/icon.png"> となってくれるのでしょうか?

※Java Servlet の HttpServletRequest#getContextPath() みたいなのを内部でやってくれるのかどうか
0168nobodyさん2009/05/26(火) 22:44:39ID:???
最近のPassengerはそこバグってるはず。
config/environments/production.rb
config.action_controller.relative_url_root = '/foo'
とかやったらどうなる?
01691672009/05/26(火) 22:46:23ID:???
>>168
早速レスどうもありがとうございます。
実はこれから Passenger をビルドしようとしているので、
まだ Passenger で動かしたことない。

というか image_tag() が出力する HTML タグは、
Passenger か mongrel/webrick かで、出力結果が変わるのですか?
01701582009/05/26(火) 22:52:37ID:2daPE8kx
set_table_name "book"
set_primari_key "bookid"
has_many :items, :foreign_key => :itemid

set_table_name "item"
set_primari_key "itemid"
belongs_to :book, :foreign_key => bookid

とすることでうまく動作するようになりました。
>>165さんありがとうございました。
0171nobodyさん2009/05/26(火) 22:57:13ID:???
>>169
image_tagなんかの出力は actionpackのasset_tag_helperで定義
されているが、ActionController::Base.relative_url_root の値が
頭に付く。この値は環境変数でデフォルト値を変えられるので、
呼び出すプロセスが変更すればその影響を受ける。

Passengerがそこをどうしてるかは知らないけど。

0172nobodyさん2009/05/26(火) 23:29:44ID:???
サイトに時計を
「10時15分」
とか数字で表示させたい場合
どんな手法がいいですか?
あと、一緒にカウントダウン表示も行いたいのですが。
0173nobodyさん2009/05/27(水) 00:13:56ID:???
基本的にJavaScriptかFlash
要件によるが
というかRails関係ない
0174nobodyさん2009/05/27(水) 00:37:31ID:???
>>156,157
どのへんがsshで設定できないの?
01751272009/05/27(水) 02:11:16ID:jIlGcikV
>>128
むーんやはりそんな感じですか・・
ありがとうございましたm(_ _)m
01761672009/05/27(水) 03:42:10ID:???
>>168 >>171 レスどうもありがとうございます。
>>171 さんのそういう情報も聞きたかったでした!!

こちらの環境:
・CentOS 5.1
・Apache 2.2.3(httpd-2.2.3-22.el5.centos)
・ruby 1.8.5 (2006-08-25) [i386-linux]

# gem list

actionmailer (2.1.1)
actionpack (2.1.1)
activerecord (2.1.1)
activeresource (2.1.1)
activesupport (2.1.1)
cgi_multipart_eof_fix (2.5.0)
composite_primary_keys (1.0.10)
daemons (1.0.10)
dcov (0.2.2)
fastthread (1.0.7)
gem_plugin (0.2.3)
haml (2.0.9)
mongrel (1.1.5)
mysql (2.7)
passenger (2.2.2)
rack (0.9.1)
rails (2.1.1)
rake (0.8.4)
rcov (0.8.1.2.0)
rspec (1.1.12)
rspec-rails (1.1.12)
01771672009/05/27(水) 03:43:18ID:???
まず gem で Passenger をインストールし(上記のように、2.2.2 が入った)
http://redmine.jp/tech_note/apache-passenger/ にあるように
VirtualHost 形式でやってみたところ、Passenger で Rails アプリは動いた。
これは問題なし。

つぎに http://rubyist.g.hatena.ne.jp/Ubuntu/20080729/1217336403 のように、
VirtualHost を使わず、

# ln -s /usr/local/foo/public /var/www/html/foo
として、httpd.conf に以下を追記した方式で、

RailsBaseURI /foo

Rails アプリを http://myhost/foo/ でやってみた。結果としてうまく動いた。

アプリの view の中で image_tag("icon.png") とすると、
<img src="/foo/images/icon.png">
というように /foo が付加された。
また <%= @controller.request.relative_url_root %> とすると、
/foo が出力された。(*1)

ということで問題ないようです。
ちなみに >>168 にあるように、 config/environments/production.rb に
config.action_controller.relative_url_root = '/foo'
は書いていません。

production.rb をいじらなくても目的は達成できたけど、以下を追試した。
01781672009/05/27(水) 03:43:45ID:???
○追試1:
production.rb に >>168 を書いて Apache を再起動し、http://myhost/foo にアクセスすると、
Rails アプリが立ち上がらない。Passenger の HTML が出て、

Ruby on Rails application could not be started
Error message:
  undefined method `relative_url_root=' for ActionController::Base:Class

というのが出る。
もし書くとしたら、どう書くのが正しいのだろうか?

○追試2( >>171 を見て):
(*1) の時、view で <%= @controller.request.relative_url_root %> の代わりに以下のように書くと、
<%= ActionController::Base.request.relative_url_root %>
以下のようなエラーになった。

ActionView::TemplateError (undefined method `request' for ActionController::Base:Class) on line #?? of index/index.html.erb:

これも同じ問題かな?
0179nobodyさん2009/05/27(水) 14:03:41ID:???
ちょいとFour Days on Railsなど読んでRailsを始めているものなのですが、
素朴な疑問なのですが、
通常データベースの最初の作成って、どんな風におこなっているもんなんでしょうか?

rake db:create だと mysqlのroot ユーザみたいなあらかじめ権限あるユーザでないと作れないし、
というかdevelopmentとかtestはrootでも別にいいかって感じなんですけど(と、Railsによるアジャイル本P26にあった)、
productionの場合、さすがに root まんまってのも変だし…

結局、mysql コマンドでroot で
 create database 'my_project_production' default character set utf-8;
 grant all privileges on my_project_production.* to my_project@localhost identified by (パスワード)
みたいにDB作ってユーザー作成ってことをするのも、他の開発者とか、テスト環境とかで
毎回やってたらあれなんで、テキストに書いて、
 myslq -u root -p < create_db.sql
みたいにやってもらう、ってことになるかと思うのですが、
その辺、スマートな方法ってないもんでしょうか?
0180nobodyさん2009/05/27(水) 17:58:08ID:???
unixの勉強してちゃんと権限設定すれば良いだけ。
0181nobodyさん2009/05/27(水) 18:25:31ID:???
は?
0182nobodyさん2009/05/27(水) 19:04:52ID:???
レンタルサーバーだから権限無い、どうしたらいいのって質問でしょw
0183nobodyさん2009/05/27(水) 19:11:52ID:???
いや違うだろw
なぜunixの権限設定の話になるの?データベースユーザの話でしょ?

ちなみにおれはマイグレーション機能を使っていない、
が元レスに対する回答かなあ
0184nobodyさん2009/05/27(水) 19:27:27ID:???
パッセンジャー2.2.1って不安定だな。バージョンあげれば安定するだろうか。
バージョンあげてもっとひどい目に遭いたくないから躊躇してしまう。
0185nobodyさん2009/05/27(水) 20:07:31ID:???
>>179
create database は、MySQL にログインして実行しているけど、
そこからさきのテーブルを作るところは、rake db:migrate でやっている。

>他の開発者とか、テスト環境とかで 毎回やってたらあれなんで、テキストに書いて、

別にあれというほどの作業でもないと思うが。
チームに人が増えたら、DB 担当者に「佐藤さんが今日から入ったので、satou スキーマを作ってあげてください」
でいいんじゃないの?

>>184
どう不安定なのか知りたい。
0186nobodyさん2009/05/27(水) 21:25:43ID:???
>>185
アパッチごと落ちるとかインターナルサーバーエラー。
落ちるのはやめてほしいが1日に1回くらいかな。
知りたいってことは安定してるの?
0187nobodyさん2009/05/27(水) 21:33:39ID:???
>>186
Passenger2.2.2使ってるけど、特にApacheが落ちるという事はないな。
環境が違えば、結果も変わると思うので、ここで聞いても仕方ないのでは?
テスト環境作って、そこで最新版のテストをしてみる事をお勧めします。
0188nobodyさん2009/05/27(水) 22:34:45ID:???
うちはさっぱり動かんわ。
sendmsg()がEBADFで失敗するところまでは追いかけたけど、なんで失敗するのか
さっぱりわからん。
0189nobodyさん2009/05/27(水) 23:27:55ID:???
>>187
ふ〜む、サーバーのメモリが足りないのだろうか。
ちょっと開発環境でバージョンあげてテストしてみる。
mongrelの方がよかったかもと後悔中。
01901872009/05/28(木) 00:12:48ID:???
>>189
ところで、このあたりの値ってどうしてます?
PassengerMaxInstancesPerApp
PassengerMaxRequests

自分は今このくらいで動かしてる。
PassengerMaxInstancesPerApp 8
PassengerMaxRequests 15
ちなみにサーバのメモリは4GB。

以前、PassengerMaxRequestsを設定しなかったら
passenger-statusで表示される1個あたりのProcessedが500とかになってて大変な事になってた。
アクセスが多すぎてApacheが落ちる?という事があり得るなら
PassengerMaxInstancesPerAppとPassengerMaxRequestsを調整してみるといいかも。
確証はないけど。
0191nobodyさん2009/05/28(木) 01:17:36ID:???
>>190
ありがとう。

おれの方は個人、といっても趣味ではないんだけど、
VPS(メモリ200Mくらい)を使って立ち上げた卵サービス。

パラメータは、

PassengerMaxPoolSize 2

しか設定してない。
マニュアルを見ると「2」でも少しきついかもなんだけど。

アクセスは重なっても瞬間3リクエスト/秒くらいだから、
悔しいけどアクセス過多というのはあり得ないんだよね・・・orz

mongrelの方が消費するメモリが少ないみたいだから、
これくらいの小っちゃい規模ならmongrelの方がいいのかなと思った。
0192nobodyさん2009/05/28(木) 10:30:54ID:???
>>191
VPSのそのスペックで秒間3リクでrailsなら過多だぞ。
それがどれだけ続くのか言わないと
0193nobodyさん2009/05/28(木) 10:51:19ID:???
>>182
NO

>>183
そです。

>>185
うん、まあそんなもんかー。それくらい手間じゃなかろう、というスタンスですか

参考になりました。サンクス
0194nobodyさん2009/05/28(木) 11:13:37ID:???
linodeの再安プランを契約した。メモリ360MBで転送量200G。
passengerかmongrelか迷うな〜。

passengerはVMにいれて動くとこまで確認したけど、いいのか悪いのか
わかんねー。
0195nobodyさん2009/05/28(木) 13:20:08ID:???
>>193
そもそも、開発者は production 運用時のパスワードとか知る必要はないんじゃね。
ウチはそこんとこ、deployスクリプトでよろしくやってる。
0196nobodyさん2009/05/28(木) 14:52:22ID:???
>>190 のレスをみて、passenger-status というコマンドを初めて知った。
Processed とはどういう意味でしょうか?

こちらでは、開発チーム4人、テスト環境で passenger を使っていて、ホストしている web アプリは1つ、という状況。
ラッシュテストではなく、make/UT フェーズの後で、ブラウザをぽちぽち触っている程度。

あと httpd.conf では、おきまりの追記する 3行と、RailsBaseURI /foo しか定義していない。

----------- Domains -----------
/home/******/rails:
 PID: 10322  Sessions: 0  Processed: 111  Uptime: 23m 26s
 PID: 15097  Sessions: 0  Processed: 80   Uptime: 7m 33s

Core2Duo E8400、メモリ3GB、CentOS 5.1(32bit)です。
0197nobodyさん2009/05/28(木) 15:57:18ID:???
>>192
あ、すまん。もう少し詳細に。

まず、負荷を抑えるために静的ファイルにできるものは全部静的にしてるから、
そのアクセスすべてがRailsのコントローラーを通るわけじゃない作り。
Railsのコントローラーを通るリクエストは全体のうち10〜20%くらい。
瞬間3リクエスト/秒というのは1日1回あれば上等で、1日平均2000〜4000リクエストくらい。

1つ上のプランにしようか検討中(メモリが倍くらいになる)。
0198nobodyさん2009/05/28(木) 19:46:53ID:???
>>196
1つのRailsインスタンスが処理しているプロセス数だと認識している。
初期値では無制限になっているから負荷が高い時は
PassengerMaxRequests 50
など少ない数値を指定すると良いかも。
こうすると、各インスタンスのProcessedの値が最大50に制限される。
0199nobodyさん2009/05/28(木) 21:57:11ID:???
みんなsqlとかページに対して、キャッシュ使ってる?
俺はとりあえずキャッシュとか一切考えないで作って、
支障でてきたらメンテナンスしようかなってくらいなんだが・・・

結構しんどそう。
0200nobodyさん2009/05/28(木) 21:58:30ID:???
問題が出てから対応したらいいと思うよ
0201nobodyさん2009/05/28(木) 22:02:19ID:???
Premature optimization is considered harmful.
0202nobodyさん2009/05/28(木) 23:27:35ID:???
ためしに主要コンテンツにキャッシュ使うようにしてみたら、かなり早くなったw
0203nobodyさん2009/05/29(金) 03:17:14ID:2GV35QJ0
AWDRのThird Editionを見ているのですが、
外部キーの定義にt.references :userを使わずt.integer :user_idを使っています。
なぜなんでしょうか?
0204nobodyさん2009/05/29(金) 07:49:22ID:???
>>203
それは好みの問題なんじゃないの?
どっちを書いても結果は同じ事になるからね。

0205nobodyさん2009/05/29(金) 21:04:19ID:???
render :update で行う処理をヘルパで定義したんだが、
ヘルパで定義したメソッドから、別のヘルパに定義されているメソッドを呼び出そうとしたら
上手く呼び出せないんだ
なぜかActionView::Helpers::JavaScriptProxy のインスタンスが帰ってくる

どうすればいい?
0206nobodyさん2009/05/29(金) 21:43:02ID:???
どう書いてるのかも分からないのに・・・
0207nobodyさん2009/05/29(金) 23:19:50ID:???
Ruby会議行く人いるー?
0208nobodyさん2009/05/29(金) 23:23:02ID:???
チケット買えたら行く。
去年は会場が広かったせいかわりと余裕があったが今年はどうだろうね。
0209nobodyさん2009/05/30(土) 01:57:19ID:???
wycatsのセッションが楽しみだ
0210nobodyさん2009/05/30(土) 02:36:46ID:???
ruby会議というのに行ってみようと思う ruby 歴2ヶ月のものですが、
チケットは瞬殺してしまうものなのでしょうか?
0211nobodyさん2009/05/30(土) 02:41:08ID:???
セッションスピーカーに「坂本龍一」って人がいるんだけど、
映画ラストエンペラーでアカデミー音楽賞とった人?
0212nobodyさん2009/05/30(土) 06:22:13ID:???
>>211
教授くんの?つかなんでww
0213nobodyさん2009/05/30(土) 10:29:12ID:???
2006、2007年はそこそこ瞬殺(数時間)、2008年は会場が広いのと
東京から遠かったせいか、もっとゆっくりだったと思う。
0214nobodyさん2009/05/30(土) 17:53:01ID:???
railsでGMAILをsmtpサーバーにしてるひといる?
アクティベーション用につかってたんだけど、とづぜんおくれなくなった。

気になるのは、GMAILにログインして送信済みトレイをみるとそのメールは
送ったことになってる。
なお普通にメールは送れる。

なんか同じような手形式のメールばっかりやってたから、迷惑メールのサーバーとして
利用してると勘違いされて、ブロックかけられてるような気がするのだが・・・。
0215nobodyさん2009/05/30(土) 18:19:50ID:???
gmailは送信数制限があったと思うが
0216nobodyさん2009/05/30(土) 18:36:10ID:???
>>215
マジか・・・。
素直にメールサーバ立てるかあ。
0217nobodyさん2009/05/31(日) 15:45:27ID:???
無料の Gmail の SMTP は上限500だったっけ。
Google Apps の Gmail は2,500だったような気がする。

Gmail アカウントを10コ取得、アカウントをランダムで
回してメール送信すれば OK。
02181132009/06/02(火) 12:05:26ID:???
すみません、質問させてください。

production環境でもdevelopment環境みたいに
エラーが発生した時に詳細を出したいんですがどこで設定したらいいですか?
また、Controllerのメソッドを特定のアドレスからのみ実行させたいんですが、
これってrailsの設定でできます?
(ENV['REMOTE_HOST']を取得して分岐させた方が早いですか?)
0219nobodyさん2009/06/02(火) 12:12:45ID:???
>>218 grep consider_all_requests_local config/environments/*.rb
0220nobodyさん2009/06/02(火) 18:37:29ID:???
いまどきのデプロイって何使うのがいいんでしょ。capistranoでいいのかな?
作者メンテ終了ってきいて不安…
0221nobodyさん2009/06/02(火) 21:31:58ID:???
>>220
http://www.infoq.com/jp/news/2009/03/ruby-deploy-roundup

Capistrano の後継は vlad というのかな?

もっとも自分は、デプロイは、ローカルで tar.gz つくる→転送する→サーバ側で
Passenger の touch restart.txt する
という原始的なことしかしてないけど(笑)

Capistrano は評判いいらしいが、使ったことない。
0222nobodyさん2009/06/02(火) 21:35:02ID:???
作者のメンテがなくなって困るのってどんなときかなぁ

ある程度使っている人がいるだろうから
なにかあってもなんとかなりそうじゃね?
0223nobodyさん2009/06/02(火) 21:37:41ID:???
<div style="width: 100px; border: 1px solid black;">
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</div>

で、firefoxだとdivの枠線を突き抜けてしまう現象についてなんだが・・・。
今はrubyで<wbr/>タグを文字と文字の間にはさみこんで対処してるんだが・・・
これってみんなどうしてんの?

転送量増えるし、出来ればこの方法はとりたくないなぁ。
0224nobodyさん2009/06/02(火) 21:39:09ID:???
>>223
cssでスクロールさせる
0225nobodyさん2009/06/02(火) 21:40:31ID:???
overflow:auto;
0226nobodyさん2009/06/02(火) 22:07:35ID:???
>>224-225
どうもありがとう。
0227nobodyさん2009/06/03(水) 03:54:32ID:???
そもそもオープンソフトでサポートは期待出来ないしな。
さっくり商用ソフト使ってサポート契約しておくのが安心。
0228nobodyさん2009/06/03(水) 11:48:06ID:???
なんでいきなりそんなことを言い出すんだw
0229nobodyさん2009/06/03(水) 22:26:10ID:???
あぁ・・・save!するよsave!・・・
びぎんっ!れすきゅー!
0230nobodyさん2009/06/04(木) 19:17:08ID:???
少し、Capistranoについてお聞きいたします。

svnなどのバージョン管理ツール経由でデプロイする場合は、
リポジトリサーバーを公開しておく(デプロイ先からアクセス可にしておく)必要があるわけでしょうか?

リポジトリが公開サーバーからアクセスできない(例えばローカルネットワークやファイヤーウォール内にあるなど)
場合は、どうしたものでしょうか?

また、svn等SCM経由でデプロイする利点というのは何があるのでしょうか?
0231nobodyさん2009/06/04(木) 19:25:16ID:???
この辺でググるヨシ。
set :deploy_via, :copy
set :copy_remote_dir, "/tmp/tmp2"

0232nobodyさん2009/06/04(木) 21:27:28ID:???
どうしてネット上では左翼(左派)の方が叩かれやすいのだろう。

ルーツはネットの掲示板が普段言えないこと=反良識だったところだろうね。
で、良識と左派思想に近いものがあったのが原因かと。

多分今のネットの言論の遡った先って、大昔のあめぞうとかUG系の掲示板で話されてた
中二病的な会話だったと思う。
「うぜえ、氏ね」とか「ハッキングが問題なんじゃねえ、ちょっとつついたら入られる
くらいセキュリティもちゃんとせずにネットやるほうが悪いんだよ」とか「殴られても
やりかえすな、ヘラヘラしてろってかw」みたいな。
表によろしい発言かというとそうじゃないけど、まあちょっと良識に反発しようと
思って考えずに口にだす暴論、みたいな。
それが2chになって、2chが巨大化して一般人も流入して、セコウ工作が……となっていくうちに
「ヘイトスピーチ」「自己責任」「9条破棄」と変質していったと。

でも確かにほんとうざいな、右翼コメ。
雑談スレで何かっつーとそういうネタ持ってくる人とかもうね。
0233nobodyさん2009/06/04(木) 21:32:45ID:???
>>230
set :gateway とかいう設定も使えそうな薬缶。
0234nobodyさん2009/06/04(木) 23:27:36ID:???
マイグレーション、ちゃんと設定すると結構便利だな。
0235nobodyさん2009/06/05(金) 01:44:35ID:???
Model の validation を呼び出し元 action によって切り替える、といった事ってみんなどうやってやってる?
:if とか :unless とか上手く使えばスマートに書けるのだろうか・・・。
それとも Model 内で 呼び出し元の action 取得できるような機能ってあったりする??
0236nobodyさん2009/06/05(金) 01:51:08ID:???
>>235
どこでそんなのが必要になるのかさっぱりわからんが、
新規作成時と既存レコードの更新時で変えたいなら方法はある。
02372302009/06/05(金) 04:52:19ID:???
>>231-233
サンクスコ
ググルワードおしえていただけると非常に助かります!
0238nobodyさん2009/06/05(金) 06:58:11ID:???
>>235
なんか意味が分からない。
validate_on_create、validate_on_update、validate
をモデルに定義するだけじゃ足りないの?
02392352009/06/05(金) 08:46:49ID:???
>>236
>>238

そんなに意味がわからない程珍しいシチュエーションかなー??
DB上は一つのテーブルだから一つのModelなんだけど、カラムによって登録・更新する画面がいくつかに分かれてしまった場合とかってそれなりにあると思うんだが・・・。

ttp://blog.masuidrive.jp/index.php/2008/02/23/rails_valid_columns/#
ttp://www.fraction.jp/log/archives/2008/02/29/Rails_de_Wizard

この辺の記事にもあるけど、ウィザード形式の入力フォームとか。

「じゃあ記事の方法でいいじゃん」って事かもしれんが、上の記事の方法だと一回全部 validate が実行されるし、
下の記事は API ドキュメントにある方法だけど、明示的に Controller からどの画面かを渡してるのが微妙だな、と思って、
他になんか方法がないかなー、と。
0240nobodyさん2009/06/05(金) 09:22:02ID:???
ウィザードだったら、
bodyが2画面目で入力されるとして、

class Entry < ActiveRecord::Base
 validates_length_of :body, :if => :_body_required?

 def _body_required?
  !!self.body
 end
end

みたいに普通にやれば良いだけじゃないの?
1画面目ではvaildation走らない。
0241nobodyさん2009/06/05(金) 09:24:07ID:???
ウィザード形式の入力画面って、たとえば最初に男か女か入力したとすると、
その値によって入力する内容が変わったりするってことか?
どういうものかイメージがわかないのだが、複数の画面で登録するってことは、
1つのテーブルにまとめてること自体がおかしいというわけではないの?
0242nobodyさん2009/06/05(金) 10:23:57ID:???
インターフェイスの都合をデータに持ち込んでいる時点で好ましくないと思う。
自分なら、モデルではなく、バラのセッションデータとして属性値を持ち回って、
ウィザードの最後でモデルを作るという形にすると思う。
0243nobodyさん2009/06/05(金) 10:30:16ID:???
いや、セッションで持ち回るのは当たり前だけど
validationをどうするかって話でしょ。
ウィザードの最後でvalidationするの?
0244nobodyさん2009/06/05(金) 10:42:09ID:???
途中のページでも全部のバリデーション走らせてそのページで必要なバリデーション結果だけ見るってのはどうたい。
02452352009/06/06(土) 00:39:58ID:???
>>240-244
みんないろいろなレスありがとう。
とても参考になります。

>>240
確かにシンプルでいいんだけど、最終的に body が必須(validates_presence_of)の場合だと駄目だよね?
実際ちょっと困ったのが、後の画面では必須なのに前段階の画面には入力欄の無いパターンなんだ。

>>241
選択によって入力させる内容が変わるというよりは、入力項目が多い画面なんかで、「次のステップ」みたいに画面分割された感じ。
テーブル設計のミス、と言われればそれまでなんだけど、画面が開発後半になって分割されたりしたから、タイミング的にテーブルを分けるのは難しいんだ・・・。

>>242
確かに良くないとは思う。
ただその方法だと >>243 の指摘の通りで、入力画面が分かれてるから、最期にまとめて実行すると一部の項目が入力欄がないのにエラーメッセージが出てる状態になっちゃうんだよね・・・。

>>244
それって

ttp://blog.masuidrive.jp/index.php/2008/02/23/rails_valid_columns/#

ここの人がやってた validatoin 一旦走らせて、不要な項目のエラーを errors から取り除く、ってことかな??
確かにこの方法使うとコード自体はすっきりしそうなんだけど、毎回全部の validation が一度は実行される、ってのは微妙な気がしてる。

例えば Java の Struts なんかだと ValidatorActionForm みたいに、同じ ActionForm でも パス毎に異なる検証ルールを適用できるよね?
そういう方法が Rails にも用意されているのかと思ったんだけど・・・。
そういう事やるためのプラグインとかってあったりする?
0246nobodyさん2009/06/06(土) 01:13:48ID:???
入力ページA
↓(valid_for_B?)
入力ページB
↓(valid_for_C?)
入力ページC
↓(valid?)
確認
↓(valid?)
完了
って感じで遷移するんだよね、きっと。

controllerのprivateにでもvalid_for_XX?みたいなのを作ってしまえばどうでしょう。
遷移の都合なんだから直書きでもいいかもしれない。
def valid_for_B?(record)
record.valid?
return !(errors.on(:body) || errors.on(:title))
end

昔validate_attributesってプラグインを使ったことがある。
validateするカラムをonly/exceptで指定できる。
検索してどこのリポジトリのが使えそうかおしえてちょ。
最近はgithubでforkされまくるからどこのが良さそうか迷うわな。
02472352009/06/06(土) 02:00:03ID:???
>>246

errors.on(:body) で特定カラムにエラーがあったかどうかチェックできるのか・・・これは知らなかった!
この書き方だと確かにシンプル且つ画面との結合がControllerだけに押さえられそうだね。
valid? 呼んじゃってるから validation が一旦全部実行されちゃう、ってのを無視できる箇所ならこれで良さそう。

validate_attributes ってプラグインがあるんだね。
検索してみたら日本の人が作ったのがあるみたい。

ttp://blog.imishin.com/projects/ruby/validattributes/#

ttp://github.com/kusakari/valid_attributes/tree/master

今年5月くらいにも更新入ってるようなので、メンテはされてそう。
サイトを見る限りなかなか良さそうなので、時間見て触ってみるよ!!
0248nobodyさん2009/06/06(土) 02:42:03ID:???
>>247
NetBeans 6.5でRailsアプリケーションのテスト駆動開発を:企業IT部門の変革を支援するエンタープライズ実践情報サイト EnterpriseZine
http://enterprisezine.jp/article/detail/910?p=3
NetBeans 6.5でRailsアプリケーションのテスト駆動開発を:企業IT部門の変革を支援するエンタープライズ実践情報サイト EnterpriseZine
http://enterprisezine.jp/article/detail/910?p=4

Productクラスにフィールドの値を検証するコードを追加しています。
 Productクラスにインスタンスメソッドvalidateメソッドを実装すると、saveメソッドの直前に実行されます。validateメソッドの中で、
不正な値を見つけ出したら、errorsオブジェクトのaddメソッドを使って、エラーを登録します。このメソッドは第1引数にフィールドの名前、第2引数にエラーメッセージを取ります。



1行目と2行目は、test_should_create_productとほぼ同じですので、3行目から見ていきましょう。
assert p.errors.invalid?(:price)
 priceフィールドでエラーが生じていることを確認しています。これは一種のイディオムとして覚えてください。


0249nobodyさん2009/06/06(土) 05:57:25ID:???
Capistranoの質問させてください。

cap deploy:setupが無事に終わり、cap deploy:cold しようとするのですが、
リポジトリからチェックアウト時にこけてしまいます。
config/deploy.rbは
set :repository, "svn+ssh://my_server/my_program/trunk"
 set :deploy_to, "/home/www/#{application}"
 set :deploy_via, :copy

みたいにしてあるのですが、
ローカルでの実行結果を見ると、

 svn checkout -q -r13 "svn+ssh:\\my_server\my_program\trunk" c:\cygwin\tmp
になってて、権限がない、とかでエラーになってました。
試しに
 svn checkout -q -r13 "svn+ssh://my_server/my_program/trunk" c:\cygwin\tmp
とすると問題なく実行されました。
svnに渡されるパス区切りが何故かバックスラッシュになっているみたいです。
(すいません、細かいログはちょっと忘れました。後でまた書きます)

Windowsのせいなのかな…

環境
・Windows XP SP3
・cygwin + ssh + ssh_agent
・svn, バージョン 1.5.3 (r33570) plink.exeとpageantでssh鍵接続
0250nobodyさん2009/06/08(月) 08:19:40ID:???
AptenaよりもNetBeansのほうが使いやすい。
比較的日本語のせつめいもあるからね
0251nobodyさん2009/06/08(月) 10:27:16ID:???
heroku 以外に無料の Rails ホスティングありませんか
0252nobodyさん2009/06/08(月) 11:03:15ID:???
>>251
自宅サーバー
0253nobodyさん2009/06/08(月) 11:11:23ID:???
自鯖は無料じゃない
02542512009/06/08(月) 11:27:36ID:???
やっぱりないんですかね。。。
252 的なつまらん回答としては
xrea に Rails や、GAE を JRuby on Rails とかかなぁ。
0255nobodyさん2009/06/08(月) 11:29:14ID:???
rake db:migrate すると

can't activate gettext (= 1.93.0, runtime) for [], already activated gettext-2.0.4 for []

と出ます。gettext は 1.93.0 と 2.0.4 が入っています。
エラーメッセージから推察するに 1.93.0 を指定する必要がありそうな感じなのですが、
どうしたらいいでしょうか。
0256nobodyさん2009/06/08(月) 14:35:34ID:???
>>255
gettextはもう使わないようにする。
0257nobodyさん2009/06/08(月) 14:42:45ID:???
252=256
0258nobodyさん2009/06/08(月) 14:45:16ID:???
>>251
herokuって無料ベータ終わったんじゃなかったけ?
クラウド系で1つだけなら無料のところあった気がする
0259nobodyさん2009/06/08(月) 14:47:37ID:???
あったあった
Morph AppSpaceだ。

PaaS, the leader in Platform as a Service :: Morph Labs
http://mor.ph/


Java/GrailsのWebアプリを無料クラウド環境で動かす (1/3) - @IT
http://www.atmarkit.co.jp/fjava/special/appspace/appspace_1.html
02602512009/06/08(月) 14:57:16ID:???
>>258
DB 5M までなら今も無料です。
ただ、5M は小さすぎて。
ttp://heroku.com/pricing#blossom-1
>>259
ありがとうございます。
DB も MySQL/PostgreSQL が用意されていてすごいですね。
0261nobodyさん2009/06/08(月) 15:39:25ID:???
>>255
ttp://www.moongift.jp/2008/06/thetis/
を動かしてみたいんです。
02622492009/06/08(月) 15:59:55ID:???
Capistrano(ver 2.5.5)のソース読んでみています。

謎をとくべく、リポジトリのパスが何故バックスラッシュが円記号になってしまうのか、該当箇所が見つからず困ってます…。

リポジトリのパスが lib/capistrano/recipes/deploy/scm/base.rb の repositoryメソッドで
repositoryという設定から読まれていて、
cap deploy:coldによって、
lib/capistrano/recipes/deploy/strategy/base.rb の Capistrano::Deploy::Strategy.deploy! から、
lib/capistrano/recipes/deploy/scm/subversion.rb の checkout でrepositoryメソッドが呼ばれているまではわかりました。

円記号への変換ルーチンが見つからないよヽ(`Д´)ノ ウワァァン!!
02632492009/06/08(月) 16:31:58ID:???
lib/capistrano/recipes/deploy/strategy/base.rb の Capistrano::Deploy::Strategy.system で

 if RUBY_PLATFORM =~ /win32/
  cmd.gsub!('/','\\') # Replace / with \\

というようなコードがあり、置換されているようでした。

本家でも確認されたこちらの問題のようです。

#76 Invalid subversion url - Capistrano - capistrano
https://capistrano.lighthouseapp.com/projects/8716/tickets/76-invalid-subversion-url
[Capistrano] Problem with :deploy_via, :copy and windows
http://www.mail-archive.com/[email protected]/msg05626.html


パッチあたるバージョンが出るまで、
置換されないように、/ 渡す方法ってないもんでしょうか?

Ruby一般な問題な気がするので、本スレの方で聞いてみます。
0264nobodyさん2009/06/09(火) 00:32:39ID:???
attachment_fuで、storageをfile_systemにしてるんだけど、
これってファイルを更新したくなったらどうするんですか?

ユーザ1人1人に顔アイコンをuploadできるような仕組みを考えてて、
userモデルはphotoモデルをbelongs_toしてる。

photoモデルはhas_attachmentして、uploadされたデータをファイルとして保存してる。

こんな感じで保存してるんだけど
@photo = Photo.new(params[:uploaded_data])#ファイルフィールドからのポスト含む
@photo.save
User.update(ユーザID, [{:photo_id => @photo.id}]


これで新しい画像をアップロードしたときどうすればいいんだろうか・・・と悩んでいるのだけれど・・・。

User.photo.destroy if User.photo
@photo = Photo.new(params[:uploaded_data])
@photo.save
User.update(ユーザID, [{:photo_id => @photo.id}]

こうすればいけるのはわかるのだけど、

@photo = Photo.find(params[:id])
@photo.update_attributes(params[:photo])

こういう風に更新するのが正しいような気がするのですが・・・
0265nobodyさん2009/06/09(火) 16:21:04ID:???
NetBeansでrails触っているのですが、
全体像がつかめません。
どうしたら、どのファイルが必要であるかわかったり、
ファイルごとの関連性がわかるなど
全体像をつかむことが出来ますか?

0266nobodyさん2009/06/09(火) 18:01:27ID:???
>>265
I/O BOOKSの「はじめてのRuby on rails2」がおすすめ。
慣れるとまったく読むことの無い本になるけど、
非常に簡単に説明してくれるので、まずつまづくこと無くサンプルアプリが組めるはず。

学習の最初に火種にいい本だと思ってる。
他はレシピブックが個人的には神だった。
Ruby on rails Webアプリケーションスーパーサンプルは駄目だった。
0267nobodyさん2009/06/09(火) 18:40:55ID:???
> Ruby on rails Webアプリケーションスーパーサンプルは駄目だった。

今まさにこれで勉強してる訳だが(´;∀;)
0268nobodyさん2009/06/09(火) 18:45:52ID:???
駄目な本で勉強してるおまえは駄目駄目とい・・・


あ、すまん。つい
0269nobodyさん2009/06/10(水) 00:00:25ID:???
>>267
ごめん、「駄目」って言い方悪かった。
最初にその本から始めたんだけど、俺の頭が悪くて理解不能だった。
「はじめてのRuby on rails2」は、相当ハードル下げてくれてるから
(その分進みが遅くて内容が薄い)、俺でも理解できた。

> Ruby on rails Webアプリケーションスーパーサンプル
は、バージョンが1.3なのがマイナスだけど、ある程度理解した状態で読んだら
普通にいい本だったよ。
0270nobodyさん2009/06/10(水) 01:15:45ID:???
attachment_fu参考文献すくないorz

has_attachment :content_type => :image, :storage => :file_system,
validates_as_attachment

モデルにこの設定でも、exeとかdllとかでもupできてしまう・・・


has_attachment :content_type => :image,
:storage => :file_system,
:path_prefix=>"public/image/d/",
:max_size => 3000.kilobytes,
:resize_to => '130x100'
validates_as_attachment

この設定でなんでもuploadできるし、3M超えても普通にアップロードできる・・・。

:storage => :file_systemだから?。。。
自分でファイルサイズとかのvalidate作らないとだめなんでしょうか。

他にいい画像アップロードのプラグインないでしょうか。
0271nobodyさん2009/06/10(水) 06:36:31ID:???
>>270
やりたい事がアップロードできるファイルの種類の制限(画像のみ)やファイルサイズ
だけなら、簡単そうだからプラグインのソースを直接修正すればいいと思うよ。
0272nobodyさん2009/06/10(水) 10:51:34ID:???
画像アップロードといえば、paperclipがやたら人気だが
0273nobodyさん2009/06/10(水) 11:08:18ID:???
別にプラグインのソース直すことは無いと思うけど。
一回アップロードされるのはRailsのプラグインだと、
いまのところ仕方ないこと。
アップロード後にvalidationかけてはじく。

仕事で使うとどうしても確認画面入ってくるから、
そういう場合はいまだfile_column一択になってしまう。
0274nobodyさん2009/06/10(水) 11:22:05ID:???
>>273
仕事で Rails 使っている人発見!
入力→確認→登録の流れをどう実装していますか。

登録画面にも確認画面を表示しているならその方法や、
確認→登録の hidden は何か特別なこととかしてるかとか。
0275nobodyさん2009/06/10(水) 11:47:43ID:???
>>274
確認画面JavaScriptでやれとかいう人もいるけど、
ちゃんと画面つくってる。
無理にRESTにこだわる必要なし。
JavaScriptでやると、登録まできちんとしたvalidationできないし。

値はsessionで持ち回し。まぁ、他の言語でも普通な方法。
hiddenだと、確認→登録の時にもvalidationしなきゃいけないので。
02762742009/06/10(水) 12:49:12ID:???
>>275
なるほど。session ですか。便利ですものね。
ありがとうございます。
0277nobodyさん2009/06/10(水) 13:04:17ID:???
>>271
どうもです。

↓とりあえずこれでファイルの種類特定するようにしますた。
validates_inclusion_of :content_type, :in => ["image/pjpeg", "image/jpeg", "image/gif", "image/png"]
ファイルサイズもsave前に取れる(windowsだと取れません。)のでこれでいこうかとおもってる。

しかし、windowsだとアップロードファイルのsize取れなくて、わざわざlinuxでテストしないといけない・・・。
こういうの続くと、開発環境をlinuxしたいな〜って思うようになってきたんですが、
慣れればwindows並の作業効率出せるもんなんでしょうか。

今のwin環境は秀丸+grepツール+windows付属品。
0278nobodyさん2009/06/10(水) 13:34:23ID:???
確認→登録の時にも勝手にバリデーションされるじゃん?

なんか違う意味でのバリデーションなんだろうか。
0279nobodyさん2009/06/10(水) 13:53:55ID:???
確認と登録に同じバリデーションを通るような処理を書くの面倒だから、
入力→確認→登録、というテンプレートないものかな。
0280nobodyさん2009/06/10(水) 14:04:01ID:???
仕事って言っても社内業務系は基本的に必要ないだろ。
ネット系なら確認画面は必須だが。
0281nobodyさん2009/06/10(水) 14:19:46ID:???
>>278
入力→確認 のときにvalidationかけてセッションに入れる。
エラーが出たら、入力に戻す。
確認→登録 のときは、すでにvalidationが通ってるから大丈夫。
登録から入力に戻すってのは、一画面余計に通ることになるので避けたい。
0282nobodyさん2009/06/10(水) 15:32:42ID:???
同じバリデーしょんっつてもvalid?呼ぶだけでしょ?

まあ、そう単純じゃない場合も良くあるんだよねえ。

すると、テンプレにしてもプラグインにしてもすべてのケースを網羅
できそうもないわけですね。

> 登録から入力に戻すってのは、一画面余計に通ることになるので避けたい。
redirect_toするだけじゃないの?


0283nobodyさん2009/06/10(水) 15:43:46ID:???
>>282
入力→確認→登録(エラー)→入力
よりは、
入力→確認(エラー)→入力
の方が、余計な確認画面とおらなくて良いって話でしょ。

0284nobodyさん2009/06/10(水) 16:25:24ID:???
入力画面と確認画面は if で分ける感じ?こんな感じで。

<% if 入力画面 %>
<%= f.text_field :foor %>
<% else %>
<%= params[:foo] %>
<% end %>
0285nobodyさん2009/06/11(木) 00:59:09ID:???
入力画面と確認画面は、別アクション。
当然、テンプレートも別。
デザインも別で上がって来るし、別の方が楽。
0286nobodyさん2009/06/11(木) 11:11:55ID:???
別に分けると楽なんだけど、項目の変更が入ると
入力と確認に手を入れないといけないのが DRY じゃなくて何か嫌。
YAML からでも入力と確認画面を自動生成する仕組みがあるといいのだけど。
0287nobodyさん2009/06/11(木) 14:27:20ID:???
仮にYAMLで自動になってても、デザインまでは直してくれない。
結局は手動で直すしか…。
仕事でやってると、デザイナの上げてきたデザインはめるのが辛い。
0288nobodyさん2009/06/11(木) 14:43:46ID:???
テンプレートはcssセレクタで指定して内容変えたり表示非表示したいよな。
あとサーバ不要でpartialできる仕組みを各ブラウザに持たせてデザイナの
成果物をそのまま使えるようにできないものだろうか。
<include partial="./footer.html" />

それか、Rails実行環境とSVNクライアントを
ブラウザのプラグインレベルで提供。でざいなさんもerbやってもらう。
0289nobodyさん2009/06/11(木) 15:13:57ID:???
デザイナーにソースを埋め込んでもらえばいいじゃん
そんなに複雑なロジックをテンプレートに埋め込んでるの?
0290nobodyさん2009/06/11(木) 17:25:37ID:???
うちはデザイナにerb教えてみたけど、ほとんどに人が扱えなかった。
Railsだとフォーム関連のタグが全部ヘルパになってるし、
タグにclass一個付けるにも引数にしなきゃいけないので
その辺でダメだったみたい。

他にも便利な独自ヘルパ作ってる場合(ビューの一部がヘルパに行ってる)や、
Ajaxでコントローラ内にRJSを入れていて、
そこにHTMLが入って来たりすることもある。

別にテンプレートにロジックが入ってる訳じゃなくても
デザイナには難しいみたいよ。
0291nobodyさん2009/06/11(木) 18:31:40ID:???
デザイナには erb 難しいね。
あと、たとえやってくれても、
erb のタグとか消してしまっていて、
確認をしないといけないから
開発者の手間があんまり変わらないし。
02922672009/06/11(木) 19:47:21ID:???
件の本読んでたらscaffoldが完了しないわ動作確認でRutingErrorになるわで
悩んでたんだけど2.0から変わってたのね・・・情報古いわ・・・
0293nobodyさん2009/06/11(木) 20:12:53ID:???
DHHはデザイナもerbやれって言ってたようなきがする。

ところで、RESTfulな編集系actionって
http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions
によると
new/create
edit/update
destroy
だけど、

確認画面が必要となると
new_1
new_2
new_confirm
new_commit
edit_1
edit_2
edit_confirm
edit_commit
delete_confirm
delete_commit
とかしたくなりませんか?

new
new_confirm
create
がいいのかなあ。

皆様どうしてますか?
0294nobodyさん2009/06/12(金) 00:58:46ID:???
デザイナは馬鹿だしな。
DWで対応してるPHPのほうが、まだ抵抗が少ない。
いまやHTMLと画像が用意出来れば十分な時代でもないのに。
0295nobodyさん2009/06/12(金) 08:32:37ID:???
>>294
デザイナーはバカじゃないだろ…。
役割を考えろ。
0296nobodyさん2009/06/12(金) 09:02:22ID:???
このバカとか思って教えても伝わらないよ
相手が理解できないならまず自分の教え方に問題がないか振り返らないと

代入のやり方とヘルパーの機能をまとめたものを渡せばある程度なんとかなるんじゃないだろうか
あとは分岐と繰り返しだけど、繰り返しは自動生成されるやつそのままでいけるだろうし
分岐も何回かやれば、簡単なIF文は身につくような


まあ、デザイナーに教えたことないから完全に脳内シミュレーションで
実際はイライラするのかもしれないけど
0297nobodyさん2009/06/12(金) 12:39:20ID:???
Smarty分かる人でもRailsのerbは無理だったよ。
>>290 みたいにデザインすべき要素があちこちに分散していて
全体の把握がしずらいみたい。
開発側でデザインはめて、はめた後のものを少し修正ならできた。

あと開発側としても、デザイナにerb触らせて動かなくなったりするのが
怖いというのがある。

0298nobodyさん2009/06/12(金) 13:04:00ID:???
>>297
ほんとに。Smartyわかってもダメなのか。

ヘルパーって調べるのとか結構時間がかかって
面倒とか思ってるのはおれだけだろうか。

でもあると使いたくなるし、後で使ってないところを見つけると直したくなる。
いっそごそっとなくなってくれれば楽なのかもとたまに思う。
相当役に立つやつは残してほしいが。
0299nobodyさん2009/06/12(金) 16:24:44ID:???
>>295
数人でやっている零細なんだろ
0300nobodyさん2009/06/12(金) 21:47:50ID:???
>>281
セッションにいれるのはparamsかな。
cookie storeだとあまり大きいのははいらないだよね?
0301nobodyさん2009/06/13(土) 03:57:58ID:???
そもそも論理的思考が皆無。
HTMLのタグとかも理解せずにDW弄ってる奴らだし。
ちゃんとALTタグ設定してるの見た事無い。orz
0302nobodyさん2009/06/13(土) 05:18:17ID:???
じゃあ、お前は彼らと同じようにデザインが出来るのか?
0303nobodyさん2009/06/13(土) 13:49:34ID:???
>>300
うちはactive record storeが多い。
cookie storeにした事はほとんどないかも

0304nobodyさん2009/06/13(土) 21:38:32ID:eLQY8eGW
Stringを拡張しようとおもうだけど、railsだとどこに書くのが適切?
0305nobodyさん2009/06/13(土) 22:13:41ID:???
拡張を定義したファイルを置く位置?
lib/string_ext.rb
かな。
0306nobodyさん2009/06/13(土) 22:51:14ID:???
lib以下でもいいし、こんな感じでプラグインにしてもいいかも。
vendor/plugins/string_ext/init.rb → (require 'string_ext'って書くだけ
vendor/plugins/string_ext/lib/string_ext.rb → Stringの拡張処理
0307nobodyさん2009/06/13(土) 23:08:45ID:???
config/initializers/に置くと自動的に読み込まれるけど、
「初期化」じゃないからきっと行儀が悪い気がする。
0308nobodyさん2009/06/13(土) 23:35:49ID:???
>>307
おれならたぶんそこに置く。というか実際置いてる。
使うときに何の宣言もいらないし。

初期化って「本処理が始まる前にやっておくべきもの」だから、
それほど行儀が悪いということはないんじゃないだろうか。
0309nobodyさん2009/06/15(月) 11:54:46ID:???
3.0の正式版はまだか〜?
はやくしてくれ〜
0310nobodyさん2009/06/15(月) 13:03:54ID:???
>>309
無茶いうな。

0311nobodyさん2009/06/15(月) 13:42:47ID:???
>>310
なんで?6月リリースを目指すってどこかで読んだ気がするけど
0312nobodyさん2009/06/15(月) 14:08:27ID:???
せっかく Rails 2.1.1 覚えたのに、
3.0 系列になったら、またごっそり変わるのか・・・・
0313nobodyさん2009/06/15(月) 14:09:49ID:???
>>304-308
自分は、config/environment.rb に、

class << String
 〜
end

みたいに再定義していたんだけど、この方法はお行儀悪いでしょうか?
0314nobodyさん2009/06/15(月) 14:16:41ID:???
Merbから高速化のノウハウを吸収するらしいじゃん。
おれは歓迎だけど。ただ1.9.1が出て少したったし、
Railsも3で少し落ち着いてほしいな。もうかなり充実してるし。
0315nobodyさん2009/06/15(月) 14:28:22ID:???
ttp://qwik.jp/asakusarb/010_log.html#179f851c7dd320f1cd5999d343e24f83
# Rails 3.0のRuby 1.9対応がひどい件
0316nobodyさん2009/06/15(月) 14:53:49ID:???
>>311

http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3
> The probably-overly-optimistic goal is to have at least a beta version ready
> for RailsConf 2009 in Las Vegas.

probably-overly-optimistic
beta

なお、RailsConf 2009 in Las Vegas は5月アタマだった。
0317nobodyさん2009/06/15(月) 16:53:13ID:???
>>313

environmentの意味を考えれば、
行儀が悪いというよりやってはいけないんじゃないだろうか。
それだったら最初に読むファイルは1個でいいように思う。
0318nobodyさん2009/06/15(月) 18:48:13ID:???
>>263
Capistranoのwin32での円記号が置換される問題ですが
結局、以下のようにパッチあてました。(全角空白を半角空白に置換してください)

--- base.org.rb 2009-06-08 17:12:53.187500000 +0900
+++ base.rb 2009-06-08 17:13:44.515625000 +0900
@@ -50,7 +50,12 @@
           def system(*args)
             cmd = args.join(' ')
             if RUBY_PLATFORM =~ /win32/
-              cmd.gsub!('/','\\') # Replace / with \\
+              parts = cmd.split(' ')
+              parts.collect! do |part|
+                part.gsub!('/','\\') unless /\/\// =~ part # if the string has // is probably a url, don't change.
+                part
+              end
+              cmd = parts.join(' ')
               cmd.gsub!(/^cd /,'cd /D ') # Replace cd with cd /D
               cmd.gsub!(/&& cd /,'&& cd /D ') # Replace cd with cd /D
               logger.trace "executing locally: #{cmd}"



余裕があったら、githubでリクエストしとけばいいのかな…。
つかCapistranon メインの開発リポジトリってどこなんでしょ?たぶんgithubのどこかだとは思うのですが…
0319nobodyさん2009/06/15(月) 18:59:00ID:???
Capistranoで標準入力扱うにはどうしたらよいものでしょうか?
複数行のmysqlコマンドを実行したいものなのですが…

とりあえず、思いついたのは、ファイルにいったん出力する方法です。
 sql = <<-
  (sqlいろいろ)
 EOF
 put sql, "#{shared_path}/db/tmp.sql"
 run "mysql hage_db -u hoge -p unkopass << #{shared_path}/db/tmp.sql"

見たいにする方法です。
しかし、何かスマートじゃないような…。
もっとスマートな方法はないものでしょうか?
03203192009/06/16(火) 07:26:15ID:???
>>319
ごめんなさい。
x run "mysql hage_db -u hoge -p unkopass << #{shared_path}/db/tmp.sql"
o run "mysql hage_db -u hoge -p unkopass < #{shared_path}/db/tmp.sql"
でした。
よく考えたら、<<で後ろに文字列つければいけるのかな…
0321nobodyさん2009/06/16(火) 10:23:15ID:???
>>315
どうひどいのかその資料からじゃさっぱり分からんな
資料というかメモ書きみたいな感じだが
0322nobodyさん2009/06/16(火) 12:44:13ID:???
>>318
なんでわざわざくっつけてからまた分解してまたまたくっつけ直すんだよ。
0323nobodyさん2009/06/16(火) 15:34:20ID:???
今はじめてJSONを使った。

こんなに便利だとは・・・。
今までajaxやるときは鯖からxml返して、ブラウザ側でxmlをパースしてたよ・・・。
0324nobodyさん2009/06/16(火) 15:37:41ID:???
>>323
今はいろんな言語で JSON を扱えるから、
サーバサイドの言語が変わっても移行しやすいだろうね。
0325nobodyさん2009/06/16(火) 18:39:01ID:???
serializeなカラムの生なYAMLテキストを得るのに
*_before_type_castを使うとデシリアライズされているかどうかによって
動作が変わってしまうのが気持ち悪いです。

Loading development environment (Rails 2.3.2)
>> User.create(:data=>{:a=>1}); u=User.last; u.data_before_type_cast.class
=> String
>> User.create(:data=>{:a=>1}); u=User.last; u.data; u.data_before_type_cast.class
=> Hash

シリアライズ後のサイズを見たいのです。
0326nobodyさん2009/06/16(火) 19:21:35ID:???
> サーバサイドの言語が変わっても移行しやすいだろうね。

マイクロソフト涙目w
03273192009/06/16(火) 19:25:39ID:???
Capistranoでの標準入力の渡し方ですが、
runメソッドの2番目の引数のハッシュで :data で指定してやればいいみたいでした。
ソースのドキュメントに記述がありました。
( lib/capistrano/configuration/actions/invocation.rb の Capistrano::Configuration::Actions::Invocation.run)

task :hello do
 s = <<-EOF
show databases;
exit
 EOF

 run "mysql -u root -pfuckmyhead", :data => s do |ch, stream, out|
  STDOUT.print out
  STDOUT.flush
 end
end
0328nobodyさん2009/06/16(火) 20:30:24ID:???
すいません、Passengerってデプロイ時の再起動はいらないと聞いていたのですが、実際どうなのでしょうか?

↓こちらのサイトではtmp/restart.txtを生成して再起動しているのですが、必要ないものなのでしょうか?
PassengerとcapistranoでのデプロイTips - diaの備忘録
http://d.hatena.ne.jp/DianthuDia/20080829/1219969683
0329nobodyさん2009/06/16(火) 20:35:03ID:???
>>328
capistrano は使ったことがないので知らないが、
生(?)で Passenger を使っている。

ソースを更新したとき、Passenger は、Apache の再起動はいらないけど、
RAILS_ROOT/tmp/restart.txt を touch してタイムスタンプを変えておく。
すると、次回の http request 時に、ソースを再読み込みする。

>>328 のページを斜め読みしたけど、なかで touch tmp/restart.txt をやっているようだけど?
0330nobodyさん2009/06/16(火) 20:43:09ID:???
>>325
unserializeを通ると@attributesの中身自体が差し替えられてしまう。
で、読み取り系はことごとくunserialzieを通ってしまう。

そうなる前に
u.instance_variable_get(:@attributes)[:data]
でどうか。

行儀よくないけど。
0331nobodyさん2009/06/16(火) 21:58:34ID:???
capistranoとかでデプロイする時
バックアップとかも同時に出来るの?
0332nobodyさん2009/06/16(火) 22:20:53ID:???
デフォルトのdeployだと、リリースごとにrelease/タイムスタンプ
というディレクトリに配置され、currentという名前で最新バージョンに
シンボリックリンクが張られる。
で、rollbackというタスクで前のバージョンに戻せる。
まー、これで不足ならタスク書けばだいたいのことはできるよ。
0333nobodyさん2009/06/17(水) 10:23:35ID:???
>>329
「再起動はいらない」ってapacheの再起動のことなんですね。
Passengerは touch tmp/restart.txt で再起動させるようにしてみます。
0334nobodyさん2009/06/17(水) 16:39:38ID:???
a というテーブルに b.id 用の FK である a.b_id を追加しようと思っています。

ruby script/generate migration AddAsToBsId b_id:text

すると、rake db:migrate で bs_id というテーブルに追加しようとします。
どのように書けばいいでしょうか。
03353342009/06/17(水) 16:53:33ID:???
自己解決しました。

ruby script/generate migration AddBsIdToAs b_id:text

と書くべきでした。
0336nobodyさん2009/06/17(水) 18:16:17ID:???
下記エラーが出るのは scaffold でテーブル名を複数形にすると発生するのですよね?

You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]

テーブルを削除せず、うまくやる方法はないものでしょうか。
0337nobodyさん2009/06/18(木) 10:58:31ID:???
Railsというのはruby以外のほかの言語も同時に使えるのでしょうか?


WEBアプリケーションの開発を楽にしてくれるだけで
基本的にRubyなんですか?
rubyに出来ないことはRailsにも出来ないということでしょうか?

Railsはjavascriptとかajaxとか
ウェブアプリを開発する上で
rubyとほかの言語も一緒に書くように出来るプラットフォームみたいな物なのでしょうか?

rubyという言語がjavascriptとかの言語も一緒に使える物なのか?
それとも
railsがほかの言語も使えるようにプラットフォームが整備されている物なのか
どうなんでしょうか?
0338nobodyさん2009/06/18(木) 11:02:06ID:???
学校の宿題なら宿題スレにいけ
0339nobodyさん2009/06/18(木) 11:23:55ID:???
JavaScript を調べるとスッキリするだろうね
0340nobodyさん2009/06/18(木) 14:48:28ID:???
先輩方に質問です!
関連するモデルが存在する場合に、モデルの削除を禁止したのですが何か方法はありますか?
例えば、自分のモデルのデータを削除したい時、関連相手が自分に対してbelongs_toしている場合は
削除できないようにしたいのです。
0341nobodyさん2009/06/18(木) 14:53:02ID:???
アプリで制御したいのかDBの制約でいいのかわからんな
DBの制約でいいならDBMSを追記・・・というかDBスレへ
アプリの制御なら普通にIFじゃダメなのか?
0342nobodyさん2009/06/18(木) 17:02:39ID:ZZEBh1dd
作ったアプリを海外VPSで動かしはじめて2ヶ月くらい。
システムを更新するたびに、面倒くさい思いをするんだけど、みんなどう更新してるの?
俺は今FTPサーバを構築して、サーバのファイルをそのまま上書きuploadしてるw
そしてapache再起動(passengerです。)

tracとかsvn使ったことないんだけど、ブラウザ上でソース変更して、保存してapache再起動したら
OK!みたいなことできるんだろうか。
0343nobodyさん2009/06/18(木) 17:11:57ID:???
>>342
Railsデプロイよめば?
0344nobodyさん2009/06/18(木) 17:18:35ID:???
>> 341
ActiveRecordの機能としてあるかどうか知りたかったんです。
削除対象のオブジェクトに関連しているモデルの存在チェックを行ってから
何も無ければ削除するようにしたいんです。
0345nobodyさん2009/06/18(木) 17:27:31ID:???
サイトごとに異なる設定はどこに書けばよいのですか。
ffmpegを使いたいのですが、ffmpegのパスを定数として
MyFfmpeg::BIN = '/usr/local/bin/ffmpeg'
このように設定したいのです。
これをどのファイルに書けばいいのですか。
initializers の下に ffmpeg_helper.rb を作ってそこに書いてみたのですが
test のときはいいのですが development ではロードされませんでした。
0346nobodyさん2009/06/18(木) 17:32:31ID:???
>>343
ググってみた。

Railsアプリケーションをデプロイしようとするとさまざまな問題が生じるため、
Railsアプリケーションの開発は好きだけれどもデプロイは嫌いという技術者は少なくありません。
本書はアプリケーションのデプロイ時に技術者が直面するさまざまな問題の解決策を体系的にまとめた
Railsデプロイガイドです。
本書ではまずRailsアプリケーションのデプロイを家探しにたとえて解説します。
そして、一連のデプロイ処理の中で、Railsアプリケーションのホスティング方式の選択、デプロイの自動化、
サーバ管理、クラスタリング手法といった高度なトピックについて詳しく解説します。

3000円。

欲しいな〜これ。でもデプロイに1冊の本はやや大げさなきもするなぁ。
0347nobodyさん2009/06/18(木) 18:14:38ID:???
Table.create data みたいに一行 insert したら、
その行の id を取得するにはどうしたらいいでしょうか?
0348nobodyさん2009/06/18(木) 18:28:09ID:???
>>344
has_many と belongs_to が適切に設定されていれば、
categories(1) - items(N)だとすると
category.itemsでモデルの配列を取得できるはずだけど

itemsがあまりにも膨大なレコードの場合は気をつけてね
has_many の before_removeと組み合わせるといいのかも

と思ったら、has_many に :dependent => restrict っていつの間にか増えてるな
これでできるんじゃないだろうか
教えたのだからもし試すのなら報告を義務としたい
そうすることでスレが良くなるから


>>346
おれはそれ買ってデプロイしてるよ。
薄い本だけど3000円は安いと思う。
Subversionなんて古いというやつは少し価値が落ちるかもしれんが。
あとMongrelが中心な感じかな。
0349nobodyさん2009/06/18(木) 19:24:01ID:???
>>346
この本は Passenger が載ってないのが惜しい
(タイミング的にちょっと前だったので)
0350nobodyさん2009/06/18(木) 19:31:33ID:???
メモリが少ないVPSはMongrelの方がいい場合も多いんじゃないだろうか
0351nobodyさん2009/06/18(木) 22:26:17ID:???
>>346
デプロイ面倒なら
クラウドコンピューターでもつかえよ
googleとかaptenaとかamazonとか
アップロード先の設定をしなくてもいいクラウド技術があるだろ
0352nobodyさん2009/06/18(木) 22:44:49ID:???
>>351
言ってる意味がわからん。
クラウドって、WebAPIでシステム間を繋ぐような、そんなイメージなんだが・・・。
0353nobodyさん2009/06/18(木) 23:21:25ID:???
>>352
ちょっと違う。
Web API でシステムをまたいで、ひとつの大きなシステムをかんがえたときに、

たとえば、システムA とシステムB とシステムC を、SOAP なりの web API で連携するが、
すべて社内の自鯖の場合(社内じゃなくてもいいけど):
→これは、web API でつないでいるけど、クラウドとは言わないよね。

クラウドとは、

・自分で作ったプログラムを、自鯖じゃないところで運用できる
 →駅前探検倶楽部の API とか楽天の API を呼び出すのは、クラウドとは言えないの?
   →この場合、自分で作ってリリースしたプログラムを呼び出しているのではなく、
   他の人が作ったサービスを呼び出しているだけなので、
   Web 2.0 的とは言ってよいが、クラウドとは言えない

・運用をホストしているところが、特にこちらがなにもしてくれなくてもスケールしてくれる。
 →レン鯖を借りて、そこでプログラムを動かすのとは違うの?
   →レン鯖を借りて、自分が作ったプログラムをリリースして動かせるが、
   そのプログラムの負荷が大きくなっても、基本的にレン鯖業者は台数を増やしてくれないし、
   お金を払って増やしてくれたとしても、それを活かすにはこちらがプログラム改修が必要。
   →クラウドコンピューティングの場合、データストアが Bigtable など、もともとサーバが増えたら
     自動的にスケールしてくれるような仕組みがある。
  
0354nobodyさん2009/06/18(木) 23:41:49ID:???
>>342
Subversionはあると便利だよ。
1. 開発環境でテストを十分にやってからコミット。
2. 本番環境でsvn up→touch tmp/restart.txt
個人でやる分にはこれで十分な気がする。
サーバの台数も少ないだろうし。
0355nobodyさん2009/06/19(金) 01:37:02ID:???
restfulなrouteを使う際に:idの部分を:nameにしてもらうような
オプションはないんだろうか。
数字のIDは味気ないからユーザアカウント名にしたいんです。

パスは/users/:nameで、
link_to(h(@user.name), @user)
としたときに
link_to(h(@user.name), :name=>@user.name)
と同じ結果になるイメージです。

/users/newはどうするんだって問題があるのか・・・
0356nobodyさん2009/06/19(金) 02:06:18ID:???
試してないけど
class User < AR::Base
alias to_param name
end
でどうだろう。
0357nobodyさん2009/06/19(金) 06:54:41ID:???
Subversionこれから覚えるんだったら
GitかMeなんとかを覚えた方がいい
0358nobodyさん2009/06/19(金) 09:45:43ID:???
同感。今なら git
0359nobodyさん2009/06/19(金) 09:49:12ID:???
使ったことないのだがGITの利点って具体的にわからん。
実用的な理由でsubversionではとても不便な何かが改善されてるのか?
流行始めてるのはわかるが、流行で飛びつくのってもううんざりだし。
0360nobodyさん2009/06/19(金) 10:07:37ID:???
DVCSだと、ローカルでブランチを切ってアレな実験を好き勝手にやっても、
取得元に反映せずに済む。
# svk終了しちゃったしな。

0361nobodyさん2009/06/19(金) 10:07:57ID:???
>>353
くわしい説明ありがとう。
勉強になるわ。

0362nobodyさん2009/06/19(金) 10:14:00ID:???
>>360
う〜ん、おれとしては特に魅力を感じないなあ
結局なんだかんだCSVがSubversionに置き換えられたように、
gitだのマーシャル?だのになるんだろうが今はいいや
0363nobodyさん2009/06/19(金) 10:18:15ID:???
>>362
Mercurialのことなら、「マーキュリアル」(mercuryの形容詞形の名詞的用法)
でも普通は hg って表記する。
0364nobodyさん2009/06/19(金) 10:50:03ID:???
insert into t(c1, c2, c3) values('b', 'a', 'r');

は

T.create data

と書けますが、PostgreSQL 8 からの

insert into t(c1, c2, c3) values('b', 'a', 'r') RETURNING id;

はどう書けばいいでしょうか。
( RETURNING id は、insert した id を返してくれます )

execute で SQL を書けば可能ですが、
Rails 風に短縮して書けると嬉しいです。
0365nobodyさん2009/06/19(金) 10:59:36ID:???
>>363
うお!イメージにあったスペルと違ってたw
これは恥ずかしい
0366nobodyさん2009/06/19(金) 12:31:56ID:???
>356

ttp://blog.tkmr.org/tatsuya/show/247-rails-37signals-url
これで妥協かも。
/users/123-tomo
って感じで「数字-名前」になる。
数字だけよりだいぶましです。
0367nobodyさん2009/06/19(金) 12:36:44ID:???
すません。
ttp://d.hatena.ne.jp/chyk/20090211/1234362408
これでビンゴっぽい。
to_paramでnameを返すようにしておいて、
コントローラでは
User.find(params[:id])
のところを
User.find_by_name(params[:id])
で良さそう。
試してないけど。

>356 ありがとう。
0368nobodyさん2009/06/19(金) 13:26:06ID:???
>>364
ようわからんが、

model = TModel.new
model.c1 = 'b'
model.c2 = 'a'
model.c3 = 'r'
foo = model.create!

で、foo に insert した時のオブジェクトが入るから、
foo.id で取り出せばいいんじゃないの?
0369nobodyさん2009/06/19(金) 13:31:36ID:???
>>362
Subversion と Gitなどの分散バージョン管理システムの話が出ているが、
くわしくはム板の該当スレのほうが詳しいが、
別に Git/Mercurial は、Subversion の置き換えではない。

中央集中型のほうが便利なときもあれば、分散型のほうが便利なときもある。

個人で使うのだったら、Git の方が速いなどのという理由や、web 上でも取り上げられることが多くなってきたので
移行している人も多いけど、
大規模プロジェクトで、スキルレベルの低い人もいるような場合は、Subversion のほうがいい。
そんなひとが hg push とか hg pull とか絶対覚えてくれない。

だから要所要所で使っていけばよい。
03703642009/06/19(金) 13:37:15ID:???
>>368
返り値があったのですね。
うまくいきました。ありがとうございますっ。
0371nobodyさん2009/06/19(金) 13:46:42ID:???
CVSの時もみんなのスキルレベルが高くないと酷い目に遭ってたしなあ。
結局、専任で必死にマージしてバージョン管理する人間が居たほうがうまく逝く罠。
二人以上がお互いに自分のソースの記述をマージし合って停滞したりもするし。
0372nobodyさん2009/06/19(金) 14:08:46ID:???
どんなにいい道具だっておかしな使い方すればダメだよ

バージョン管理の場合はスキルレベルじゃなくて物事を整理する能力だと思う
それをスキルと言ってしまえばスキルなんだが
おれはPCのデスクトップがごちゃごちゃのやつに
バージョン管理システムはいじらせたくない
0373nobodyさん2009/06/19(金) 14:20:03ID:???
デスクトップぐちゃぐちゃの奴にこそ
VCS を使わせて整理の大切さを教える派
0374nobodyさん2009/06/19(金) 15:25:38ID:???
読書記録を作ろうと思っています。

■ books テーブル
id|title
--+-----
10|foo
11|bar

■ records テーブル
id|books_id|comment
--+--------+-------
20|   10|good!!
21|   11|bad...

model/record.rb に「belongs_to :book」を追加しました。

view/records/show.html.erb に
<%=h @memo[:title] %> とした場合は空欄だし、
<%=h book[:titl] %> やm
<%=h record[:title] %>
としてもタイトルが取得できず、

You have a nil object when you didn't expect it!
The error occurred while evaluating nil.title

と出ます。DB を見てもデータは入っています。
どうすれば title が引けるでしょうか。
0375nobodyさん2009/06/19(金) 16:07:00ID:???
Subversionが足し算ならGit/Mercurialはかけ算
3*3は何ですかと質問して
Subversionは3が3つだから3+3+3=9と答えて
Git/Mercurialは3*3=9と九九を暗記している

0376nobodyさん2009/06/19(金) 16:24:48ID:???
その例え、全然わかんないよ
分かってるやつは理解できるのかもしれないけど
03773742009/06/19(金) 16:31:43ID:???
自己解決しました。
@record.book.title でいけました。
0378nobodyさん2009/06/19(金) 18:30:49ID:???
未だにマニュアルを見ないと svnのリポジトリをマージできません。
それなのに git だの hgだのを学ばねばならぬとは楽しみなことだ。

CVSでも、考えてみれば、マージはワーキングコピーのdiff & patchで済ましていた気がする。
0379nobodyさん2009/06/19(金) 18:45:42ID:???
ツールを追っかけて、フレームワークを追っかけて
0380nobodyさん2009/06/19(金) 19:23:06ID:???
>>378
今では面倒なことすべてやってくれるでしょ。
GUI利用して視覚的に見やすくなってるし。
0381nobodyさん2009/06/20(土) 01:21:31ID:???
>>372
>>373
俺はデスクトップぐちゃぐちゃだがsvnリポジトリのコミット担当してるし
ソースは無茶苦茶きれいに整理するし、gitだって使えるぞ
ひどい偏見だw
0382nobodyさん2009/06/20(土) 07:33:20ID:???
>>337
そもそも、JavaScriptはRails関係なく使えます。他のフレームワークでも使えるでしょう。
AJAXサポートなど、楽に使える機能も提供されてますよ。

>>342
そういう作業を「デプロイ」といいます。
退屈な作業なので、機械任せにするために、定番どころではcapistranoを使います。
cap deployで一発デプロイできるようになると快感です。

あと、Passengerならapache再起動要らないですよ。
リモートに、touch tmp/restart.txt するだけでPassengerだけ再起動してくれます。
このためのcapistranoの設定(capistrano文脈ではレシピといいます)も、
ネットで検索すればでてきます。

注意したい点は、capistranoは公式ページのドキュメントがなかなかに不親切なため、
ネットのブログに散見される設定(レシピ)を読んだり、ソースを読むかしないと挙動がイマイチわからない点があります。
ただ、Railsをやっている人にはできない作業ではないでしょう。

ぜひ、調べてみてください。
0383nobodyさん2009/06/20(土) 07:46:09ID:???
>>342
tracですが、元々はバグトラッキングシステムというくらいですので、バグ管理のものでありましたが、
今ではプロジェクト管理ツールというように広い意味で使われています。

チケット(プロジェクト管理ツールでの問題やタスクの登録単位)を登録することで、
問題やタスクを管理することができます。
複数人でのプロジェクトや他の人に問題などを公開する必要のある場合に効果を発揮するでしょう。
(私は一人プロジェクトでも使ってますが)

また、Subversion、git、Mercurialなどのバージョン管理ツールと連携して、
webでソースを閲覧したり、チケットと
バージョン管理のコミット(切りのよいソースの変更単位)を関連付けて、
お互いをリンクしたり、コミット時に自動的にチケットを終了させる、なんてこともできます。

最近では、チケット駆動開発といって、タスクのようなものをツールに登録していって、
管理ツールでプロジェクトのタスクも管理していく方法も広まってきました。


私はRails製のRedmineというツールを使っています。
Redmineは予想時間や経過時間の記録や集計、
予定日付の指定によるガントチャートの自動作成などができるため、
仕事のプロジェクトや、さらには自分のローカルにインスコしてタスク管理にも使ってます。
0384nobodyさん2009/06/20(土) 07:50:25ID:???
>>342
さて、svnとデプロイですが、(これは、gitやmercurialでも状況は同じ)
svnなどで管理しておくと、capistranoからもデプロイしやすいです。

svnの特定リビジョン(バージョン)を常に本番鯖に一発でデプロイする、とかの指定も思うがままです。

そうなると、svnを外部から参照できるように公開しておかなくてはいけないのか?という疑問がわいてきますが、
そうでなくてもcapistranoではデプロイできます。

 set :deploy_via, :copy

という設定で検索してみてください。ローカル(やローカルからアクセスできる)svnリポジトリから、
単純なコピーのような感じで、リモートにデプロイできます。
0385nobodyさん2009/06/20(土) 07:51:24ID:???
> svnの特定リビジョン(バージョン)を常に本番鯖に一発でデプロイする、とかの指定も思うがままです。
特定ブランチ、最新バージョン

といったほうがいいですね。訂正
0386nobodyさん2009/06/20(土) 11:10:15ID:???
>>384
くわしくありがとうございます。
デプロイじゃなくてソース管理の話になってしまうけど、今サーバー専用マシン(に見立てたVM)に
svnサーバーいれて、apache連携させて、windowsからTortoiseSVNで操作してみました。
これは便利ですね〜。
capistranoとの連携も試してみようと思います。

ここにいる人たちにとってはスライムレベルの話しかもしれませんが…。
0387nobodyさん2009/06/20(土) 11:13:16ID:???
客先の社内システムにrailsで提案してみる。
0388nobodyさん2009/06/20(土) 11:35:02ID:???
おれに作らせてくれ。Railsの仕事ないよ。PHPばっか
0389nobodyさん2009/06/20(土) 14:08:03ID:???
自分のところは、何で作るかは自分で決められるから今はRailsだけでやってる。
客は何で作るかには興味なくて、欲しいシステムと性能が得られれば文句はないわけなんだよね。
PHPで作れっていうお客さんってどういう感じなのかな?
0390nobodyさん2009/06/20(土) 14:36:33ID:???
純粋なユーザーならそうかもしれんが、
受注したやつを回すところもあるから。
自分とこのエンジニアが対応できる言語となると、
数としてはPHPの方がずっと優勢じゃないだろうか。
0391nobodyさん2009/06/20(土) 14:37:40ID:???
>>390
あと追加で、お客さんとこでもシステム要員を抱えてるとことか
そういう人たちは基本的には運用だけなんだけど
0392nobodyさん2009/06/20(土) 15:03:40ID:???
>>390
なるほど。そういう事情ならPHPで作って欲しいと言われるのは分かる。
0393nobodyさん2009/06/20(土) 16:37:53ID:???
ここの連中は元請という言葉を知らんのかw
0394nobodyさん2009/06/20(土) 17:43:57ID:???
JRuby on Railsって
使う言語を
RubyからJRubyに変えてあるだけで
何か特別な事って必要ないの?
0395nobodyさん2009/06/20(土) 21:07:01ID:???
>>383
redmine、インストールしてみますた。
これはわかりやすくいいですね。
svnと連携できて、感動しました(ただ、必要かはわかりませんが(笑)

うちの会社、進捗管理はエクセル、ソース管理はvssなんですよねぇ。
会社の改善会議で提案してみようかしら(=ω=)

チケットの最低単位が「日」なのがちょっと痛い。
0396nobodyさん2009/06/22(月) 21:42:29ID:ashzWp6s
質問させてください。
script/console のログをdevelopment.logに出力したいんですが、どうすればよいでしょうか??
教えていただきたく><
0397nobodyさん2009/06/22(月) 21:53:23ID:???
お断りします
0398nobodyさん2009/06/23(火) 03:26:04ID:???
>>397
知らないんでしょ?
0399nobodyさん2009/06/23(火) 10:26:24ID:???
お断りします|-`).。oO(・・・)
0400nobodyさん2009/06/23(火) 10:49:30ID:???
girl = Girl.find(美人)
girl.boy_friend = Boy.find(俺)
girl.save

これが失敗します><

girl.boy_friend = Boy.find(池面)
girl.save

これだと成功するんです!
idが俺のレコードもちゃんとあるんです!
原因がわかりません><
0401nobodyさん2009/06/23(火) 11:07:23ID:???
おまえはボーイフレンドにしたくないってことだろ
Railsすごいな
0402nobodyさん2009/06/23(火) 11:22:36ID:???
本当に困っているのかネタなのかわからんが、
マジレスすると、save じゃなくて save! にすると、失敗した場合に例外が出るから、そのスタックトレースを眺めるとか。
0403nobodyさん2009/06/23(火) 16:58:51ID:???
下記のサイトのFour Days on Rails 2.0をちょっとやってみていて気になったことなのですが、
Four Days on Rails 2.0(日本語)を公開します
http://rails.to/articles/2008/05/05/4-days-on-rails-2-0-released

http://localhost:3000/items/ から 一覧の編集アイコンより
http://localhost:3000/items/14/edit に飛んでちゃんとItemが編集できます。

Railsは通常、/Controller/Action/id のようになっていると思っていたのですが、
上記の例だとURLが/Controller/id/Action/ になっているようです。
これってどういうことなんでしょうか?

該当リンク元は以下のようになっていて、( app/views/items/_index_stripes.html.erb )
<td><%= link_to show_image('edit'), {:controller => 'items', :action => 'edit', :id => index_stripes.id} %></td>

コンロトーラーは以下のようになってます。 app/controllers/items_controller.rb
# GET /items/1/edit
def edit
@item = Item.find(params[:id])
end

config/routes.rb は、以下のような感じ。(必要なところのみ記述)
ActionController::Routing::Routes.draw do |map|
  map.resources :notes
  map.resources :items
  map.resources :categories
  map.root :controller => "items"
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end

というか、ほとんど、今見たら、scaffoldしたままですね…。
環境: Rails 2.3.2, Ruby 1.8.7, Windows XP SP3
0404nobodyさん2009/06/23(火) 17:19:47ID:???
>>403

 >Railsは通常、/Controller/Action/id のようになっていると思っていたのですが、
 >上記の例だとURLが/Controller/id/Action/ になっているようです。
Rails 2.0 から RESTfull なかんじにかわったかんじ
0405nobodyさん2009/06/24(水) 10:01:54ID:???
>>400
バリデーションの問題。
ガードが固いんですよ。
0406nobodyさん2009/06/24(水) 21:02:35ID:???
mem360MBで、1日1500ユニークユーザ捌いてたけど、
passengerじゃオチまくって話にならん!
0407nobodyさん2009/06/24(水) 21:34:17ID:???
>>406
Heroku
0408nobodyさん2009/06/24(水) 22:37:00ID:???
>>406
それ、おれと同じところのVPSじゃないだろうか、
おれは180Mだが数百ユーザーで落ちまくりだった。
悲しい対処でがんばってるが、360Mでもダメか。
PassengerのMAXインスタンスはいくつにしてるの?
おれは2だけど。

なんかメモリの少ないVPSあたりだと、
Mongrelの方がいいような気がする。
Railsデプロイのアドバイスに従ってればよかった。
このスレでPassengerじゃないと古いとかいうやつがいるから、
と人のせいにしてみる。
04093492009/06/24(水) 22:50:30ID:???
>>408
それはおれのことかな?(笑)

もしそうだったとして、自分は VPS 等でなく、占有できる PC でしか動かしたことがないので、
あなたのレスは参考になるから、もっといろいろ書いてほしい
0410nobodyさん2009/06/24(水) 23:18:17ID:???
>>406
そのVPSがどこか教えてくれ。

今サーバを検討中。
0411nobodyさん2009/06/24(水) 23:46:13ID:???
>>410
linodeだよ。
mongrelで4つくらいプロセス立ち上げて、バランサで振り分ける
ようにしたら普通に動くようになった。
0412nobodyさん2009/06/24(水) 23:56:05ID:???
>>409
メモリ4Gの専用サーバーの人?
前にそういう書き込みがあったように記憶してる。
その人は安定してるってことだったから、
それくらいがっつり積んでれば安定するのかなとうらやましく思った。

Rubyも1.9.1だしPostgreSQLは8.4βだし不安定要素がありすぎて、
Passengerの問題だけではないようにも思うけど。
遊びではないけど自分だけの責任で済むから、
ちょっと野心的にやりすぎた。
>>406のRubyのバージョンが知りたいなあ。

>>410
おれはCPIだよ。
いろいろ検討したけどあそこが一番いいように思った。
バカみたいに通信が発生すると別途相談らしいけど、
基本どれだけ通信しても追加料金かからないし。

運が良かっただけかもしれないけど、
電話で問い合わせたとき担当者もいい感じだった。
04134122009/06/24(水) 23:57:43ID:???
> mongrelで4つくらいプロセス立ち上げて、バランサで振り分ける
> ようにしたら普通に動くようになった。

まじかよ・・・
0414nobodyさん2009/06/25(木) 00:10:11ID:???
>>413

マジ。5000↑ユニークでもいけた。
http://d.hatena.ne.jp/shohu33/20071121/1195650627

> mongrelで4つくらいプロセス立ち上げて、バランサで振り分ける
> ようにしたら普通に動くようになった。

↑なんか自分でやったかのような書き方してるけど、↑のURLのやり方
参考にしただけ。

HTTP部分をApacheに任せられるものすばらしい。
0415nobodyさん2009/06/25(木) 00:16:11ID:???
>>414
おお、サンクス。Apache併用方式か。
おれはモバイルだからIPで判別してPCからのリクエストをはじきたいんだよね。
Mongrelはそのへん分からなかったけど、Apacheに任せればいいか。
1.9.1はMongrel Clusterのインストールに問題があったのも躊躇した理由だが、
いろいろ試してみるよ。
04164092009/06/25(木) 01:29:57ID:???
>>412
> >>409
> メモリ4Gの専用サーバーの人?

いや、ちがいます。
Passneger を動かしているのは、職場や客先での業務イントラだけ。
もちろん専用のサーバなので、メモリも2GBとか4GBとか。
だけど同時アクセス数は少ないけどね
0417nobodyさん2009/06/25(木) 08:40:07ID:???
>>411
>>412
サンキュー、参考にします。

>>414のブログの記事ってもう一年半も前のなんだけど、
いまだにこれがベストプラクティスなの?
0418nobodyさん2009/06/25(木) 09:53:42ID:???
Ruby の Web 環境レベルが PHP に比べて低すぎる。
Ruby は言語が綺麗でも実用的じゃない。書生論。
0419nobodyさん2009/06/25(木) 13:30:58ID:???
それで実際どうしたらよくなるのって話をしているときに、
そういうもともと論から始めるのも、いかにも書生論って感じだよね。

まぁGoogle App Engineで、Pythonでも始めたら?
信頼と安心のGoogleブランド
0420nobodyさん2009/06/25(木) 14:42:40ID:???
>>417
古いけど実績はある。
枯れてるサーバーはそうそう急激な変更はしないよ。
サーバーは安定しなきゃ話にならないし、適材適所じゃないだろうか。
0421nobodyさん2009/06/25(木) 16:43:20ID:kFfq4IDX
>>369
Bazaarなら中央も分散もどちらの運用も可能ですよ!
0422nobodyさん2009/06/25(木) 22:36:23ID:???
今メモリの残り量が15Mくらい。これじゃ24時にはmysqlが落ちる・・・。
0423nobodyさん2009/06/25(木) 23:29:15ID:???
>>422
切羽詰ってるな、おぃw
0424nobodyさん2009/06/26(金) 05:06:56ID:???
バランサ必須ってのは金かかるな。やっぱりフリーで大規模は無謀か。
0425nobodyさん2009/06/26(金) 07:25:25ID:???
>>412
遅レスですが、メモリ4Gの専用サーバの人です。

1台でWebとDBの両方を動かすとメモリを食ったり、
IO周りで足を引っ張るのでmongrel、Passengerのどちらでも厳しいですね。
という事で、Webサーバ(Passenger)+DBサーバ(PostgreSQL)の2台構成で
動かしていて、1日平均50万アクセスくらい処理できてます。

今後もアクセスが増えていくと思うので、状況次第で
Webサーバは2台、3台と増やしていってDNSラウンドロビンで振り分ける予定です。
DBのほうは、今のところ余裕があるのでそのまま。

0426nobodyさん2009/06/26(金) 10:27:30ID:???
>>424
バランサーといっても、
>>414の場合はハードのロードバランサーを使うんじゃなくて、
Apacheのバランシング機能を使うだけだよ。
大規模でそれなりにお金がかかるのは間違いないと思うけど。

>>425
おお、サンクス。

専用2台って最低でも月4〜5万かかるよね。
ゆとりある組とかつかつ組のノウハウは別にためないときついね。
おれはPostgreSQLのキャッシュを10Mにして抑えてるよ。
データはためてないようにしてる。

しかし50万を2台ってやるなあ。
それだとピークタイムは20アクセス/秒以上もあり得るよね。
おれも静的コンテンツにできるものは徹底的に静的にしたりがんばってるのだが。
バッチやプチクローラー(対象は数百くらい)もあるから、メモリ360Mにあげようかな。
rsyslogとかも引きずられて落ちたりするし><
0427nobodyさん2009/06/26(金) 14:57:27ID:???
月4、5万かけるなら、EeePCにCentOSいれてサーバーにするのも手かも・・・
サーバー室はミニ冷蔵庫w
0428nobodyさん2009/06/26(金) 17:32:18ID:???
うっかり旅行もできないけどな
比較の問題だが安心と安全を金で買うようなものだ
24時間監視とか個人じゃ無理だし
0429nobodyさん2009/06/26(金) 17:47:11ID:???
PHPにすればいいのに
0430nobodyさん2009/06/26(金) 18:10:27ID:???
>>404
サンクス。RESTfullだとそんな感じのURLになるんか。RESTfullでぐぐてクルわ
あがりとう
0431nobodyさん2009/06/26(金) 18:15:21ID:???
ついでに聞きたいのですが、
サイト名やページ名のように、デフォルト値を共通に設定したり、
viewなどで使いまわしたい場合は、Railsではどうするのがよいのでしょうか?

・共通コントローラーを作って、継承させる
・ヘルパーを作る

共通コントローラーだと、全部のコントローラーをそれから派生するように決まりつくらないとあかんですよね。
手間も面倒くさい、とかいったらいかんよなあ…
0432nobodyさん2009/06/26(金) 18:42:48ID:???
>>429
何回覚えてもisset()の挙動を忘れるのでやめました
04334312009/06/26(金) 18:55:09ID:???
application_controller.rb にかけばいいのね。お誂え向けすぎる。そして、初心者過ぎる俺泣いた
0434nobodyさん2009/06/26(金) 19:04:45ID:???
それ表示だけだろ?普通viewに埋め込める共通部品を作ると思うぞ。
なんでもコントローラーでやろうとする方が初心者の考えだと思う。
どうしても変数でほしいならconfigでやるべきじゃないだろうか。
04354062009/06/27(土) 00:21:23ID:???
>>406
ちょっと無責任な書き込みしてしまったので、訂正。

メモリ360mのVPSでpassengerじゃ落ちると書いたんだけど、passengerのせいじゃなかった。
mysqlがメモリ不足で落ちるのが原因で、メモリ不足が起きる原因がapacheのチューニング不足だった。
(メモリ不足で落ちると断定したのは、mysqlがmallocに失敗してたから。確かCのメモリ確保関数だった気が…。)

今はapache + mongrel * 3 構成で50kPV/日が平気。
今は安定してるのでpassengerに戻す気は無し。

ちなみにvpsはここ。
http://www.linode.com/
0436nobodyさん2009/06/27(土) 00:31:47ID:???
>>431
俺の場合は、共有レイアウトファイルを作って、それに共通メニューとか
サイトロゴを書き込んで、コントローラの先頭にlayout "common"みたいな
感じで共通レイアウトファイルを使用するよう設定してる。

content_forつかえば、ビューのソースからレイアウトファイルへの出力も
できるから、あんまり不便だとおもったことない。

0437nobodyさん2009/06/27(土) 00:33:52ID:???
>>435

だと思った。
Passengerのメモリ管理はかなり優秀で、一定期間アクセスがないとアプリケーション
サーバ側のプロセスは消滅してメモリ占有量はほぼゼロになるとどこかで読んだ覚え
がある。

あとMySQLは少ないメモリ量で効率よく動くのが苦手で、その点ではPostgreSQLの
ほうが優れてるらしい。
それでも300MB程度でMySQLやPostgreSQLを動かすのは自殺行為だと思う。

そのメモリ容量でどうしてもDBを使いたいならFirebird一択じゃないか。
04384062009/06/27(土) 01:15:51ID:???
>>437
…FirebirdというDBを初めて知った。
ちょっと勉強してみる。
mysqlを選んだのは、phpMyAdminでGUI操作できるという動機…。
0439nobodyさん2009/06/27(土) 04:40:58ID:???
>>437
> あとMySQLは少ないメモリ量で効率よく動くのが苦手で、その点ではPostgreSQLの
> ほうが優れてるらしい。

初めて知った。
MySQL は Postgres よりも軽くて、必要なメモリも少ないものだと思っていた。

あと組み込みDBといったら sqlite とかじゃないの?
sqllite が、MySQL みたいに排他制御してくれるかどうか知らないけど
0440nobodyさん2009/06/27(土) 06:34:04ID:???
>>435
> メモリ不足が起きる原因がapacheのチューニング不足だった

kwsk!

>>437
Firefirdを勧めるやつ初めてw
もともと商用だしsqliteあたりよりいいのかもしれないけど

ちなみに300Mと言ってもOSが使う分は含まれてないと思うぞ
自殺行為というほどじゃないような
04414372009/06/27(土) 07:27:54ID:???
SQLiteはお察しの通り排他制御ができない。ファイルベースだからね。
同時にアクセスが来ると、しばらくテーブルにロックがかかってエラー
起きまくることがある。

まあ、うちのサーバで起きたんですけどね。
1日1,000アクセス程度でそういう現象が出るようになった。
0442nobodyさん2009/06/27(土) 08:18:35ID:???
>>440
DBだけ動かすんなら自殺行為じゃないかもね。
Apache+Railsアプリ+DBなら、それはやばいでしょって話で。

またRubyそのものもけっこうメモリを食う。
Enterprise Rubyにするとかなり節約できるようになるという話なので、
試してみる価値はあるんじゃないだろうか。

http://d.hatena.ne.jp/rx7/20090608/p1
0443nobodyさん2009/06/27(土) 08:52:58ID:???
DBはありったけメモり喰って速度稼いでるから専用のほうがパフォーマンス高いよ。
1鯖で、アパチもルビもDBもってのは大規模では無理が有る。
0444nobodyさん2009/06/27(土) 15:30:33ID:lkILxYvh
Apacheで動かしたいのですが,うまくいきません。
(遅いのは承知の上でcgiのみです。まずは基本からということで)
環境はOSX10.5 ruby 1.8.6 Rails 2.3.2 Apache 2.2.9で何れもプリインストールのままです。
プロジェクトは/Users/Rails/myproに配置して,scaffoldでmytestを作ってます。
パーミッションはmypro以下全て755にしてあります。
script/serverでは当然http://localhost:3000/mytestで問題なく起動してます。
でhttpd-ror.confを次のようにしてhttpd.conf内でロードしてます。

Alias /mypro /Users/Rails/mypro/public
<Directory /Users/Rails/mypro/public>
Options +FollowSymLinks +ExecCGI
AddHandler cgi-script .cgi
AllowOverride all
Allow from all
Order allow,deny
RewriteEngine On
RewriteBase /mypro
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
</Directory>

http://localhost/myproではWelcome abordがきちんと表示されます。
http://localhost/mypro/505でもpublic内の505.htmlがきちんと表示されます。
ところがhttp://localhost/mypro/mytestがダメです。
Not Found:The requested URL /mypro/dispatch.cgi was not found on this server.
の表示がでるだけです。
dispatch.cgiがよくわかりません。URLのリクエストをクラスのメソッドに割り当てているはずなのですが
アドバイスをよろしくお願いします。
0445nobodyさん2009/06/27(土) 15:38:59ID:???
>>435
参考になります。

しかし、
>>437
ということは、Passengerだともっとパフォーマンスがあがるのかもね。

>>442
REEなんて初めて知ったよ。
37Signalsが使ってるならRailsは大丈夫そうだね。



PHPからRailsに乗り換えて、サービス公開しようとしてるんだけど、
作るのは手早くできても、個人レベルだと公開するのがとにかく大変だね。
なやましいなぁ。

0446nobodyさん2009/06/27(土) 16:07:32ID:???
>>444

> dispatch.cgiがよくわかりません。

RewriteRuleに自分で書いてるじゃん。振り分けを行う起点だよ。
今時のフレームワークは名前こそ違え、大抵ディスパッチャで振り分けをしてる。
基本から学びたいならフレームワークのソースから読んだ方がいいよ。
0447nobodyさん2009/06/27(土) 17:49:50ID:???
mem360MB坊だけど、rails+mysqlでも今んところ快適だYO!
メモリはOS+アプリで360MB。

月19.95$だし、たぶん1万人/日(!=pv)くらいなら耐えれそう。
あと安いサーバーのがかえってチューニングのスキルがあがる気がしたw
個人サイトで専用サーバは、俺は金がもったいないと思うな。
というか貧乏なので無理(くやしいのう!)

メモリ不足でmysqlが落ちる問題は、apacheへの接続人数とmysqlの
メモリ上限を下げたらなおった。

接続人数絞っても快適なのは、おそらく1アクセスの負荷が低いから。
今まで落ちてたのは、短短期間に偶然多くのリクエストが発生したとき
だと思う。

RailsはSQLキャッシュが有効になるように組んでるし、アクセス頻度の
高いコンテンツはページキャッシュを使ってる。
0448nobodyさん2009/06/27(土) 17:52:47ID:???
RadRails+EclipseからSVNへコミットし、Capistranoでデプロイする…。

これができる環境を1人で作り上げるだけで、1つのプロジェクトを終えたような
気分だ・・・w
0449nobodyさん2009/06/27(土) 18:06:12ID:???
サービス公開するんなら、500MBが最低ラインじゃね?
ひと月あと10ドルくらいケチケチすんな。
0450nobodyさん2009/06/27(土) 18:44:09ID:???
>>449
ちゃんと使えば安くすむところを、スキルの無さのせいで冗長化させて
対応するなんてナンセンス。
0451nobodyさん2009/06/27(土) 19:14:19ID:???
> あと安いサーバーのがかえってチューニングのスキルがあがる気がしたw

すげーわかる。

負荷を半分に減らせるとすると、
仮に大ヒットしてサーバーが10台必要になるところが5台。
個人レベルのこじんまりしてるものなら月数千円の違いだが、
いろいろ苦労して損はない気がする。
リソースをじゃぶじゃぶに使うのってキリがないしな。
0452nobodyさん2009/06/27(土) 19:40:08ID:???
>>450
「冗長化」の意味すらまともに知らない素人が他人のスキルにケチつけるとか
ちゃんちゃらおかしいわ。
10年後に出直してこい。
04534442009/06/27(土) 19:43:10ID:???
>>446
RewriteRuleの部分は理解できてます。(リクエストのパスを書き換えてるということ)
READMEのとおりにしているのですが、dispatch.cgiというファイルはプロジェクト内を探しても見当たらないし,READMEの通りなのにうまくいかない原因が分からず,よって対処法もわからないのです。
0454nobodyさん2009/06/27(土) 20:34:12ID:???
dispatch.cgiは自分でコピーするんじゃないのか?
cgiでやったことないけど、
MongrelとかPassengerはその辺を勝手にやってくれると認識してる。

今見てみたが、READMEファイルの近くにdispatchersってディレクトリがあるから、
そこからコピーするんじゃないだろうか。
04554452009/06/28(日) 11:16:18ID:???
Railsでシステムを作るときに、
絶対必要、あったら便利、個人的におすすめ、
というようなプラグインを教えてください。

環境はRuby1.9.1 Rails 2.3です。

よろしくお願いします。
0456nobodyさん2009/06/28(日) 11:43:33ID:???
>>455
プラグインじゃないけど、そういう質問をする人に対してだったら、

つ Ruby 1.8.7
0457nobodyさん2009/06/28(日) 20:27:12ID:???
一回作ってみて、不便と思った事を書いたほうが。

つ ブラウザ、テキストエディタ
04584452009/06/29(月) 10:19:49ID:???
>>456
理由は?

>>457
>>つ ブラウザ、テキストエディタ
なにそれ?
0459nobodyさん2009/06/29(月) 11:01:30ID:???
割と言い流れで参考になると思ったが、>>456-457で台無し
Mr.1.8.7はブログあたりで主張しろよ

プラグインはページャーものが定番だろうけど、
acts_as_listは便利だと思った。
DBにpositionカラムを追加すると表示順を手軽に管理できる。
deleted_atカラムを追加して論理削除を管理する、
acts_as_paranoidも便利そうだ。どれも有名だろうけど。

Railsの仕事が入ったからいろいろ試してみたい。
0460nobodyさん2009/06/29(月) 12:46:18ID:???
>>459
1.9系でrailsを動かす予定なの?
0461nobodyさん2009/06/29(月) 13:02:17ID:???
横から失礼します。
http://rubyonrails.org/download
We recommend Ruby 1.8.7 for use with Rails.
Ruby 1.8.6, 1.8.5, 1.8.4 and 1.8.2 are still usable too,
but version 1.8.3 is not.
だそうですよ。

0462nobodyさん2009/06/29(月) 13:04:44ID:???
Ruby 1.9 対応の Rails 3.0 は順調なの?
0463nobodyさん2009/06/29(月) 13:37:25ID:???
>>460
予定ではね。今でも動かしてるけど。

2.3で1.9対応はされてるし、まあまあ動く。
ActiveResourceはダメだったけど。
アプリ開発者が創り出すバグの方がよほど問題になるくらいまできてると思う。
0464nobodyさん2009/06/29(月) 14:18:08ID:???
>>459
>Mr.1.8.7はブログあたりで主張しろよ

何で?

>>455のような人には、現状の1.9.1はおすすめしない。
1.8.7の方が、参考になる本も多いので使いやすいと思う。
0465nobodyさん2009/06/29(月) 14:32:53ID:???
人とまともに会話できないやつは
「あっちに行ってください」と言われるもんだぞ
0466nobodyさん2009/06/29(月) 14:55:37ID:???
>>455が妙な質問するからこうなったんじゃないかな?

どんなアプリを作るかによってまったく違うんだし、
Ruby 1.9.1 だと動かないプラグインやライブラリもあったりするからね。
0467nobodyさん2009/06/29(月) 21:00:50ID:???
Ruby 厨が PHP5 の互換性を叩いていたことを思い出した
0468nobodyさん2009/06/29(月) 22:16:53ID:???
>>456
携帯サイトを作るならjpmobileがおすすめ。
ただし、gemで入る最新の0.0.4ではrails2.3で動かない。
githubにある開発版なら動くかもしれない。
04694682009/06/29(月) 22:17:47ID:???
アンカミス。>>455だった
04704552009/06/29(月) 22:33:03ID:???
>>459
ありがとう、みてみます。
ページャー物の定番もおすすめがあったら教えてください。

>>464
Ruby1.9はそんなに互換性に問題があるの?

>>466
どんなアプリを作るにも便利なものってあると思うから聞いたんだけどね。
妙な質問に妙なレスか。

>>468
サンキュー。
携帯対応も考えてます。
github
0471nobodyさん2009/06/29(月) 22:35:31ID:???
>>470
自己レス、途中で送ってしまいました。

>>468
サンキュー。
携帯対応も考えてます。
github使ったことないけど、読み方はギットハブでいいのかな。
とりあえずgitいれてみる。
0472nobodyさん2009/06/29(月) 22:44:38ID:???
>>471
ページングならwill_paginateがお手軽。
これもgithubに移行しちゃったから、gem install will_paginateでは最新版が入らない。
インストールする場合は、↓
gem sources -a http://gems.github.com
gem install mislav-will_paginate

でも、gem install will_paginateで入るバージョンでも特に困らなかったりする。
0473nobodyさん2009/06/29(月) 23:04:55ID:???
>>470
>>>464
>Ruby1.9はそんなに互換性に問題があるの?

「対応した」ということになってるけど、地雷が多いのでお勧めしない。
ruby-listでは1.9.2まで待て、という声もあるくらい。
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/45870

ということで、いまは1.8.7が無難じゃないかな。
0474nobodyさん2009/06/29(月) 23:46:52ID:???
とりあえずpartialのエンコーディングがASCII-8BITになって絶望した。>1.9
どこで指定すればいいのやら。

0475nobodyさん2009/06/29(月) 23:54:59ID:???
どうせ自分で使ってもないんだろ?
そんなのここにくるやつは大抵チェックしてるからいらんよ
0476nobodyさん2009/06/30(火) 00:15:37ID:???
>>474に自己レス

partialじゃなくて、DB(SQLite3)に入ってる文字列のほうがASCII-8BIT
になってました。
0477nobodyさん2009/06/30(火) 08:55:35ID:???
>>444
基本と思っているかもしれないが、RailsではCGIは基本じゃないよ。
練習したいだけなら、webrickかmongrelでいいだろうし(script/server)
そうじゃなかったら、つまりちゃんとサーバーとして稼動させたかったら、重くてまともな速度で動かずイライラするだろう。
RailsではCGIの出番はないよ。

>>448
俺も最初、それですげー満足した気分になったわww
ちょっと弄ってコミット→一発deployで満足ww
0478nobodyさん2009/06/30(火) 10:38:44ID:???
>>472
gem sourcesとか初めて知った。
ありがとう。

>>473
なるほど、ようやく合点がいきました。

確かにpostgresqlのライブラリがgemで入らなかった。
ググったら解決策を書いてる人がいたから、
そのとおりにCのヘッダファイルをいじったりしたよ。

とりあえず爆死するくらいの地雷を踏むまでは1.9.1で使ってみる。
0479nobodyさん2009/06/30(火) 11:43:13ID:???
ポスグレはgem install pgで普通にいけたが
「postgres」のgem使ってない?
0480nobodyさん2009/06/30(火) 12:50:34ID:???
別人だけど postgres-pr 使っていた。
今は pg がいいの?
0481nobodyさん2009/06/30(火) 13:58:52ID:???
478みたいなお方が居るから1.9の完成度が上がっていくんだ。
ありがとうございます。
バグや問題があったら報告するなりブログに書くなりしてください

0482nobodyさん2009/06/30(火) 14:33:48ID:???
>>480
postgres-prって開発止まってるんじゃなかったっけ?

最終的な手順しか残してないから詳細は忘れたが、
1.9.1だとpostgres-prじゃ(たしか)動かないし、
ポスグレのadapterではpgがデフォルトになってるはず。
0483nobodyさん2009/06/30(火) 14:37:06ID:???
>>482
ありがとうございます
0484nobodyさん2009/06/30(火) 15:33:33ID:???
ちょっとわからないことがあるんですが
paperclip つかってモデルでサムネイル作るとき
:thumb => ["100x100", jpg]
でjpegじゃないファイルはjpegに変換したいんだけど
epsとbmp(今のところこの2つだけ確認)をアップロードすると
できたサムネイルがモノクロになるんですよ。

ImageMagickで直接convertするとカラーで変換するのに・・・
paperclipのrb全部呼んでもカラー設定の記述が見あたらないし。
0485nobodyさん2009/06/30(火) 16:22:32ID:???
すごく初歩的なことをお聞きするのですが、
Rails 2.xからはRESTfulがやけに前面に押し出されているのですが、なるべくこれに沿ったほうがよいのでしょうか?

例えば、本屋みたいなアプリを作るとして
「カテゴリ 12 の 4 番目の本」みたいにアクセスできるをURLを作りたい場合、
map.resouces の has_manyオプションを使うと、
/categories/12/books/4
みたいにURLを構築できるわけですが、
本屋の場合、ユーザーにはeditとかupdateなどのメソッドは必要ないのです。
(本の編集はそもそも管理ページからやりたい)
この場合、scaffoldなんかでばんばんコントローラーやビューなどを生成していくと、
いらない編集系のメソッド(editやupdate、createなど)ができるのですが、削除しちゃったりしていいものでしょうか?
そうすると、それってRESTじゃないような?という気がします…。

URLのルーティングの解説みると、map.resoucesとかでネストする方法なんかが、充実というか楽だったりするのですが、
上記のような例の場合は、1.xのころ?にあったmap.connectでシコシコ書くのがよいのでしょうか?
0486nobodyさん2009/06/30(火) 16:29:30ID:???
ちょっと話が変わるけど、REST の本質は、データの CRUD を、
Http の PUT/GET/POST/DELETE メソッドで行うことであり、

URL を /categories/12/books/4 というように見せることとはちょっと違うと思うのだが。

んで、>>485 さんの場合、自分の作るアプリケーションが、他のツールから REST クライアントで
呼び出されることを想定しない場合、削除しちゃっていいんじゃないの?

04874852009/06/30(火) 16:47:48ID:???
>>486
あらら、そうしたら、>>485の例だとREST全然関係ない感じですね…。
PUT/GET/POST/DELETEを全然考慮するつもりなかったので…。

ここみたら、map.connectの記述もそんなに難しくないみたいですので、
map.connect で書いてみます。
ヽ( ・∀・)ノくまくまー(2005-07-25)
http://wota.jp/ac/?date=20050725



一般的なRESTクライアントがどういったものかよくわかっていないのですが、
RESTは一種のapi的に使うことも考慮している、という感じなんでしょうかね。
railsとFlashをRESTで連携、見たいな記事を見たことはあるくらいなのですが…。
04884852009/06/30(火) 18:38:34ID:???
何度もすいません。

下記のサイトなどを読んでいたところ、部分的にもRESTを使用できるみたいで、
Close to the EDGE Rails 2.2でroutesの不要なresourcesを消すには
http://blog.dio.jp/2008/11/22/only-and-except-in-routes-for-rails22

下記サイト読むに、RESTはそれほどやっかいなものではない?という感じがしました。
まっつんチャレンジ 4: Ruby on Rails によるポテトバーガー注文アプリケーションの実装 第 3 回 | ITEMAN Blog - アイテマンブログ
http://iteman.jp/blog/2009/06/-4-ruby-on-rails-3.html


せっかく、RailsがREST狂大歓喜的な感じになってきているので、RESTに挑戦して組んでみようと思います。
失礼しました。
0489nobodyさん2009/06/30(火) 22:18:49ID:???
>>479
ビンゴ。
postgres-0.7.9だった。

gem install pg
とやったらすんなりインストールできたよ。
ありがとう。

>>488
なんでRailsGuideを真っ先に読まない?
以下にすごく詳しく書いてあるよ。
http://guides.rubyonrails.org/routing.html
0490nobodyさん2009/07/01(水) 06:20:03ID:Q9Au53lL
便利そうだけど、よくわからん。
http://oldmoe.blogspot.com/2008/01/restful-pagination-in-rails.html

map.paged_users ← この記述がよく理解できない。
0491nobodyさん2009/07/01(水) 16:02:49ID:???
ユーザーをページ単位で返すってことだと思うが
あんまり突き詰めて考えることはないんじゃないだろうか
04924852009/07/01(水) 16:40:32ID:???
>>489
サンクス。真っ先に公式文章を読むべきでした。

で、読んでいてつまづいたのですが、
"Rule of thumb: resources should never be nested more than 1 level deep. "
という注意事項(経験的法則)があり、「1レベル以上(を超える?)ネストすべきでない」ってことなんですが、
これだと、>>485の /categories/12/books/4 みたいな例は、Railsではできるが、
やめた方がよい、ということなのでしょうか?

下記でもそのことが触れられています。
the { buckblogs :here }: Nesting resources
http://weblog.jamisbuck.org/2007/2/5/nesting-resources
0493nobodyさん2009/07/01(水) 17:01:14ID:???
>>492
/categories/12 はネストなし。
/categories/12/books/4 はネストレベル1。

で、more thanは比較対象を含まない。
つまりここでは1より深い(深さ2以上)という意味。
1以上だったら、1 level or more みたいな表現になる。

まあ、いずれにせよ引用されているフレーズを見る限り経験則に過ぎないんで、
自分で不都合がないなら金科玉条のごとく看做す必要はないと思う。
0494nobodyさん2009/07/01(水) 17:08:48ID:???
おれだったら

categories/12?book_id=4

とやってしまうなあ。
クエリーストリングを使わないことにすると、
すごく大変なんじゃないだろうか。
0495nobodyさん2009/07/01(水) 17:15:55ID:???
RESTでは、モノ単体やモノの集合をリソースとみなしてURLを割り当てる。
>>494のような場合だったら本を特定するURLを割り当てるのだろうな。

フォームで条件を指定すると該当するものの集合が得られる、
というURLはどう表現すればいいかよくわからん。
検索結果をリソースとみなして、フォームから条件をPOSTして、
検索結果リソースを新規作成後にステータス 201 Createdでリダイ
レクトだろうか。
04964852009/07/01(水) 17:53:46ID:???
>>493
ああ、 more than ってそれを含まないのですね。
しかも、ネストレベル1の意味を取り違えてました。最初のエンストした段階がネストレベル1なんですね。
感謝!

>>494
たぶん、検索など、たくさんのパラメータを持つ場合、クエリーを使うことになると思います。
ただ、これだと、bookのidが4のカテゴリーの1つ(カテゴリid=12)みたいなニュアンス(カテゴリー12のbookというよりは)
な感じがします。

>>495
たぶん、本来ならなるべく一意で特定できるURLをってことなんでしょうね…。
/categories/12/books/4 というより、
/books/13 ←/categories/12/books/4のbookをあらわしたもの 13=idそのもの

>>492の一番下のリンク先読んでてそういう感じがしました。
0497nobodyさん2009/07/01(水) 18:05:12ID:???
ていうか、↓これって「Railsネスト論」とかいって議論の元になるものなんですなー。

タグ「railsネスト論」を含む新着エントリー - はてなブックマーク
http://b.hatena.ne.jp/t/rails%E3%83%8D%E3%82%B9%E3%83%88%E8%AB%96

気軽に聞いてしまったけど・・・
0498nobodyさん2009/07/01(水) 20:18:11ID:???
>>496
それって適当な例えだと思ってた。

もしあるbookを特定するためにそのURLになるんだったら、
テーブルの設計を見直す必要があるんじゃないだろうか。

代替キー(大抵意味のない連番)なしで自然キー(意味のあるキー)だけだときついよ。
自然キーは一意のデータを取得するために、いくつもカラムが必要になる可能性があるから。
内部的に自然キーを使うのは当然なんだけど、
URLとかデータを一意に特定したい場合は代替キーのみがいいと思う。
気持ち悪いって人もいるけど、その代償として工数がかさむしバグも多くなる。
0499nobodyさん2009/07/01(水) 20:55:32ID:???
amazonは代替キーでも自然キーでもアクセスできるようになってる
0500nobodyさん2009/07/01(水) 22:46:35ID:???
Amazonって代替キー使ってるのか?
ほとんど知らないけど、ASINとかいうやつも自然キーっぽいのだが。
0501教えてください  ◆Mn5mzn8hAQ 2009/07/01(水) 23:07:32ID:???
さっき、OneClick Installerを使って、Rubyをインストールしました。
Railsもインストールしたくて、試みたのですが、下記のようにエラーになります。
どうしたらうまくいきますか?

C:\Documents and Settings\boku>gem install trails
ERROR: While executing gem ... (Zlib::GzipFile::Error)
not in gzip format
0502nobodyさん2009/07/01(水) 23:14:48ID:???
>>501
Linuxにする。これで万事解決。
0503nobodyさん2009/07/01(水) 23:16:13ID:???
>>502
LinuxならZlibが必ず入ってると思ってるアホ発見
0504nobodyさん2009/07/01(水) 23:16:14ID:???
>>501
OneClick Installerは使ったことないけど、スペルミスってことはないの?
×trails
○rails
0505教えてください  ◆Mn5mzn8hAQ 2009/07/01(水) 23:21:10ID:???
>>504
試してみましたが、同じエラーになります。
このコマンドは、Rubyのディレクトリに移動してやってみてもダメでした。
0506nobodyさん2009/07/01(水) 23:35:41ID:???
>>501
エラーメッセージ
>ERROR: While executing gem ... (Zlib::GzipFile::Error)
>not in gzip format
で検索すると対応策が出ているね
0507nobodyさん2009/07/01(水) 23:36:48ID:???
なんで>>503のレスがスルーされてるんだ?
zlibを入れればいいじゃん。
おれは今確認したら1.1.4.1を入れてるな
0508nobodyさん2009/07/01(水) 23:37:10ID:???
>>503
いや入ってるよ?
さすがに全てのディストリで必ずとは言わないが、CD1枚のUbuntuにすら
入ってる。ましてやDebian、CentOSをやだ。

元の話題に戻るが、あの程度自力で解決できないような素人が、Windows
でRails開発とか地雷を踏むもんじゃない。
0509nobodyさん2009/07/01(水) 23:40:33ID:???
しかし素人ほどWindowsから離れられないという悲喜劇。
0510nobodyさん2009/07/01(水) 23:50:19ID:???
>>508
自分で「必ずではない」と言ってるみたいだけど
やっぱアホなの?
0511nobodyさん2009/07/01(水) 23:57:07ID:???
アホアホと馬鹿のひとつおぼえだな。
zlibの入ってないディストリでも探して1人で悦に入ってろよ。
0512nobodyさん2009/07/01(水) 23:59:44ID:???
>>509
そういうWindowsから離れられない素人はRailsに手を出すべきじゃないと
言っておこう。
だってMatz自身がWindows?何それおいしいの状態だし。
0513教えてください  ◆Mn5mzn8hAQ 2009/07/02(木) 00:06:12ID:???

そのうち原因も分かると思うので、とりあえず、Railsなしではじめます。
レスをしてくれた方々、ありがとうございました。
0514nobodyさん2009/07/02(木) 00:08:00ID:???
いや原因はさんざん言われつくしてるじゃないか。
そもそもエラーメッセージが丁寧に教えてくれてるのに、
ひょっとして英語だからって読んでないの?
0515教えてください  ◆Mn5mzn8hAQ 2009/07/02(木) 00:18:36ID:???
すいません、できましたw
gemというのをインストールしていませんでしたw
0516nobodyさん2009/07/02(木) 00:38:54ID:???
松本教祖がウィンドウズに積極的じゃないしな。
オフィス並みにメジャーアプリなら、ウィンドウズ使ってる丸の内OLにモテモテなのに。
0517nobodyさん2009/07/02(木) 00:40:48ID:???
Mac使ってるような文化系女子にモテモテだからいーんです。
0518nobodyさん2009/07/02(木) 02:17:57ID:???
matzがlinux派とかそういう問題じゃないよ
この人は基本的に自分の好きなことしかやらないし
ドキュメント書くのも面倒くさいって言ってるし
0519nobodyさん2009/07/02(木) 06:22:59ID:???
マク使ってるよなマニアックな女子に持ててても嬉しくないと思う。
やっぱりウィンドウズ使ってる丸の内OLだろう。
0520nobodyさん2009/07/02(木) 09:56:03ID:???
>>515
解決したのならそれはそれで良いんだけど、一寸気になったので一言。
もしかして普通にコマンドプロンプトから実行したんじゃない?
すべてのプログラム -> Ruby-186-???? -> RubyGems -> RubyGems Package Manager
で起動されるコマンドプロンプトからやってみた?
0521nobodyさん2009/07/02(木) 10:45:55ID:???
開発できても配置でつまずくフラグw
0522nobodyさん2009/07/02(木) 11:52:26ID:???
まったくどいつもこいつも素人臭い質問ばかりしやがって。
この俺様がハイブローな質問をしてやるから、誰か答えてみやがれ。
さあ、いくぜ。

「Railsで一定時間ごとにある処理を実行するにはどうしたらいいんだ」
フフフ、どうだ答えられまい。
どうだ、誰か答えられるものなら答えてみろ。

てゆうか、教えて。

お願いします。
0523nobodyさん2009/07/02(木) 12:42:55ID:???
(Linuxなら)cronとscript/runnerを組み合わせろ。次
0524nobodyさん2009/07/02(木) 13:11:18ID:???
Windowsなら、cygwinのcronか、タスクスケジューラとscript/runnerだろうか
0525nobodyさん2009/07/02(木) 13:56:17ID:???
Windowsでrails開発地雷って言ってたけど、最近仕事でrails使い始めてようやく意味わかってきたわ…。

・Rubyの起動周りがとにかく遅い(rake、script/generate、gemコマンド等日常作業がイラライする)
・gemsで特有の罠あり(ネイティブDLLが提供されてないとか)
・結局、Unix系で動かすなら近い環境の方がいい

IDEほしいなら、NetBeansとかRadRailsは他の環境でも動く品

1番目が特にガンだわ。
デプロイ先のLinux(Ubunut)でRubyコマンドの起動がメチャクチャ早くて、腸びっくりした。まさに瞬時。
Windowsだと、そこそこスペックあっても(Core2Quadマシンだけど)もっさりもっさり…。
マジVMWareかandLinuxか何か導入したくなってる
0526nobodyさん2009/07/02(木) 14:05:48ID:???
マジ VMWare 入れればいいのに。マゾ?
0527nobodyさん2009/07/02(木) 14:11:26ID:???
上のほうでlinode使ってるって言ってた人に質問です。

日本国内からアクセスしたときの遅延はどのくらいでしょうか。
0528nobodyさん2009/07/02(木) 14:47:35ID:???
>>525
Linuxで実際にGUI開発環境使ったことある?
おれはVirtualBoxでCentOS入れて開発してるけど、
ことGUI周りに関してはWindowsのよさを痛感すると思うよ。
0529nobodyさん2009/07/02(木) 15:23:03ID:???
WindowsのGUIのどの部分が優れているのか詳しく
0530今日は曇り  ◆twZ04DwX3o 2009/07/02(木) 15:25:05ID:w8jxLyuc
ここnobodyさんしかいないのか?
0531nobodyさん2009/07/02(木) 16:27:52ID:???
>>530
ここは、ってどういう意味?

どこかnobodyさんがいないスレでもあるのかい?
0532nobodyさん2009/07/02(木) 18:08:14ID:???
>>527
ホップ数とか、ラウンドトリップの時間なら手元で調べられるんじゃない?
他に何が知りたい?

単純にHTTPとかアプリサーバの反応の軽い重いとかだとサーバのロードも関係してくるしなぁ。
0533nobodyさん2009/07/02(木) 18:54:23ID:???
超初心者用豆知識

gemからRailsをインストールするのにFWが邪魔して、できないこともある。
うまくいかない人は、FWを一時的に無効にして再挑戦w
0534nobodyさん2009/07/02(木) 19:53:19ID:???
>>529
使ってて一番大きいのは反応じゃないだろうか。
遅いというのもあるけど、反応にばらつきがある。
細かい動作の完成度もバカにならない。ペーストが変なところに貼り付いたりとか。
なんだかんだ見た目もWinはかなり配慮されてるし。まあ、これは個人的な印象。
かけてる金がすごいだろうから、当然と言えば当然だけどね。
0535nobodyさん2009/07/02(木) 21:23:46ID:???
CentOSはデスクトップで使うことなんか考えて作られてないんだから、
それとWindowsを比べてどうすんだ。
比べるならUbuntuだと思うが。
0536nobodyさん2009/07/02(木) 21:27:12ID:???
それにLinuxデスクトップは、自分好みにカスタマイズしてなんぼだ。
現状が気に入らないならスキル次第でかなり深いところまで変更
することができる。

初心者から上級者まで一律お仕着せのMacとそのマネのWindows
とはそこが違う。
0537nobodyさん2009/07/02(木) 21:33:39ID:Ot61hTL3
しかしわざわざGUIにスキルを使うのもどうかと。
0538nobodyさん2009/07/02(木) 21:55:27ID:???
>>534
> 遅いというのもあるけど、反応にばらつきがある。
これLinux関係ないな、メモリが少なくてスワップ発生、
HDDは遅いけどディスクキャッシュが効いてるから速くなったり遅かったり、
て事でしょ?Windowsでもなるよ

コピペとかはまあ、操作体系の違いだから慣れるしかない
WindowsのGUIライブラリは基本的に一つしか無いから
その辺がまとまってるのは優れてるといってもいいか
0539nobodyさん2009/07/03(金) 01:21:53ID:???
まあ規模が違うから、ウィンドウズのほうが枯れてまともに使えるところはある。
犬だとまだまだ使ってる香具師が少ないから洗練されてない。

鯖なら常時起動してるから、起動させっぱにすれば良いだけ。
perlもjavaも同じ。そのためにmod_rubyとか小細工してるし。

開発だとどこでも開発したくて、ノートとかに開発環境作ると、ウィンドウズの便利さを痛感する。みんながモバイルで当たり前に使ってるありがたさ。
その当たり前の機能が犬だとまだまだ不十分なのが現実。
0540nobodyさん2009/07/03(金) 10:04:52ID:???
>>523
フフン、思ったより骨がありそうだな。だが次の質問はどうだ。
今度は質問が長いぞ。
「現在時刻を知るにはどうすればよいか、と問えば Time.now と答えるだろう。
二時間前なら 2.hours.ago だ、と聞かれてもいないことまで答えるかもしれないな。
だが、それを一回のリクエストの間に何回も使う場合はどうするのだ。
毎回 Time.now では呼び出しのたびに、ちょっとづつ変わるわけだ。
だったら @time_now = Time.now として、二回目以後の参照は @time_now を使えばいい。
本当にこれでいいのかな?フフル、よく考えてみることだ。」

ねえ、どうかな、本当にこれでいいのかな?
何かRailsが用意してくれたリクエストされた時刻のようなものはないのでしょうか?
0541nobodyさん2009/07/03(金) 10:20:07ID:???
べつにRuby自体とは関係ないGUIの使い勝手なんてどっちでもいいじゃないの。
結局慣れとスキルの問題、と。

で、結局WinでRubyの起動がLinuxに比べて遅いのはガチ?
0542nobodyさん2009/07/03(金) 10:44:56ID:???
>>540
Railsに実装されているすべての機能を知ってるわけじゃないから確実ではないがたぶんないように思う。

リクエストの中で何度も使うならコントローラーの中で変数に格納する。
べた書きするんじゃなくてfilter機能を使う。
すべてのコントローラーで使いたいならApplicationControllerにfilterを入れる。

フレームワークを使うと「フレームワークで機能が提供されているなら何が何でも使わなければならない」
という強迫観念みたいなものにとりつかれるときがある。こうなると、

・今回のようにただ変数にセットすれば10秒で済むものを、何か機能がないか調べまくる(かえって時間が膨大にかかる)
・後でフレームの機能を使ってないことが分かると(または機能が追加されると)、すべて修正してきれいにしたくなる(きりがない)

などの強力な副作用が出てくる。
フレームワークで提供されてるものを無視しまくるのも問題だが。

まず提供されている核となる重要な機能はしっかり押さえるけど、
周辺の便利機能は逃しても仕方ないくらいでやらないと何も進まないぞ。
今回の場合だと、「コントローラーに実装→filterを使う」というのははずしちゃいけないと思う
(ほかにいいやり方があるかもだが)。

というわけで完全な答えじゃなくて申し訳ないが、次
0543nobodyさん2009/07/03(金) 13:03:46ID:???
フレームワーク全体を大まかに知るには
ttp://guides.rubyonrails.org/
これが期待できそうだよね。

日本語訳が無いんだけど↓
ttp://honyaku.ssktkr.com/projects/docrails/documents

0544nobodyさん2009/07/03(金) 13:25:36ID:???
>>532
同じ画像を国内のレンサバとlinodeにおいて、
ブラウザからアクセスしたときのタイムラグがわかるとありがたいです。

ホップ数を測るというのはlinode.comに対してということでしょうか。
サービス用のインフラと、自社サイトのインフラが同じかどうかわからないと思うのですが。
0545nobodyさん2009/07/03(金) 13:34:22ID:???
>>543
本人?
これ手伝おうかと思ったけど、
一番下の

>http://github.com/takeru/docrails/tree/master
>最終的にはここに入れます。

を読んでやる気なくした。

何で全部個人の手柄なんだよ。
0546nobodyさん2009/07/03(金) 14:00:42ID:???
本家に持っていく経由地としてそのリポジトリがあるだけじゃない?
なんなら545が最終的なまとめをやってあげれば?手柄ゲットだぜ。

1行ずつ訳すって中学の英語の授業みたいだなw
おもろいっw訳がガタガタになりそうだが。
0547nobodyさん2009/07/03(金) 14:13:25ID:???
>「最終的には」ここに入れます。
ってことは自分の手柄にするのが目的なんだろ。
0548nobodyさん2009/07/03(金) 14:48:17ID:???
ちょいと細かいことで、お聞かせ願いたいのですが、
共通な定数ってどこに書いたらよござんすか?

今は、コントローラーから参照するものはapplication_controller.rbに書いているんですが、
その他からも参照するようなときはどこに書いたものかと…。
0549nobodyさん2009/07/03(金) 14:48:37ID:???
>>543 のサイトの本人でございます。
親切な方がメールでこのスレで紹介されたと教えてくれました。

成果を独り占めする気はございません。
最終的には本家に入れば良いと思っています。
もちろん日本語版翻訳協力者のリストを付けるべきだと思っています。
0550nobodyさん2009/07/03(金) 14:55:02ID:???
過去スレから見つけてきた。

Ruby on Rails のスレ が
http://pc11.2ch.net/test/read.cgi/php/1207425569/792-796

792 名前:nobodyさん[sage] 投稿日:2008/08/18(月) 22:54:04 ID:???
RAILS_ROOT/libが $: に含まれてるからそこにおけばいいんじゃない?
名前をお約束通りに付けておけばconst_missingを捕まえて勝手にrequireするし。

795 名前:791[sage] 投稿日:2008/08/19(火) 23:50:18 ID:???
>>792
>>793

レスありがとう。

今はlibの下に置いてApplicationControllerでincludeしてるんだけど、「お約束通り」の命名にすればそれが不要ってこと?
定数名にRailsの命名規約があるの??

796 名前:nobodyさん[sage] 投稿日:2008/08/20(水) 08:25:05 ID:???
定数というか、モジュール/クラス名がconst_missingのとき、
その名前をオール小文字/単語境界をunderscore化、ネストをディレクトリ
とみなしたファイルがrequireされる。

たとえば、いきなりinclude FooBar::Bazとか書いて未定義の定数を使うと、
require 'foo_bar/baz' される。

----------------
ということは、lib/以下に common.rb みたいなの置いてmodule Common内に定数を書き、
使うところで(ApplicationControllerとかで?)
include Common して、定義してある定数 Hoge を使うか、
Common::Hoge を直接使う、ということでいいんでしょうか?
0551nobodyさん2009/07/03(金) 15:12:18ID:???
>>549
酷い自演を見た
0552nobodyさん2009/07/03(金) 15:16:54ID:???
定数をlib以下に切り出すってのはさすがに抵抗ある。
そこまで規約に従う理由があるのか?
0553nobodyさん2009/07/03(金) 15:54:42ID:???
定数Hogeの内容にもよると思う
0554nobodyさん2009/07/03(金) 16:34:28ID:???
>>552
$RAILS_ROOT/lib にクラスとかモジュールの実装を置くのは普通だと思うが、なんで?
rubyはクラスもふつう定数だがクラスは動的に書き換えられるのでなんか混乱するな。
0555nobodyさん2009/07/03(金) 16:42:35ID:???
これからRubyを覚えようと思うのですが、Rails使うには、Rubyが分かってないとダメですか?
0556nobodyさん2009/07/03(金) 17:24:33ID:???
libはあくまでライブラリじゃないの
自分で定義したものはやっぱりapp以下に置くのが自然に思うけど
0557nobodyさん2009/07/03(金) 18:01:42ID:???
lib/ は自分が書いたものの中で、Modelとか、Controllerとか、Helperとかに含まれないものを置く場所。
READMEに書いたある。
0558nobodyさん2009/07/03(金) 18:37:16ID:???
外部ライブラリはvendor/plugins以下に、自分が用意したものはlib以下に、って解釈でいいのかな?
0559nobodyさん2009/07/03(金) 18:47:47ID:???
>>558
vendor/pluginsはプラグインとして使えるように作られたものを置くところ。
自分でプラグインを作ってもOKなので、外部製とは限らない。

app以下はやっぱり
app/models(ActiveRecord::Baseのサブクラス)
app/controllers(ActionControllerのサブクラス)
app/helpers(ヘルパとして使うmodule)
を置くところであって、それ以外はlib/でよいだろう。

もとの質問の定数定義についてだけど、定数の名前が重要で値自体にさして
意味がない(互いに異なりさえすればよい)場合は 定数の名前に使う予定の
ものに相当するシンボルを使うことも一考に値する。
0560nobodyさん2009/07/03(金) 19:37:06ID:???
Rails pluginの管理はみなさんどうしてますか?
RubyGemsで入るRaptというのを使おうとしたのですが、githubには対応してなさげ…

githubのものでgemが作られてるものは、RubyGemsで入れればいいんでしょうけど、
小さいプラグインだとないものもあります。

script/pluginで手動管理でしょうか?
0561nobodyさん2009/07/03(金) 22:48:31ID:???
script/pluginだと何かまずいことがあるの?
個人的にはgemで用意されてるプラグインでも、汎用なものでなければscript/pluginでアプリケーションに個別に入れてる。
0562nobodyさん2009/07/04(土) 07:23:40ID:???
Rails2.3.2にはdispatch.fcgiがないのですが、fastcgi経由で動作させるためには
どっかからdispatch.fcgiをコピーしてくるのでしょうか?
ちなみに.htaccessもないもよう。
0563nobodyさん2009/07/04(土) 11:26:40ID:???
>>562
これっすかね?

Various files in /public that deal with CGI and FCGI dispatching are no longer generated
in every Rails application by default (you can still get them if you need them by adding
--with-dispatches when you run the rails command, or add them later
with rake rails:generate_dispatchers).

http://guides.rubyonrails.org/2_3_release_notes.html


Ruby on Rails 2.3 Release Notes
http://guides.rubyonrails.org/2_3_release_notes.html
0564nobodyさん2009/07/04(土) 12:20:26ID:???
もう触れるなよ。どうせ聞きっぱなしなんだから。
0565nobodyさん2009/07/04(土) 12:32:58ID:???
おれもそう感じてた
05665622009/07/04(土) 12:51:27ID:???
>>563
なるほど、サンクス!
0567nobodyさん2009/07/04(土) 19:22:01ID:???
販売か生産管理システム用のフレームワークってありますか?
0568nobodyさん2009/07/04(土) 22:48:17ID:???
Passenger(2.2.1)+VirtualHost使ってるのだが、

DirectoryIndex index.xhtml

ってやってもきいてくれずに404エラーになる。index.xhtmlは間違いなくある。
VirtualHostとDirectoryの両セクションコンテナでやってみたのだが。
これどうにかならないだろうか。おれだけ?
0569nobodyさん2009/07/05(日) 00:35:44ID:???
2.0に対応したRails本少ないなぁ…英語勉強するしかないかな
0570nobodyさん2009/07/05(日) 00:46:18ID:???
rubyしっかり勉強してソース読むのが王道
0571nobodyさん2009/07/05(日) 02:56:44ID:???
いや、それは無いだろさすがに
05725682009/07/05(日) 10:36:21ID:???
トップページだけ対処ということでRewriteにしてしまった
0573nobodyさん2009/07/05(日) 10:51:16ID:???
>>570
それ、なんて罰ゲーム?
0574nobodyさん2009/07/05(日) 11:38:01ID:???
railsのソース汚いよね。達人プログラマーでもあの程度なのかと思ってしまった。
0575nobodyさん2009/07/05(日) 12:38:44ID:???
David ThomasがRails自体を開発してるのか?Railsでの開発は好きらしいが。


まあ、口だけなのはわかってるけどなw
0576nobodyさん2009/07/05(日) 14:13:27ID:???
>>569
入門でいいなら、

・逆引き本
・Railsレシピ
・定番のAgile Web Development with Rails 3版を見ながらわからないところは、2版の日本語版を見る

俺はこんな感じで進めている。

>>574
汚いっちゅーか、黒魔術つかいすぎだと思う
0577nobodyさん2009/07/05(日) 19:27:05ID:???
rubyとしては見ては(ry
0578nobodyさん2009/07/05(日) 23:56:06ID:???
こんなパラメタ受け取りたいんだけど
params = {
 :hoge => [
  { :title => "タイトル1",
   :items => ["項目1","項目2",…]
 ]
}

上手いやり方知らない?
これだと上手くいかない
<%= text_field_tag 'hoge[][title]' %>
<%= text_field_tag 'hoge[][items][] %>
0579nobodyさん2009/07/05(日) 23:58:51ID:???
途中送信してしまった

こんなパラメタ受け取りたいんだけど
params = {
 :hoge => [
  {
   :title => "タイトル1",
   :items => ["項目1-1","項目1-2",…]
  },
  {
   :title => "タイトル2",
   :items => ["項目2-1","項目2-2",…]
  },
  …
 ]
}

上手いやり方知らない?
これだと上手くいかない
<%= text_field_tag 'hoge[][title]' %>
<%= text_field_tag 'hoge[][items][] %>
0580nobodyさん2009/07/06(月) 00:46:11ID:???
railsのコード読んだけどインデントの規則おかしくない?
0581nobodyさん2009/07/06(月) 10:08:07ID:???
>>580のエディタのtab幅の設定があってないとエスパーしてみる
0582nobodyさん2009/07/06(月) 10:19:10ID:???
>>581
Rails 2.3.2 だと、インデントにTABを使っている(grep '^TAB文字' で判断)のは
actionpack-2.3.2/lib/action_view/helpers/form_options_helper.rb
activerecord-2.3.2/lib/active_record/fixtures.rb
activesupport-2.3.2/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb
のみだった。
0583nobodyさん2009/07/06(月) 10:20:51ID:???
どこを見たのか知らないけど普通だと思うが
0584nobodyさん2009/07/06(月) 14:29:53ID:???
「おかしい」「普通」という感想だけじゃ話にならんな。
0585nobodyさん2009/07/06(月) 15:02:08ID:???
いや普通はいいじゃんw
多少の違いはあるかもしれんが、
ほとんどのプログラマは「普通」の感覚があると思うぞ。
0586nobodyさん2009/07/06(月) 15:21:41ID:???
タブ文字使って自力でインデントする習慣の人は
2文字じゃ困るって話じゃないかな
0587nobodyさん2009/07/06(月) 17:07:12ID:???
rubyでヲレ書式に整形するスクリプトでも書けば済む話。
0588nobodyさん2009/07/06(月) 18:09:23ID:???
仕事場でも未だにタブでインデントする奴いるけどすげー迷惑
とくに年寄りにその傾向があるようだ
0589nobodyさん2009/07/07(火) 03:00:09ID:???
Java でも C でもいいけど、超有名なオープンソースソフトウェアでも、
ソースはけっこう汚いこともあるよ(ロジックが汚いという意味ではない)
インデントとかコメントのルールとか、全然統一取れていないこともある

NTT 系の仕事だったら、NTT のやつらに絶対だめ出し食らうレベル

>>588
Linux(Unix)が開発環境となっている環境(CとかPHP/Rubyが多いかな)は、
・インデントはタブ
・vi なり Emacs で、タブ幅を4
を前提というかコーディング規約にしているところは多いね。

そういうのをWindowsのエディタや Eclipse で見ると崩れて見える。
(設定すればいいのだが)

んで、文句をいうと袋だたきにあう

どっちがいいか、というのではなく、文化というか習慣の問題だと思うが
0590nobodyさん2009/07/07(火) 08:29:50ID:???
>>589
# vim:set tabstop=2 shiftwidth=2 expandtab:
Rubyでviなら↑がデファクトスタンダードだと思うのだが。
0591nobodyさん2009/07/07(火) 08:31:45ID:???
知らんがな
0592nobodyさん2009/07/07(火) 08:57:12ID:???
規約にしてるのに設定しないで文句言うって馬鹿ですか?
0593nobodyさん2009/07/07(火) 10:00:13ID:???
viやemacsも、デフォルトのタブ幅は8のはずだから、
Windows使ってるから特別にデフォルトでも4タブが崩れないようにしろって主張は、
ちょっと意味がわからない。
0594nobodyさん2009/07/07(火) 18:05:00ID:???
>>593
タブ幅が8で許されるのはいつの時代だよw
0595nobodyさん2009/07/07(火) 18:06:15ID:???
手元のRuby 1.8.7だと大丈夫なのですが、サーバーの1.8.6環境だと
おきるエラーがあります。

1.8.6系の問題でよくトラブるので、サーバーも1.8.7にあげる予定なのですが、
原因を知っておきたくてご相談します。

下記ソースの
    @sub_items = sub_items.all
のところで、ログ見ると↓見たいに言われてます。

LocalJumpError (no block given):
  app/controllers/sub_items_controller.rb:5:in `index'

下記のようにすると問題なく動くのですが…。
    @sub_items = @item.sub_items.all


以下、ソース
(config/routes.rb)
  map.resources :items, :has_many => :sub_items

(app/models/sub_item.rb)
class SubItem < ActiveRecord::Base
  belongs_to :item
end

(app/models/item.rb)
class Item < ActiveRecord::Base
  has_many :sub_items
end
05965952009/07/07(火) 18:08:13ID:???
(app/controllers/sub_items_controller.rb)

class SubItemsController < ApplicationController

  # GET /sub_items
  # GET /sub_items.xml
  def index
    @sub_items = sub_items.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @sub_items }
    end
  end

  :

  # フィルタで必ず実行させる
  before_filter :must_item_present

  private
  def must_item_present
    @item = Item.find(params[:item_id])
  end
  
  def sub_items
    @item.sub_items
  end

環境: Rails 2.3.2, 鯖: Ubuntu 8.04LTS Ruby 1.8.6, テスト環境: Windows XP SP3, Ruby 1.8.7
0597nobodyさん2009/07/07(火) 20:24:32ID:???
質問よろしいでしょうか?

複数のfixtureで共通するERBコードをDRYしてどこかに書きたいものなのですが、
どこに置いたものでしょうか?

というか、fixture微妙につかいにくくないですか?
みなさん、どうしてます?
05985972009/07/07(火) 20:58:43ID:???
上でも出てたけど、factory girl使えってことなのかあ・・・

factory girl使った場合、rake db:fixtures:load 相当はどうやったらいいいもんですかね・・・
0599nobodyさん2009/07/07(火) 21:11:14ID:i/gOlMKP
2.2なんだが。 

view:
<% for .... %>
<%= check_box_tag('hoge_id[]',hoge.id) %>
<% end %>

複数のチェックボックスを動的に生成しているこのチェックボックスを
一つは必須入力にしたいのだがvalidateがうまくいかない。。orz

model:
validates_acceptance_of :hoge_id

↑↓動作せず。。。

:model

def validate
if read_attribute(:hoge_id).nil?
errors.add("nilnil")
end

エラーをみるとparamは hoge_id で渡ってきているのだが
DBにhoge_idがないためチェックが通らない?
(DBにはho_idという名前にしてある)

hoge_id[] にするとNoMethodErrorだし。

助けて・・・m(__)m
0600nobodyさん2009/07/07(火) 21:25:49ID:QCi36J2S
Ruby 1.8.7 rails 2.3.2
test環境作ろうと gemで autotest-rails を入れたんだが、
使ってみると、色も無い、ポップアップもなくて殺風景なんだが、
にぎやかに error 教えてくれるものないかな?
0601nobodyさん2009/07/08(水) 09:57:29ID:???
Windows + Netbeans + RoR + CRuby + mongrel で

uri = URI("http://localhost:3000/funyafunya/")
res = uri.read

こんなふうにすると uri.read で止まっちゃうんすよね。
mongrel が一度に一コネクションしか処理してくれないからっすかぁ?
やっぱ、そうっすよねぇ。

どうやったらぁマルチにできますか?無理っすかぁ。
0602nobodyさん2009/07/08(水) 11:14:05ID:???
>>601
どーしてもHTTP経由がいいなら、mongrelを複数立ち上げてロードバランサを前に置くか、passengerにするか。
HTTP経由でなくてもいいなら、render_component とか。

render_component はプラグインになったんで注意な。
06036012009/07/08(水) 19:55:48ID:???
別のプロジェクトにしますた。
0604nobodyさん2009/07/08(水) 21:34:05ID:???
ぽーとかえてにこたちあげればよかたね
0605nobodyさん2009/07/09(木) 00:50:39ID:???
昔 2.1.0 の頃に少し挑戦しました。
いまは 2.3 で、トランザクションのネストができると聞きました。

質問です!
トランザクションってControllerでするのでしょうか?
それともModelでするのでしょうか?
2.3 以前と以降で話が違いますか?

ついでにもうひとつお願いします。
ttp://webtama.jp/series/railstips/articles/31
「そうでなければ、ネスト処理は単純に
親トランザクションの一部として振舞います(Rails2.2の動作)」
↑これって、どういうことなのかわかりやすく教えてください。
2回目のトランザクションの開始と終了が無視されて、
1回しかトランザクションが処理されていないという意味でしょうか。
0606nobodyさん2009/07/09(木) 09:59:54ID:???
コントローラは処理の振り分け、
ビューは画面表示、
それ以外はモデルだと思えばいいよ。

一つに二つの質問は面倒。
0607nobodyさん2009/07/09(木) 17:41:28ID:???
ルーティングでコントローラーをネストした環境で、
url_forやbutton_toなどを使おうとしたのですが、
どのように引数を記述したものかわかりません。
どなたか、ご助言いただけないでしょうか?

例えば、/items/14/sub_items/45 のような場合は、
button_to("hoge", [@item, @sub_item]) のように記述すればいいのですが、

/items/14/sub_items/45/hage のようなアドレスにアクセスしたい場合、
どのように記述したものでしょうか?

button_to("hoge", :controller => [@item, @sub_item], :action => hage)

また、この辺のことを script/console で試してみようと、
下記のように script/console でurl_forなどヘルパーを実行しようとするとエラーが起きてしまいます・・・

script/console内でヘルパーをテストする方法 - yamazのRails日記 - Rubyist
http://rubyist.g.hatena.ne.jp/yamaz/20060818

>> helper.url_for :controller => 'items'
NoMethodError: You have a nil object when you didn't expect it!
The error occurred while evaluating nil.url_for
 from c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/helpers/url_helper.rb:85:in `send'
 from c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/helpers/url_helper.rb:85:in `url_for'
 from (irb):55
 from :0
0608nobodyさん2009/07/09(木) 17:52:22ID:???
RESTfulなルーティングを定義していれば、
item_subitem_path(@item, @sub_item) # or _url
で。

consoleで使うには
app.item_subitem(以下ry

06096072009/07/09(木) 20:24:00ID:???
>>608
ありがとうございます!
_path使って /items/10/sub_items/11 のようにはアクセスできるようになりました。
script/consoleでも動きました。

/items/10/sub_items/11/hage のようなアドレスですが、
Rails 2.3だと、:format指定でいけました。
item_subitem_path(@item, @sub_item, :format=>:hage)

ただ、
/items/10/sub_items/11.hage

というようなアドレスになってるんですが、大丈夫なのかなこれ…。
0610nobodyさん2009/07/09(木) 21:51:02ID:???
:formatは、URLで拡張子のように見えるところに使うという規約。
同じURLでも拡張子によってHTMLやJSONやXMLを返せるようにするためのもの。

hageの部分はそのままでは表せないので
config/routes.rb に
map.resources :items do |item|
item.resources :sub_items, :member => { :hage => :get }
end
と書くと
hage_item_sub_item_path(:item_id, :id)
で
/items/:item_id/sub_item/:id/hage
を表せる。
この場合、 SubItemsController#hageが、HTTP Getで呼ばれる。
0611nobodyさん2009/07/09(木) 21:52:04ID:???
× .../sub_item/...
○ .../sub_items/...

どういう規則が定義されているかは rake routes で。
0612nobodyさん2009/07/09(木) 22:23:18ID:???
hageはアクションじゃなくて単なるパラメータの1つだ、という場合は
RESTfulなルーティングからそろそろ外れてくるので、独自に書く必要が
出てくると思う。

item.myaction 'items/:item_id/sub_items/:id/:para',
:action => 'myaction', :controller => 'sub_items'
とか指定すれば
item_myation_path(item, sub_item, :para => 'hage')
#=> /items/:item_id/i/sub_items/:id/:para
0613nobodyさん2009/07/09(木) 23:34:06ID:???
rake routes
0614nobodyさん2009/07/10(金) 02:38:02ID:UisZbpVA
>>490 ってエラーになるけど (paged_usersなんてメソッドないって)
原文ではなぜエラーにならないのか??

いまいちルーティングの書き方を理解できてない俺。
0615nobodyさん2009/07/10(金) 05:02:00ID:???
>>614
たしかに、
map.paged_users '/users/pages/:page'
だとエラーになる。

map.paged_users '/users/pages/:page', :controller => 'users', :action => 'pages'
みたいに書けば動く。
使うときは<%= paged_users_url(:page => 1) %>
(rails 2.2.2で確認)
0616nobodyさん2009/07/10(金) 08:40:52ID:???
修正ごとに、動作を確認したくて
サーバー起動して、
http://127.0.0.1:3000/
を表示させているんですが、
結構時間がかかります。

何かお手軽な方法はありませんか?
0617nobodyさん2009/07/10(金) 10:33:57ID:???
クラス定義の変更の場合、developmentモードならリロードされる
(config.cache_classes = false)ので、再起動の必要はない。

スタイルシートの狂いの視認とかでなければテストを書いて走らせるだけで済むかも。
0618nobodyさん2009/07/10(金) 12:42:54ID:???
>>616
Webrick使うのをやめてThinにする。
0619nobodyさん2009/07/10(金) 14:45:40ID:???
修正したらキャッシュ無効だから遅いのは普通。
0620nobodyさん2009/07/10(金) 16:42:14ID:???
>>616
developmentモードなら、修正ごとにサーバー起動する必要ないよ。
06216072009/07/10(金) 16:58:44ID:???
サンクス

>>612-613
rake routesでも確認してみています。

少し疑問があるのですが、
ネストしていない状態で、コントローラーにメソッド hage を勝手に定義して、
 :action => :hage, :id => @item
のような感じでurl_forなどに渡すと、>>612のように定義しなくてもちゃんとルーティングしてくるのですが、
これは、config/routes.rbの中の下記記述によるものなのでしょうか?

map.connect ':controller/:action/:id'
0622nobodyさん2009/07/10(金) 18:26:18ID:???
そゆこと。
0623nobodyさん2009/07/10(金) 19:26:54ID:???
URLはそうなるけど実際にアクセスしたら
resourcesで定義したshow呼ばれない?
06246072009/07/10(金) 19:31:50ID:???
うまくいったぁぁぁあfsりゅいゆjjきl

以下のような感じでうまく行きました。下記は、
  /items/:item_id/sub_items/:id/hage
のようにアクセスさせたい場合です。hage は getでアクセスするものとしてます。
(config/routes.rb)
  # /items
  map.resources :items do |item|
    # /items/:items_id/sub_items
    item.resources :sub_items,
      # /items/:item_id/sub_items/:id/hage
      :member => {:hage => :get}
  end

(app/controllers/sub_items.rb)
  :
  # GET /sub_items/1/hage
  def hage
    respond_to do |format|
      format.html { redirect_to(item_sub_item_url) }
      format.xml  { head :ok }
    end
  end

(app/views/sub_items/index.html.erb)
  :
  <% @sub_items.each do |sub_item| %>
    :
    <td><%= button_to("ハゲる", hage_item_sub_item_path(@item, sub_item), :method => :get) %></td>
  :

わかっている人には当たり前のことだと思うのですが、今日という日は、みなさま本当にありがとうございました。
0625nobodyさん2009/07/10(金) 20:14:06ID:???
盛り上がっているところ?失礼します。

セッションについてお聞きしたいのです。
webアプリ自身あまり慣れていない者なのですが、

「Agile Web Development with Rails」(3版)では、
セッションに複雑なもの入れんな(とかいいつつ、チュートリアルではクラスのインスタンス入れてたりしますが)

とあったり、

「Railsレシピブック」では P83に

   なお、Rails 開発チームの見解としては、セッションに入れるデータは、
   ユーザーのID(整数)とflash メッセージ程度にとどめることが推奨されています。

などとあるのですが、この辺の開発チームの見解はweb上でどこかに記述がありませんでしょうか?
参考にしたいのですが…
0626nobodyさん2009/07/10(金) 21:15:16ID:???
>>625
restful = state less = セッションにデータいれんな
0627nobodyさん2009/07/10(金) 21:18:35ID:???
sessionはcookieを使っているのですか
0628nobodyさん2009/07/10(金) 21:20:41ID:???
デフォルトはそう
DBにもできるが個人的にはクッキーが好き
0629nobodyさん2009/07/10(金) 23:54:40ID:???
http://dev.rubyonrails.org/browser/trunk/actionpack/CHANGELOG?rev=6184
当時のchangelogのこれかな。

Sessions typically contain at most a user_id and flash message;
both fit within the 4K cookie size limit. <snip>
If you have more than 4K of session data or don't want your data to
be visible to the user, pick another session store.
Cookie-based sessions are dramatically faster than the alternatives.

セッションにはせいぜいUIDとflashくらいしか入っていないのが典型。
これはクッキーの4K制限に収まる。
4K以上入れたいなら他のストアを使おう。
クッキー使うと他より断然速いよ。
06306052009/07/11(土) 00:14:10ID:???
>>606
ありがとうございます

いつも疑問に思うのですが、コントローラーのメソッドAから
コントローラーのメソッドBが呼ばれることは少ないけど、
一方、モデルのメソッドCからモデルのメソッドDが呼ばれる
ことは多々あると思うんです。

それじゃあ、もしCがトランザクションを開始したかったら、
あらかじめDがトランザクションを開始していないことを
ソース追いかけて確認しないとダメなのでしょうか?

それに、Dだってさらに別のメソッドを呼んでいるかも…

C++でいう nothrow みたいに宣言できないのでしょうか?
notransaction とか?
0631nobodyさん2009/07/11(土) 00:26:45ID:???
入門書って何がいいかな?

・Ruby自体は習得済み
・インストールの方法をつらつらとコマンド並べて解説したりするのはいらない
・Webアプリの経験は無い
・HTMLは分かる
・1系を使う予定は無い

日本語じゃThe Ruby Wayがいいと思ったけどSimply Railsって良いのかな?
あんまし英語難しいのは勘弁だが洋書が良いなら有りかなとも思ってきた。
Agile Web Development with Railsとかもどうなんだろ?
0632nobodyさん2009/07/11(土) 00:35:57ID:???
>>631
http://guides.rubyonrails.org/
は駄目かしら。
0633nobodyさん2009/07/11(土) 09:06:59ID:rxtHjZBV
rorに適したosってなあに?
windows osよりlinuxの方が不都合が少ないとかなんとか
0634nobodyさん2009/07/11(土) 09:41:45ID:9PZL7n+0
Chrome OS
0635nobodyさん2009/07/11(土) 09:42:08ID:???
Windowsはrubyやwebアプリ自体に不向き
0636nobodyさん2009/07/11(土) 10:22:08ID:???
教祖が使ってるのはデビアンだっけか。
ror作者はマカだったかな?
運用は要求レベル次第。動けば良いなら好きなのでおk。
0637nobodyさん2009/07/11(土) 10:58:16ID:???
ようするにUNIXやその系統。
0638nobodyさん2009/07/11(土) 12:33:28ID:???
>>633
無難にUbuntuでいいんじゃないの?
インストール簡単だし、デスクトップも一番洗練されてる。

sudo apt-get install ruby1.8 rubygems1.8
sudo gem install rails

だけで開発環境できちゃうし。
WinやMacと比べても拍子抜けするほど簡単。
0639nobodyさん2009/07/11(土) 13:57:49ID:???
macはデフォでrailsはいってるけどな
0640nobodyさん2009/07/11(土) 15:46:08ID:???
Windows環境なのですが、

 ruby -Ku script/server

して文字コード指定しても立ち上がる mongrel 1.1.5のエラーメッセージがSJISになってしまうのですが、
これ何故なんでしょうか?

コマンドプロンプターには都合はよいと思うのですが、強制する理由(というか仕組み)がわからない…

UTF-8前提のIDEとかから立ち上げると、激しく化けたりして困る
0641nobodyさん2009/07/11(土) 15:47:42ID:???
>>633
Windows に vmwareでUbuntu入れるか、andLinuxかcoLinuxか、Portable Ubuntu入れるか
って、前も書いたようなキガス・・・
06426332009/07/11(土) 18:00:12ID:???
みなさまサンクス
vmwareでubuntuを使うようにします
0643nobodyさん2009/07/12(日) 22:19:47ID:???
Heroku使おうと登録してみて開通まで言ったけど。
オレが作ったアプリ軽く5Mオーバーだったw
無料じゃ仕えねぇ-w
0644nobodyさん2009/07/12(日) 23:37:57ID:???
PHPなら無料でもっといい環境がいくらでもあるよ
0645nobodyさん2009/07/12(日) 23:48:20ID:???
>>644
ここはRailsのスレなのに、PHPの話を持ち出しても意味がないだろ。
PHPなんか使いたくないから、Rails(Ruby)を使ってるんだよ。
0646nobodyさん2009/07/13(月) 03:35:00ID:Bzbq9kj3
xrea.com
0647nobodyさん2009/07/13(月) 18:10:18ID:???
>>646
xrea今まずいよ。クラック問題まだ解決してないはず
0648nobodyさん2009/07/13(月) 18:12:22ID:???
ついでに少し質問。
rakeだか、rspecだか遅いrails絡みのコマンドを早くするコマンドがあったはずなんだけど、
忘れてしまった…

どなたか覚えていませんか?

後ろに立ち上げておく類のものだった気がするんですが・・・

rake 高速化、rspec高速化とかでぐぐっても出てこない(´・ω・`)
06496482009/07/13(月) 18:15:39ID:???
いろいろ検索したらでてきた。
dRubyですた。サンクス…
0650nobodyさん2009/07/13(月) 23:04:16ID:???
attachment_fu(:file_sysytem)を使用したプロジェクトで
運用開始前に予め画像を入れておきたいのですが
script/runnerでPhoto.new({"uploaded_data" => open('hoge.jpg')})
するとattachment_fu.rb:343でuploaded_data= undefined method '[]'
してしまいます。
同じようなことをしたことがあるという方、おりましたら教えてください。

環境は
linux
ruby 1.8.7
rails 2.3.2
06516502009/07/14(火) 00:39:43ID:???
ごめんなさいREADMEに書いてありました・・・
0652nobodyさん2009/07/14(火) 01:15:56ID:???
なかなかよさげな本がオライリーから

ttp://www.oreilly.co.jp/books/9784873114163/

Railsで企業システムを扱うというのがテーマのようだ
さすがに基幹システムは無理だろうが、
部門システムくらいはJAVAのシェアを少し奪ってほしい
0653nobodyさん2009/07/14(火) 02:36:11ID:???
>>646-647
kwsk
0654nobodyさん2009/07/14(火) 03:24:27ID:???
>>653
coreserver にしとけ
0655nobodyさん2009/07/14(火) 07:55:01ID:???
>>653
kwskも何も、今からxreaはねぇだろ。クラック以前に
ドメイン契約しても無償サーバ空いてないこと多いし、
鯖がダウソしてるのに放置、メールサーバは海外で
spam鯖指定されてたり、慢性的に落ちてたり。
0656nobodyさん2009/07/14(火) 10:19:54ID:???
有料サーバを借りられないくらいの
プログラムを作るお前らには PHP で十分
0657nobodyさん2009/07/14(火) 10:22:03ID:???
>>656
どうしてそんなふうに他人を見下せるんだ?

金銭的な余裕のあるなしとRubyで開発をすることの間には何の関係もないのに。
0658nobodyさん2009/07/14(火) 11:33:59ID:???
>>656 は構って犬
0659nobodyさん2009/07/14(火) 11:56:28ID:???
656 が構って犬なら、
年数千円、数万円が払えないのは負け犬。
0660nobodyさん2009/07/14(火) 13:39:52ID:???
じゃあお前はrubyで開発するだけのためににわざわざ年間数万円を払うわけだな。
0661nobodyさん2009/07/14(火) 13:50:39ID:???
当然。数万なんてすぐに回収できる。

数万も払えないヘボは PHP 使ってろ。
0662nobodyさん2009/07/14(火) 14:01:37ID:???
はいはい、わろすわろす
0663nobodyさん2009/07/14(火) 14:06:43ID:???
負け犬の遠吠え、乙
0664nobodyさん2009/07/14(火) 14:19:55ID:???
いやいや俺は納品する前にBSDならBSD、LinuxならLinuxの環境が
自前で有るから、構築技術の無い >>653 = >>656 = >>659 = >>661 = >>663
みたいに無駄な金を使わずに品質の良いものが提供できている。
0665nobodyさん2009/07/14(火) 14:21:16ID:???
作る側より、発注する側のほうが100倍勝ち組という現実に気づけ。
0666nobodyさん2009/07/14(火) 14:27:04ID:???
自前だとサーバ代、電気代、ハードウェアの交換、メンテナンス代などなどで
数万円じゃ済まないことに気付け、低能。Ruby ユーザってこんなのばかりなの?
0667nobodyさん2009/07/14(火) 14:37:40ID:???
PHPでも無料サーバーはションベンスペックで、
多少人気が出るときついのだが。
格安サーバーで事足りるのはうらやましい気がするが、少し気の毒でもあるな。
そういうことが分からないということはサービスを公開したことなんてないのだろう。
0668nobodyさん2009/07/14(火) 14:42:01ID:???
>>667
うそつき、乙
0669nobodyさん2009/07/14(火) 14:43:52ID:???
>>667
書けば書くだけ無知とバカぶりをさらけだすだけですよ
0670nobodyさん2009/07/14(火) 14:46:12ID:???
Rails の無料サーバがないために
サービスすらはじめられない人が何を言っているんだ…
06716672009/07/14(火) 14:55:41ID:???
おれはが>>667以前に書いたのは>>652だから、
書けば書くほどというのはおかしいだろう。
ID出ないから仕方ないが。あと連投ならやめれ。
0672nobodyさん2009/07/14(火) 14:57:29ID:???
あほか
0673nobodyさん2009/07/14(火) 15:01:27ID:???
>>667 は悔しくて言ったの?
本気で言っているの?
0674nobodyさん2009/07/14(火) 15:01:55ID:???
お前らどんなサービス提供してるの?稼働してるならURL貼ってよ
PHPでもRailsでもどっちでもいいよ
俺は提供してるサービスなんて無いから無理
0675nobodyさん2009/07/14(火) 15:06:13ID:???
こーゆー所に貼っても叩かれるだけだろ
ばかか
0676nobodyさん2009/07/14(火) 15:12:53ID:???
Rails じゃ無料サーバがなくて分からないだろうけど、
一度、無料サーバで PHP でも Perl でも何でもいいからはじめてみろ。
月刊数十万アクセスは捌けるし、数千円から 1, 2 万円くらい行けるぞ。
0677nobodyさん2009/07/14(火) 15:13:23ID:???
>>666
御意
06786762009/07/14(火) 15:16:07ID:???
>>676
月刊→月間の間違えな。

1 年で 5 万円以上稼げれば
格安サーバ借りて、さらにアクセスさばければ
2, 3 倍稼げたりするよ。

ここでは URL 貼れない。
アフリを潰すような奴もいるし。
0679nobodyさん2009/07/14(火) 15:17:13ID:???
PHP か Perl か Rails か以前に、
月に数十万もアクセスが来てくれるようなサイト、コンテンツを作れるかどうかが
問題なわけだが
0680nobodyさん2009/07/14(火) 15:25:49ID:???
Rails は無料サーバがないから、
そもそも Web サービスがはじめられないわけだが
0681nobodyさん2009/07/14(火) 15:25:59ID:???
じゃあURLはいいからどんなサービスなのか教えてよ
アップローダ?ブログ?SNS?それとももっと先進的な何か?
0682nobodyさん2009/07/14(火) 15:39:19ID:???
難癖つける気、満々ですな。
Ruby ユーザって人格障害者多いね。

そんなことを気にしないで自分が作りたい
Web サービスを無料サーバを使ってどんどん作りなよ。
0683nobodyさん2009/07/14(火) 15:44:25ID:???
俺は情報提供サイト。
自分の好きなのや、興味のあるものを。
非 IT やオタクじゃないのをターゲットにすると
アフリをクリックする傾向あるね。
まずは無料で Web サービスをいろいろ作って
試行錯誤して経験値を積むのが重要。

PHP/Perl で作るのに飽きたので Rails で、
と思ったけど無料サーバのない現状にゲンナリ。
0684nobodyさん2009/07/14(火) 15:45:49ID:???
作りたいサービスなんて無いよ?そもそもRailsいじってないしね
ただWebアプリで儲けてるって人がどんなサービス提供してるか気になってさ
で、どんなサービスなの?
0685nobodyさん2009/07/14(火) 15:51:17ID:???
字の読めない人がいる。。。
0686nobodyさん2009/07/14(火) 16:06:14ID:???
もしRailsプレインストール済の無料レンタルサーバーがあれば
みなさん使いますか?
どのバージョンならいいですか?
0687nobodyさん2009/07/14(火) 16:15:12ID:???
Rails はバージョンによって互換性がまったくないから
長期間運用すると、ユーザによって
バージョン変えるな、新しくしろ、と大変そうw

あと Passenger って何百日安定稼働!ってないよね。
毎日 cron で早朝リブートしてる…。

Passenger がもっと安定して、
省メモリ、高速になったらしい Rails 3.0 からが
運用側としてはいいのかなぁ。
0688nobodyさん2009/07/14(火) 16:19:09ID:???
それ以外に Ruby が 1.8 か 1.9 か、という問題があるよね。

PHP/Perl は Ruby に比べて互換性の問題が小さい。
あと、必要メモリも 1/2 〜 1/3 で済むのでサーバ提供者は無料提供可能。

なので現実的に Ruby 1.9 & Rails 3.0 が安定してからの提供になるんだろうな。
0689nobodyさん2009/07/14(火) 16:53:09ID:???

>バージョン変えるな、新しくしろ、と大変そうw

>それ以外に Ruby が 1.8 か 1.9 か、という問題があるよね。

各バージョン毎の無料サーバーが立ってて同時に複数借りられれば
問題なさそうですね!
0690nobodyさん2009/07/14(火) 17:05:18ID:???
> 問題なさそうですね!
> 問題なさそうですね!
> 問題なさそうですね!
0691nobodyさん2009/07/14(火) 17:12:17ID:???
>>664 >>667 >>689
Rails ユーザの思考力は PHP の構文の出来並みですね。
0692nobodyさん2009/07/14(火) 17:29:36ID:???
>>691
とびっきり残念な Rails ユーザがいるのは事実だけど、全員ではない。
0693nobodyさん2009/07/14(火) 18:20:35ID:???
IDないから自作自演かもしれない。
0694nobodyさん2009/07/14(火) 18:35:28ID:???
いずれにしても煽られるくらいの存在になったというのは
裏を返せば市場が広がってるということなんで嬉しい話。
0695nobodyさん2009/07/14(火) 18:42:42ID:???
無料 Rails サーバがない程度の市場かよ
0696nobodyさん2009/07/14(火) 18:55:19ID:???
xrea
0697nobodyさん2009/07/14(火) 20:04:16ID:???
また基地外が現れたのか。

半角の前後にスペースがきっちり入ってるからわかりやすいな。
定期的に荒らすのはなんかのバイオリズムか?ちゃんと薬は飲めよ。
ぶつぶつ一人で会話して、ヒッチコックのサイコかよ。
0698nobodyさん2009/07/14(火) 20:34:01ID:???
そもそも儲かる見込みのサイトをrorで作れるなら、有料専鯖でも良いじゃないかと。
無料じゃないと困る様なへぼサイトならみんなと同じphp使ってろと。

儲かる仕事作れないのに、高額のマク強請るマカみたいなスレだ。
0699nobodyさん2009/07/14(火) 20:43:15ID:???
このスレに足りないもの
それはスルー緑
0700nobodyさん2009/07/14(火) 21:16:19ID:???
> 半角の前後にスペースがきっちり入ってる

初心者スレも本スレもこれで判定してたのに
おまえ・・・
0701nobodyさん2009/07/15(水) 01:55:13ID:???
>>695
無料サーバがない≠市場がない では?

無料鯖がないのは、Rails を動かす場合、
Passenger なり Mongrel なり、一アプリにつき一ポート使うからだと思う。
だからVPSなど、有料でroot権限もらえるとところだったら
Passenger や Mongrel を好きなだけ動かせるだろ。
(VPSだと、安いプランだとメモリが大変だけど)

Java だって Servlet を動かすには Tomcat などが必要だが、
一 Tomcat につき 一ポート使うから、無料サーバではやりにくいだけの話で、
Java による web アプリは、全然マイナーな技術ではないよね。
(レンタルサーバでやるようなものではないけど)

一方 perl や PHP は Apache の中に組み込まれるから(mod_perl、mod_php)、
各ユーザが PHP アプリを動かしてもポートは新たに消費しない。
だから無料鯖でも使われるわけで。

※
レンタルサーバで、あらかじめ Passenger がサーバにインストールされていて、
そのユーザのホームに .hoge (任意のファイル名) を置いておくと、
毎朝の root の cron で httpd.conf に RailsBaseUri の行を追加してくれ、そのあとは
http://{サーバ名}/~{レンタルサーバのアカウント名}/ で Rails アプリが動く、
なんてサービスがあったら、レンタルサーバでもポートを増やさずに
Rails アプリを動かせる、なんてことができていいかも。
0702nobodyさん2009/07/15(水) 02:21:05ID:???
cronにしなくてもhttpd.confにRailsBaseUriを追加してくれる
Webな管理画面があればいいですよね。
Passengerけっこう落ちるって噂ですが。

1. フレームワークがでかいから潤沢なメモリが必要
2. Rubyがそもそもメモリを食う
3. PerlやPHPではでかいフレームワークつかわないから軽いだけ

どれなんですか。
勘で1かと思ってます。
0703nobodyさん2009/07/15(水) 02:50:07ID:???
3
0704nobodyさん2009/07/15(水) 03:31:36ID:???
全部。さらに追加

4. 情報不足とそれに関連した使用者のスキル不足
5. まだあまり枯れてない
0705nobodyさん2009/07/15(水) 08:10:03ID:???
とりあえず目くそ鼻くそを笑う程度の連中だな。
0706nobodyさん2009/07/15(水) 08:14:05ID:???
>>701
>Tomcat につき 一ポート使うから
無知乙。mod_jkとかAJP 1.3てな単語でまずググレ。
javaが無料サーバでやらないのはVMがメモリ食いすぎるのと
javaでは何でも出来てしまうから「共有サーバー」で導入しないだけ。
0707nobodyさん2009/07/15(水) 10:21:44ID:???
要は Rails 無料サーバは当分無理ということ
07087012009/07/15(水) 10:30:33ID:???
>>706
>>Tomcat につき 一ポート使うから
> 無知乙。mod_jkとかAJP 1.3てな単語でまずググレ。

Java は長い間やってきているから、そこら辺は把握しているつもりです。
mod_jk とか mod_proxy_ajp をつかって外部には Apache の port 80 で公開していたとしても、
mod_jk は内部で動かしている Tomcat の port 8009 にスルーするだけだから、
結局、各ユーザごとの Tomcat のプロセスの起動が必要で、
それごとに 8009 (AJP を受け付けるポート)の bind が必要だと思いますが?

あとひとつの Tomcat に、各ユーザの webapp をデプロイする方法も考えられるが、
Passenger は、RailsBaseUri ごとに、動くユーザを変えられるが、
Tomcat は変えられない。
$CATALINA_HOME/webapp/foo アプリは foo ユーザ、/bar は bar ユーザで動かす、
ということができない。

> javaが無料サーバでやらないのはVMがメモリ食いすぎるのと
> javaでは何でも出来てしまうから「共有サーバー」で導入しないだけ。

ここは同意する。
0709nobodyさん2009/07/15(水) 11:44:11ID:???
Passengerが1アプリで1ポートか。すごい使い方だな
0710nobodyさん2009/07/15(水) 13:29:02ID:???
何か違う気がする。
perlやphpでも巨大なライブラリ使う事も出来るけど、もうそれはapacheごと重くなっても構わないって割り切りがあるから。
実際、phpとかperl使ってるサイトは重いし。
rubyは小賢くmod_rubyで重くなるほうに実装しなかっただけ。共用鯖で、はた迷惑になるのを覚悟でどんどん重い実装をしていけば、レン鯖でも通用するとは思う。
0711nobodyさん2009/07/15(水) 16:51:55ID:???
>>708
じゃあapacheは何故80番だけで多ユーザに対応出来るんだ?
MySQLも3306のみ、postgresも5432だけで多ユーザに
対応しているぞ。そこを考えろ。長いっつっても無駄に
長いとVBプログラマー(笑)と変わんなくなるぞ。

お前さんの根本的な間違いは、Tomcatは1ユーザに1ポート
与える必要がある、と考えていること。80から8009に流そうが、
外部に公開するのは80番だけでよいから、利用者はそこで
Tomcatが動いていると意識する必要はない。それと
TomcatはTomcat上でのマルチユーザー(Not UnixUser)に
十分対応している。なんでPassengerと比較するんだ?
共有PHP鯖でマルチユーザのWEBアプリが十分動いてるだろ。
0712nobodyさん2009/07/15(水) 16:57:05ID:???
つーか実際に単独Tomcat1鯖で複数ASPの稼動実績あるしな。
ま、机上の空論で無理無理と考えてるから前進出来ない。
0713nobodyさん2009/07/15(水) 20:16:06ID:???
railsの無料干すと少ないけどいくつかあるだろ
PHP使うとかマゾすぎんぞ
0714nobodyさん2009/07/15(水) 20:55:36ID:???
>>713
heroku 以外、どこ?
0715nobodyさん2009/07/16(木) 01:33:33ID:???
GAE/Java/JRuby
0716nobodyさん2009/07/16(木) 15:59:36ID:4+d1h2nC
でもさPHPは格安プランだとCGIモードの場合が多くない?
PHP moduleの場合は企業向けプランだったり。
0717nobodyさん2009/07/16(木) 16:12:37ID:???
334 :可愛い奥様:2007/06/26(火) 09:46:19 ID:raxdPvfD0
OLだった頃、会社で働いていた日本に超詳しいベルギー人が言ったことに納得してた。
日本文化は身内受けの凝り性文化だそう。
外国文化に負けまいとしているのではなく、
世に意図的にインパクトを与えようとしているのでもなく、
今ここにいる同じ価値観を共有する仲間からの喝采を浴びたいと考える。
その結果、同じものを志す者同士の「これすごいだろ、おもしろいだろ」合戦が始まり、
そこで生み出される物が自然と研ぎ澄まされていく。
でもその競争は、敵対的なものではなく、お互いを尊敬しあいながら、静かに深く進行していく。

そしてある日、偶然目撃した異文化出身の人間(外国人)から、
それがすごいものであることを知らされる。
ほとんどの日本人はその日が来るまで、自分たちが作り上げた物がすごいものとは知らない。
もろもろの伝統文化、芸能、電化製品、アニメ、他、みんな同じパターンで世界に広まっていった。
だから、日本がここまで発展してきたのも必然的なものだし、
この精神が衰えない限り、これからも日本は誰に頼まれることもなく、
知らないうちに勝手に世界にインパクトを与え続けていくだろうと。
0718nobodyさん2009/07/17(金) 11:19:51ID:???
チーム世耕、B層へのラーニング、乙
0719nobodyさん2009/07/17(金) 19:20:40ID:???
rubyもcgiで使えば良いだけの話。
0720nobodyさん2009/07/17(金) 20:55:05ID:???
> 3. PerlやPHPではでかいフレームワークつかわないから軽いだけ
そうだよな。
CGIでもまともに動く軽量フレムワがあればいい。
0721nobodyさん2009/07/17(金) 22:00:28ID:???
one night
0722nobodyさん2009/07/20(月) 17:22:47ID:???
少し質問させてください。

request.remote_ip などrequestの情報をコントローラーではなく、モデルから取得したいのですが、
どうしたものでしょうか?
コントローラー側から、引数で渡すしかないでしょうか?

モデル側からコントローラーのインスタンスにアクセスする手段がある?とか(そうするとテストがやっかいそうですが…)

Rails 2.3.2です。
0723nobodyさん2009/07/20(月) 17:28:07ID:???
>>720
それはありますよね。今だとSinatraでしょうか?

そもそも、Railsと比べるべきは、PerlやPHPなどの言語ではなく、フレームワークですよね
CakePHPとか十分重いですよね。もちろん、Railsよりもデプロイ等楽ですが、
無料レンサバのphpはCGI版という現実…

無料レンサバでRails動かしたいという人は、passengerついてるDreamhostのお試し期間で試してみたら、どうかな
Dreamhostも共有サーバーだけど、なかなかなしんどさで無料鯖でRailsやりたいという願望の非現実感が味わえますw
0724nobodyさん2009/07/20(月) 17:46:00ID:???
おれもRuby会議でシナトラ知ってこれかも。と思ったところ。
0725nobodyさん2009/07/20(月) 18:25:13ID:???
>>722
引数で渡すのが一番簡単だと思う。
あるいは、ApplicationControllerあたりでグローバル変数にrequestをセットするbefore_filterを定義とか。

0726nobodyさん2009/07/21(火) 02:59:52ID:???
けっこうRuby会議行っている人いるんだな。
おれも3日間いったが。

Javaから転校してきてまだ3ヶ月なんだけど、
Rails→超有名
Sinatra→次に有名、もはや珍しくない

まではわかったけど、ほかにも有名なものってあるの?
Java だと web フレームワークはたくさんあって選ぶのに困るぐらいだけど
(もちろん、フレームワークによって得意とする局面はいろいろあるけど)、
Ruby の web フレームワークもそんな状況なのか、
それとも Rail と Sinatra ぐらいなのか?

とりあえず merb と ramaze はRuby会議で知った。
0727nobodyさん2009/07/21(火) 05:47:32ID:???
>>711
板違いで申し訳ないんですが、以前から疑問に思っていたので便乗します。

> TomcatはTomcat上でのマルチユーザー(Not UnixUser)に
> 十分対応している。

というのは、tomcat-users.xmlで管理するという意味ですか?

だとするならば、それはUnixユーザー並みに、ユーザーごとに分離独立で
管理できるのですか?

それから、

> javaでは何でも出来てしまうから「共有サーバー」で導入しないだけ。

ということは、例えば、webapps下の別ユーザーが管理するアプリの
ディレクトリ下を書き換えたりできてしまう可能性がある、
ということですか?

上記等から、レンタルサーバ屋さんは基本的に1ユーザ1Tomcatであるべき、
と考えているということなんですか?
0728nobodyさん2009/07/21(火) 15:42:40ID:rQ1yXsK1
お聞きしたいことがあるのですが、
とあるテーブルのidが求められていた場合、
ある条件下(例えばデータ生成順)においてそのidのデータが何番目にあるのか?というのを求める方法はないものでしょうか?
また、ActiveRecordでそれはどのように書いたものでしょうか?

例えば、id=1234が :order => "created_at asc" という条件で検索した場合に何番目なのか?という話です。

Rails 2.3です。
0729nobodyさん2009/07/21(火) 17:45:21ID:???
>>728
ttp://codezine.jp/article/detail/460?p=2 を参考にすると、
1 + Model.count(:conditions => [ 'created_at < ?', Model.find(1234).created_at ])
だろうか。該当の値より小さい要素の数プラス1(先頭を1とする場合)
0730nobodyさん2009/07/21(火) 22:41:56ID:fpo5xh0M
>>729
ありがとうございます。

created_atが同じ場合に問題が出そうです…。

とりあえず、こんな風に書いてみました。かなり富豪的ですが、アクセスは少ないのでいけるかな?

item_id = 1234
item_number = Mode.find(:all, :order => "created_at asc", :select => "id").index{|x| x.id == item_id } + 1

穴がないか、心配ではあります。
0731nobodyさん2009/07/21(火) 22:43:48ID:fpo5xh0M
>>730
ですが、いきなり>>730の例は Mode.find(:all で富豪的すぎますが、
実際には、:conditions => ["hoge_id", hoge] みたいに、要素を絞って使ってますです。
0732nobodyさん2009/07/21(火) 22:44:29ID:fpo5xh0M
ヽ(`Д´)ノ ウワァァン!!ミスばっかりだよ
x :conditions => ["hoge_id", hoge]
o :conditions => ["hoge_id = ?", hoge]
0733nobodyさん2009/07/21(火) 22:49:39ID:???
値が同じなら、ソートしたときその値の集団のどこに位置してるかは
「たまたまそうなった」以上の意味はない気がする。
最後尾の位置は、比較を <= にして +1 なしにすれば求められるな。


0734nobodyさん2009/07/21(火) 22:53:59ID:???
まあ、理想を言えばSQLのテーブルは、「表」というより「集合」
だからな。順序という概念はあまり相性がよろしくない。
ORDER BYは列の整列というより取り出し順だし。
0735nobodyさん2009/07/22(水) 18:51:56ID:???
RailsでGoogle Mapsを利用するには何が良いのでしょう?
何となくYM4R/GMが良い気がしますが、ほかに何かある?
0736nobodyさん2009/07/22(水) 19:27:20ID:???
ok
0737nobodyさん2009/07/24(金) 00:02:40ID:???
gettextを利用すると、ビューでヘルパーメソッド(number_to_currency)
が機能しなくなりました。

gettextは利用しないほうがいいんですかね?
対応策があれば教えてください。

[環境]
rails 2.3.2
ruby 1.8.6-p287
Ruby-GetText-Package-2.0.4
0738nobodyさん2009/07/24(金) 01:28:01ID:???
試してみたが確かに整形されないな。
script/console
>> helper.number_to_currency(1000)
=> "$10,000.00"
にはなるのだが……

number_to_currencyのようなヘルパはRails標準のI18nフレームワーク
を利用しているので相性が悪いとは思う。

gettext的にはビュー上は
<%=h(_('$%.2d') % price) %>
のように出力しておき、日本語なら '%d円' になるようにメッセージ
カタログを用意するのだろうね。
0739nobodyさん2009/07/24(金) 01:29:34ID:???
1000→10000
適当に脳内修正よろ。
0740nobodyさん2009/07/24(金) 02:03:33ID:???
>>738
ありがとうございます

う〜ん。悩みますね。
まぁ仕事で利用しているわけではないんで、
色々試してみます。ありがとうございました。
0741nobodyさん2009/07/24(金) 02:13:28ID:???
URL引数で ?lang=en のように明示してやると表示出来た。
ということはきちんと初期化しれやればうまくいくはず……

0742nobodyさん2009/07/24(金) 02:42:21ID:???
アプリ作成
$ rails _2.3.2_ testapp

適当なモデルを作ってレコードを作成。
$ ./script/generate scaffold Book title:string author:string price:integer
$ rake db:migrate
$ ./script/console
>> Book.create(:title => 'Untitled', :author => 'Anonymous', :price => 10000)

number_to_currencyを利用
$ vi app/views/books/show.html.erb
<%=h number_to_currency(@book.price) %>

GetTextの使用
$ vi config/environment.rb
config.gem 'locale'
config.gem 'locale_rails'
config.gem 'gettext'
config.gem 'gettext_activerecord'
config.gem 'gettext_rails'

I18n FWの初期化
$ vi config/initializers/locale.rb
I18n.supported_locales = %w(en)
I18n.default_locale = 'en'

でフォーマット出来た。
0743nobodyさん2009/07/24(金) 02:55:25ID:???
>>742

おお〜〜〜!!

やってみたら私もフォーマットできました。
これでgettextと併用できます。
ありがとうございます。
0744nobodyさん2009/07/24(金) 06:22:36ID:???
国際化というかメッセージの日本語化は、やっぱりgettextをみんな使ってるのかな?
自分の場合は、i18nのほうが分かりやすいと思ってるので、i18n_generatorsでymlを生成してます。

0745nobodyさん2009/07/26(日) 09:25:57ID:VPPSkKB9
ちょっと聞きたいんだけど、お前らのところでこれどのくらいかかりますか。
(Windowsスレでレスもらえなかったのでこっち着ました)

$ time script/runner "puts 'hello'"

hello

real 0m16.309s
user 0m0.015s
sys 0m0.015s

$ time script/runner "puts 'hello'"
hello

real 0m12.124s
user 0m0.000s
sys 0m0.030s

環境:Windows Vista SP2, Ruby 1.8.7 Rail 2.3.2, CPU Core 2 Quad Q6600, Memory 2GB
0746nobodyさん2009/07/26(日) 10:05:05ID:???
下げ忘れスマソ
0747nobodyさん2009/07/26(日) 15:17:17ID:???
レスもらえなかったのは聞く場所間違えてるからだろ
っつかマルチすな
http://pc12.2ch.net/test/read.cgi/tech/1216829388/
0748もうだめ2009/07/27(月) 19:48:09ID:???
#rake db:migrate
rake aborted!
Multiple migrations have the name CreateBooks
#rake
/usr/local/bin/ruby -I"lib:test" "/usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb"
/usr/local/bin/ruby -I"lib:test" "/usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb"
Errors running test:units!
てな状況なんですが、ヒントくれませんかー?mysql ruby gems rails は最新verです
0749nobodyさん2009/07/27(月) 21:18:52ID:???
>>748

>Multiple migrations have the name CreateBooks
読める?

Migration classの名前を重複しないようにする。
おおかた XXXX_create_books.rb をコピーして、クラス名を変えずに
中身だけ変えたんだろう。
0750もうだめ2009/07/27(月) 22:09:13ID:???

>>749 ありがとう。素人には難しいね
今、全部アンインストールしてやり直してるところだから
後でまたやってみるよ
0751もうだめ2009/07/27(月) 23:27:06ID:???
できた!
ありがとう
0752nobodyさん2009/07/28(火) 06:15:55ID:???
なにかちゃんと一冊ror本読んで基礎から積み上げたほうが良いよ。
0753nobodyさん2009/07/28(火) 10:35:53ID:???
>>747
すまない。マルチするつもりはなかったんだ。一言向こうに書くつもりだった。すまなかった。
0754nobodyさん2009/07/28(火) 10:44:07ID:???
Authlogic と acl9の組み合わせでログイン認証と権限管理やっている人いませんか?


Authlogicは大体↓exampleとか見て、大体組み込めたんですけど、
binarylogic's authlogic_example at master - GitHub
http://github.com/binarylogic/authlogic_example/tree/master


acl9のチュートリアルで詰まってます。
Tutorial: securing a controller - acl9 - GitHub
http://wiki.github.com/be9/acl9/tutorial-securing-a-controller


Third step: here comes the adminのところなんですが、
Userモデルにacts_as_authorization_object入れるという話なのですが、
↓こちらではSubject modelでacts_as_authorization_subjectを書くとかなっててどっちなの?という。
http://github.com/be9/acl9/tree/master

それと、結合テーブル作らないといけないみたいなのんですが、
migrationするroles_usersはモデルも作る必要あるんでしょうか?

そもそも、結合テーブル何で必要なのかわかってなかったりしますが…。
0755nobodyさん2009/07/31(金) 16:31:29ID:???
現在 routes.rb に以下のような定義をしています

map.resources :payments
map.connect ':controller/:action'
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'

この場合、例えば http://localhost:3001/payments/list を GET でアクセスできないのでしょうか?

Couldn't find Payment with ID=list

というエラーがでます。

http://localhost:3001/payments/list/0

とやればアクセスできるようです。
0756nobodyさん2009/07/31(金) 17:43:03ID:???
>>755
rake routes
0757nobodyさん2009/07/31(金) 17:43:49ID:???
map.resources :payments
で定義されるルーティングが先にマッチするからでしょう。

rake routes でルーティングを確認しましたか?
07587552009/07/31(金) 18:15:37ID:???
>>756,757

ありがとうございます。
rake routes の結果より

payment GET /payments/:id(.:format) {:controller=>"payments", :action=>"show"}

が優先的にきいてるようです。

:action => "list" が存在しない場合だけ上記が適用されるようにしたいのですが、可能でしょうか?
0759nobodyさん2009/07/31(金) 18:28:39ID:???
 :action => "list" が存在しない場合だけ
の意味がよくわかりませんが、

map.resources :payments
より前に
map.connect '/payments/list' { :controller => "payments", :action => 'list' }
を書くというのが、やりたいことじゃないかと思います。
controller が payments だけじゃなくて、しかも list メソッドが定義されていない場合は
マッチしないでくれ、という場合は…
:id のフォーマットを正規表現で限定する機能が使えるかもしれません。
07607542009/07/31(金) 18:39:13ID:???
いろいろやってたら、Authlogicとacl9で上手く行きました!

> ↓こちらではSubject modelでacts_as_authorization_subjectを書くとかなっててどっちなの?という。

メインの関連するモデル(Authlogicの場合User)は acts_as_authorization_subject の方でいいみたいです。


> それと、結合テーブル作らないといけないみたいなのんですが、
> migrationするroles_usersはモデルも作る必要あるんでしょうか?

必要なかったです。

lib/ruby/gems/1.8/gems/be9-acl9-0.10.0/lib/acl9/model_extensions.rb などを見ればわかるのですが、
acts_as_authorization_subject で、
 has_and_belongs_to_many :roles, :class_name => role
を呼んでおり、(Authlogicの場合)UserとRoleを多対多で関連付けているみたいです。

しかし、この多対多のhas_and_belongs_to_many ですが、下記サイトを見ると
Ruby on Rails - ActiveRecord - ? ありえるえりあ
http://dev.ariel-networks.com/articles/workshop/rails-activerecord

> * has_and_belongs_to_many (HABTM)
> :through 登場以降の存在がいまいち不明なので無視します。

とかあるのですが、これって今は使わないんでしょうかね。


とにかく、おさわがせしました。
ありがとうございました。
0761nobodyさん2009/07/31(金) 19:15:26ID:???
使えないわけではないが、いろいろ扱いが面倒。
has_many :throughだと、テーブルの関連自体をオブジェクトとして
扱えるので何かと便利。
0762nobodyさん2009/07/31(金) 20:33:56ID:TkoSwHP8
>755の貼ってるURLクリックしたら画面が表示されてびっくりした。
paymentsって結構一般的なんかな。
07637552009/07/31(金) 22:15:57ID:???
> 759
やはりそうするしかないですね
ありがとうございます
0764nobodyさん2009/08/03(月) 08:55:54ID:OSViAr5u
質問です。
クッキーストアなセッションを盗聴もしくはXSSによって盗まれた場合、
そのセッションを無効にするには secret を再生成するしかないという理解なのですが、
あってますでしょうか?
0765nobodyさん2009/08/03(月) 10:49:14ID:???
無効にしても、再びxssで正規セッションから誘導出来るので根本対策に成らないと思うが。盗聴も同じ。また盗聴されれば(ry

番号札取られて順番待ちに横入りされまくってる状況をなんとかしないと。
0766nobodyさん2009/08/03(月) 11:03:10ID:???
>>764
そのセッションをと書いてあるだろ。xss気づいた時点で直すだろう。ただ直しても過去のセッションは生きてるから、過去のセッションを無効にしたいってことだろ。そもそも偉そうに言う前に答えてからにしろ。

で、答えは、私も解らん。
もちろんsecret変えれば、無効になるが、それ以外にないかって言われると…。
07677642009/08/03(月) 11:50:48ID:???
>>765, 766
レスありがとうございます。

secret を再生成するとログイン中のユーザーを強制ログアウトしてしまうので、
それ以外の方法はないのかなーと思いまして。

そもそもクッキーが盗まれないようにしろよって話なんですが
07687642009/08/03(月) 12:03:13ID:???
クッキーが盗まれないようにするには、

XSS に対して => アプリ側で穴をふさぐ
盗聴に対して => 通信内容の暗号化 => 全面的にHTTPS

ということになると思うんですが、世の中見渡しても全面的にHTTPS な
Webサービスって少ないですよね。これって

そこまでせんでもええやろ

ってことなんでしょうか?

なんだか XSS に対してはやたらうるさく言われる割に、
盗聴されるとクッキー盗まれるからHTTPSにしなさいってのは(XSSと同じ被害が出る割に)
随分とトーンが弱い気がします。
0769nobodyさん2009/08/03(月) 12:40:19ID:???
Https だと web サーバに負荷が掛かるからでしょ
アクセス数が超多い人気サイトだと、SSLアクセラレータを前に置いたりするが、
それでも処理が捌けなかったり、そもそもそんな金があるなら別のところに使いたい。

携帯サイトだと、毎回 Https のダイアログがあるのは嫌われる。
07707642009/08/03(月) 13:01:19ID:???
>>769
> Https だと web サーバに負荷が掛かる
> 携帯サイトだと、毎回 Https のダイアログがあるのは嫌われる。

お金や個人情報を扱うクリティカルな処理でない限り
コスト・利便性が優先ってことでしょうか。

その辺のバランス感覚がよくわからんす。
盗聴のリスクを過大評価してるんですかね?>自分
07717692009/08/03(月) 13:07:16ID:???
>>770
> お金や個人情報を扱うクリティカルな処理でない限り
> コスト・利便性が優先ってことでしょうか。

まさにバランスだが、そこら辺は難しい。

どこかのセミナーで聞いたけど、セッションハイジャックがおきても、
本当に致命的な情報は盗まれないように設計すべき、というのを聞いた。

たとえばヤフー(さらにたとえればヤフオク)は、入札する直前に、もう一度パスワードを入力させる。
パスワード変更画面へアクセスするときにもパスワードを入力させる。

つまり、攻撃者がクッキーを盗んでセッションに入り込んだら、何でも出来てしまうようではダメ
(ユーザの情報を、何でもセッションに入れてしまうようではだめ)ということ。

ちゃんと考えられたサイトでは、ログインとか決済画面は Https で包んでいても、そうでない画面は
Http だったりする。
07727642009/08/03(月) 13:43:20ID:???
>>771
> ちゃんと考えられたサイトでは、ログインとか決済画面は Https で包んでいても、
> そうでない画面は Http だったりする。

自分が利用しているサービスは大抵そうなってますね。
そのことは実は前から気になってて、いくらログインが https でもこれじゃ
セッション乗っ取られるやんと思ってたのですが、これって仮にセッションが
乗っ取られても(被害0という訳ではないけれども致命的という訳でもない)
なんとかフェールセーフだからこうしますってことなんですね。

なんつーか、そういうもんなんですね、世の Webサービスというのは。
勉強になりましたっす。
07737642009/08/03(月) 14:37:17ID:???
>>764
> クッキーストアなセッションを盗聴もしくはXSSによって盗まれた場合、
> そのセッションを無効にするには secret を再生成するしかないという理解なのですが、
> あってますでしょうか?

自己レス
ログインの度に更新されるトークンをユーザーのモデル属性に追加して、
それをセッションハッシュに含めるようにすれば、例えセッションクッキーを盗まれても
正規ユーザーのログインと同時に無効にできますね。
0774nobodyさん2009/08/04(火) 00:02:32ID:???
クッキー総当たりもあるしなあ。盗まなくても全部試せばってのもある。

正規ユーザのログインを阻害しておけば、いつまでも取得したクッキーで成り済ませるというのもどうかと。
07757642009/08/04(火) 00:18:20ID:???
>>774
> 正規ユーザのログインを阻害しておけば、いつまでも取得したクッキーで成り済ませる

パスワードとメールアドレスの変更さえ阻止できれば正規ユーザーのログインが
阻害されるということはないという認識なんですけど、この場合のログインの阻害とは
物理的にログインできない状態にさせるということですか?

つまり、クッキーを盗んだ犯人が正規ユーザーの知り合いかなんかで、言葉巧みに
しばらくそのサービスにログインしないように仕向けるとか
0776nobodyさん2009/08/04(火) 01:10:30ID:???
>>774がめちゃくちゃすぎてワロタw
0777nobodyさん2009/08/04(火) 16:17:56ID:???
ActionController::HttpAuthentication::Digest でDigest認証をする場合、
functional test はどうやればいいの?
0778nobodyさん2009/08/04(火) 17:45:14ID:???
プラグインが動いたとき、いつも「おーすげー」といってしまう
07797552009/08/05(水) 00:30:31ID:???
select("foo", "bar", {1 => 1, 2 => 2, ....., 20 => 20})
と、数字を20まで表示させたいのですが、ループなどを組んで指定するにはどうやったらいいのでしょうか?
0780nobodyさん2009/08/05(水) 00:50:11ID:???
>>779
opts = {}
(1..20).each {|i| opts[i] = i }

みたいな感じでハッシュを作ってそれを select に渡したら?
0781nobodyさん2009/08/05(水) 01:20:19ID:???
>>780

Hash[(1..20).map{|e|[e,e]}]
や
(1..20).inject({}){|r,e| r[e]=e;r}
なら、その場に書ける。
0782nobodyさん2009/08/05(水) 03:46:34ID:???
>>781
前者は古いrubyだと動かないんじゃないか?
0783nobodyさん2009/08/05(水) 09:03:17ID:???
>>782
1.8.6だとアンドキュメンテッド(というかドキュメント化を忘れられ)
だが、動く。
07847832009/08/05(水) 09:04:35ID:???
動くと思ったが、Hash[*(...)] でないとうごかなかった。
ごめんなさい。
0785nobodyさん2009/08/05(水) 11:05:53ID:???
>>779-784
みなさまどうもありがとうございます
教えていただいた方法全て試したのですが、
<option value="16">16</option>
<option value="5">5</option>
<option value="11">11</option>
<option value="17">17</option>
のような結果になりうまくいきません。
なんか難しそうです。
0786nobodyさん2009/08/05(水) 11:27:13ID:???
やりたいことは
select 'foo', 'bar', 1..20
でたぶんできます。

確かに select の第3引数は Enumerable なら何でもいいけど、
基本的には Hash じゃなくて Array の Array を渡すものと考えといた方が良いよ。
0787nobodyさん2009/08/05(水) 11:33:58ID:NCOUlOL5
validates_length_ofってなんでバイト数じゃなくて文字数を見るようになったの?
バイト数の方がよかったんだけど・・

この仕様しらなかったせいでバリーデーション不備のまま本番にあげちゃってちょん切れたデータを多数テーブルに格納してしまった・・
0788nobodyさん2009/08/05(水) 11:57:44ID:???
mysqlだとtextとstringで違うとかもあった
07897802009/08/05(水) 12:16:04ID:???
>>785
ごめん。ハッシュじゃそりゃダメだわw
>>786 みたいにするか

[[label1, value1], [label2, value2], ...]

な配列を渡すんだ

http://api.rubyonrails.org/
0790nobodyさん2009/08/05(水) 14:14:24ID:???
>>786
そのやり方でできました!
ありがとうございます。
0791nobodyさん2009/08/05(水) 16:35:58ID:???
map.resource(s)で定義されるRESTfulなルーティング規則で呼び出される
アクション(indexとかshowとか)に対して、before_filterで、実行予定のア
クションが
- コレクションのアクション(index, newなど)
- メンバーのアクション(show, destroyなど)
のどちらなのかを判断する方法はないでしょうか。

標準のscaffoldで作られるもの以外にも対応したいので、
- index/new/createならコレクション
- show/edit/update/destroyはメンバー
という判定は避けたいです。

idパラメータの有無で判断するのが簡便に思えますが、誤判定の可能性
はないでしょうか。
07927772009/08/06(木) 00:16:21ID:???
>>777
テストのときだけ認証をスルーするようにした。
0793nobodyさん2009/08/06(木) 04:01:57ID:???
>>791
action_name 見りゃいいだけじゃ?
0794nobodyさん2009/08/06(木) 04:44:08ID:???
insert_html で、javascriptのコードをevalした結果を
insertしたりとかでけんのですかね?
いろいろと試してはみたのですが。
insert_html 'hoge', :bottom, :js => 'fuga' とか。
0795nobodyさん2009/08/06(木) 08:43:01ID:???
>>793
それはまさに>>791が避けたいと言っている方法では。
0796nobodyさん2009/08/06(木) 08:48:10ID:???
id以外にメンバを指定する方法を実装したら
それをどんどん判定条件に加えていけばいいような。
0797nobodyさん2009/08/06(木) 11:23:04ID:???
コレクションに対するアクションなのか、メンバーに対するアクションなのかは
アクションの実際の動作によるとしかいえないので、アクションの動作を
調べないかぎり誤判定はありえるでしょう。
つまりはコレクションかメンバーかは規約によるので、restという規約なら
アクションは予め決まっているので、それをaction_nameで判断すればいいのでは
ないでしょうか。
restのアクション以外を実装するケースを判断するには、そのアクションの対象が
コレクションかメンバーなのかは実装者にしかわからないでしょう。

0798nobodyさん2009/08/06(木) 13:22:51ID:???
resoucesメソッドの :collection => とか :member => とかを見れば
どうかと思ったが、その場でルーティング判定コードに変換されたらど
こにも残ってないな。
0799nobodyさん2009/08/06(木) 19:37:35ID:???
ActionMailerでお手紙だそうとしているんですが、タイトルが文字化けしてしまうの(´・ω・`)
文字化けしないようにするにはどうしたらいいんでしょうか?

config/enviroment.rbにて、

 config.action_mailer.default_charset = 'iso-2022-jp'

はすでに設定してあります。

下記サイトによると、2.3では大丈夫?みたいにあるのですが、大丈夫でないみたい・・・
Ruby on Rails - メール送信 - gendosuの企画開発室
http://gendosu.ddo.jp/redmine/wiki/1/%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%81%E4%BF%A1?export=txt&version=14

環境:Rails 2.3.2 Ruby 1.8.7
0800nobodyさん2009/08/06(木) 22:34:44ID:U5nTdGUe
受信者のタイトルの文字コードをまず書いてね。
0801nobodyさん2009/08/07(金) 01:36:44ID:???
メールにかけられた呪文「MIME〜前編」
http://www.atmarkit.co.jp/fnetwork/rensai/netpro03/netpro01.html
08027992009/08/07(金) 04:13:16ID:???
>>800
UTF-8になっているみたいでした…

>>801
よくよんでみます


ActionMailerのソースを見る限り、大丈夫じゃない感じだったので(元になったTMailはルーチンは残ってるんですが)、
下記サイトを参考に、gettext_rails入れてみます。

Rails2.3.2でiso-2022-jpのメールを送りつつテストも通るようにしてみた
http://doruby.kbmj.com/tn_on_rails/20090420/Rails2_3_2_iso-2022-jp_


2.3では大丈夫というのはどこの情報だろう…。リリースノートみても特に記述はない気がします
Ruby on Rails 2.3 Release Notes
http://guides.rubyonrails.org/2_3_release_notes.html
08037992009/08/07(金) 04:24:05ID:???
何度もすいませんw

日本語化はi18n使いたいし、メールのためだけにgettext入れるのもなんだかなーと思ってて調べていたら、
ActionMailerJaというのを見つけました。2.3にも対応しているみたいです。試してみようと思います。

ActionMailerで日本語のメールを送る方法 - yuum3のお仕事日記
http://d.hatena.ne.jp/yuum3/20090624/1245833142

ActionMailerJa - imishin.com
http://blog.imishin.com/projects/ruby/actionmailerja/


とりあえず、ありがとうございました。
0804nobodyさん2009/08/07(金) 17:05:39ID:???
ちょっとお聞きします。

form_forの
  <%= f.error_messages :header_tag => :h3 %>
のようなこういったコードを共通化したいのですが、どうするのがスマートでしょうか?

ヘルパーに引数でfを渡すのも考えたのですが、できれば、既存の
  <%= f.error_messages %>
で自動的に
  <%= f.error_messages :header_tag => :h3 %>
相当を呼ぶようにしたいのですが、よいはっく方法はないでしょうか?
0805nobodyさん2009/08/07(金) 18:18:25ID:???
そのコントローラのヘルパで、form_forを再定義して
error_messagesを再定義するようなモジュールをmixinすればいいんじゃない?
08068042009/08/08(土) 10:15:54ID:???
>>805
ありがとうございます。
うまいこと、再定義する方法ってないものでしょうか?

下記のようにすると、stack too deep?とか言われてしまいます。

module ActionView::Helpers
  class FormBuilder
    # デフォルトオプション付きの f.error_messages
    alias :old_error_messages, :error_messages
    def error_messages(option = {})
      old_error_messages({:header_tag => :h3}.merge(option))
    end
  end
end


今はとりあえず、別名で定義してみてあります。(grep置換してしまえばいいと言えばいいのですが…)
module ActionView::Helpers
 class FormBuilder
  # デフォルトオプション付きの f.error_messages
  def my_error_messages(option = {})
   error_messages({:header_tag => :h3}.merge(option))
  end
 end
end
08078042009/08/08(土) 10:17:37ID:???
さあああ、form_forをヘルパーで定義して、
以前のform_forを直接読んでやればよいのか…。
ちょっとやってみます。
0808nobodyさん2009/08/08(土) 12:34:13ID:???
>>806
なんていうか、既存のクラスを弄ってしまうのはなんかイヤなので、
class HogeHelper
 
0809nobodyさん2009/08/08(土) 12:47:11ID:???
途中投稿orz……

class HogeHelper
 module HogeBuilder
  def error_messages options
   super {:header_tag => :h3}.merge{option}
  end
 def form_for record_or_name_or_array, *args, &proc
  super do |f|
   f.extend HogeBuilder
   yield f
(ry
というのを考えてたんだが。
0810nobodyさん2009/08/08(土) 12:52:10ID:???
それがRubyの醍醐味じゃないか
0811nobodyさん2009/08/08(土) 13:21:01ID:???
インスタンスにmixinとかいうのも
それはそれでRuby的だよね
0812nobodyさん2009/08/10(月) 15:53:57ID:???
DBが2台あって、通常は1台のほうにアクセスし、
障害があったときにもう1台に切り替えるってできるのですか?

DBa, DBbで、普段はDBaのみに更新、参照し、DBaに障害があったら
DBbに更新、参照みたいな。

JavaのときはJDBCの接続のときに以下のようにするとできたんだけど、
Railsでもやりたいのです。

jdbc:mysql://DBa,DBb:3306/testdb
Properties prop = new Properties();
prop.put("autoReconnect", "true");
prop.put("roundRobinLoadBalance", "false");
prop.put("failOverReadOnly", "false");
....
0813nobodyさん2009/08/10(月) 22:13:10ID:???
できる
0814nobodyさん2009/08/11(火) 01:25:21ID:VNj7FetZ
railsでするって表現はどうかと思う。
Railsで扱えるDB(Mysql, PostgreSQL, Oracle, ...)が
812のいう機能をサポートしていればできる。

んで、大体のDBでできる。
08158122009/08/11(火) 11:43:12ID:???
>>813 >>814
返答ありがとうございます。

MySQLでお互いをMaster&Slaveにして、デュアルマスタにしているのですが、
片方死んだ時に切り替えたく思っています。
スレ違いになりそうですが、813さんと814さんの言ってることは
バーチャルIPかなんか振っておけってことでしょうか(DBサーバに)?
0816nobodyさん2009/08/11(火) 15:52:45ID:???
初期の管理ユーザーとかテストユーザーの登録みたいなプロダクション用の初期DBみたいのってどうやっておこうなうもんなんでしょうか?

・migrationに書く
・script/以下にスクリプト置いて、script/runnerで実行させる

migrationに書く方法だと、migrate後にdevelopment DBに db:fixtures:loadとかして開発用に初期DB入れようとすると、
migrationで入れたDBデータがぶっ飛んでしまいませんか?
0817nobodyさん2009/08/12(水) 08:25:01ID:???
xxx_fu って名前のプラグインが多いんだが、fu ってなんぞ?
fxck you の略?
0818nobodyさん2009/08/12(水) 11:09:05ID:???
カンフーのfu。「なんか東洋のすごい技」みたいなイメージで使われてる。
GIMPのScript-fuあたりが嚆矢かな。
0819nobodyさん2009/08/12(水) 11:50:53ID:???
☆ へぇへぇへぇー
   〃Λ_Λ
   ( ・∀・)
  ┏┓⊂ ⊂_)
`/ ̄ ̄ ̄ ̄ ̄ ̄/|
| ̄ ̄ ̄ ̄ ̄ ̄| |
|| ̄ ̄ ̄ ̄ ̄|| |
|| ┃┃┃ || |
|| ┃┗┫ || |
|| ┃ ┃ || |
||_____||/
└──────┘
0820nobodyさん2009/08/12(水) 12:22:42ID:???
Jargon Fileにも載ってるね。
ttp://www.catb.org/~esr/jargon/html/F/suffix-fu.html
直接の用法は「熟練の技」みたいな感じだが、
プラギンに使ってるのはおそらくノリというか面白半分だろうな。
0821nobodyさん2009/08/12(水) 19:16:22ID:???
>>816
db:fixtures:load RAILS_ENV=production
でいいんじゃないかと思います。
初期ユーザーなどは開発用にも必要なものだと思いますので、
それぞれの環境ごとに、しかし同じ方法でやるのがいいと思います。
0822nobodyさん2009/08/15(土) 02:11:01ID:3etX9jN1
>>815
Master 192.168.1.1, 192.168.1.2
Slave 192.168.1.3
こんな風にIP振っておいてクライアントは192.168.1.1にアクセスする。
SlaveがMasterの死を検出したら、
Slave 192.168.1.1, 192.168.1.3
ってする。クライアントは依然192.168.1.1にアクセスする。
ってやってるよ。
0823nobodyさん2009/08/15(土) 04:41:01ID:???
db:fixtures:load ってモデルのバリデーションかからないんじゃないの?
0824nobodyさん2009/08/15(土) 21:07:23ID:Ioyu6DB3
〜.rxmlのtemplateを作成して、xmlを出力してみたところ、
中の2バイト文字が全て?〜;の形式にエスケープされて出力されてしまいました。
このエスケープ処理を切るにはどのようにしたら良いのでしょうか。
よろしくお願いします。
0825nobodyさん2009/08/16(日) 05:33:13ID:???
誤検出とか、検出出来ずにうまく切り替えられない事も多いけどね。
あとIPアドレス振り直しは、ARPが書き変わるまでは通信不能。
デフォルトゲートウェイ設定の絡みで、同一サブネットだと、複数IP振っても特定のIPしか使われなかったりするけどな。
理論では、うまく逝きそうな仕組みも現実はそう簡単ではない事も多い。
0826nobodyさん2009/08/16(日) 06:52:43ID:???
>デフォルトゲートウェイ設定の絡みで、同一サブネットだと、複数IP振っても特定のIPしか使われなかったりするけどな。

kwsk (w
0827nobodyさん2009/08/16(日) 11:37:26ID:???
>>824
http://docs.komagata.org/4000
0828nobodyさん2009/08/16(日) 12:59:03ID:U2+68uzW
>>827
ありがとうございます。助かりました。
08298152009/08/17(月) 11:15:00ID:???
>>822
ありがとうございます。
hearbeatで構築しようと思います。
スレ違いにも関わらず返答頂き、助かりました
0830nobodyさん2009/08/18(火) 14:36:53ID:xQbi8Iqy
Rails.public_pathをtestの時だけ変更したいんですが・・・。
config/environments/test.rbに
Rails.public_path = RAILS_ROOT + "/test/public"
を追加してテスト環境モードでサーバを起動して、
http://localhost:3000/foo
にアクセスしても、RAILS_ROOT + "/public/foo"のファイルが見えてしまいます。

何かいい解決方法はないでしょうか。
0831nobodyさん2009/08/18(火) 17:53:06ID:???
>>830
apacheとかウェブサーバー側で操作すんじゃないの?
08328302009/08/18(火) 18:19:34ID:xQbi8Iqy
railsって特に設定しなくても
RAILD_ROOT + "/public"
を公開用ディレクトリとして認識してくれます。
んで、どこに設定されているんだろうかと調べていたら
Rails.public_pathという設定に行き着きました。
それだったらRails.public_pathに何か設定する方法があるだろうと思っています。
サーバ側の設定なんでしょうか?
仮にサーバだとしてRailsはいつRAILS_ROOTをサーバに渡すんでしょう。
0833nobodyさん2009/08/18(火) 18:27:06ID:???
夜になったらrails仙人が来るから、それまで待っててね
0834nobodyさん2009/08/18(火) 19:38:30ID:???
>>830
mongrel 使ってるんだよね?
08358302009/08/18(火) 20:26:23ID:xQbi8Iqy
そうです。
0836nobodyさん2009/08/19(水) 00:27:33ID:???
使ったことはないがmongrelなら「--prefix」というオプションがある
これに指定すればいけるんじゃないだろうか
時間がなくて試せないので、動作報告をくれるとうれしい
08378302009/08/19(水) 02:50:08ID:/4UU0U8g
--prefixは知っていますがうまく動作しません

mongrelで--prefixを指定したときはブラウザがアクセスするときのURLが変化します。
例えば、--prefixなしの時
http://localhost:3000/order
等としてアクセスしますが、--prefix=/fooをつけると
http://localhost:3000/foo/order
という風になります。
私の期待しているfilesystem上のPATHを変化させる方法ではありません
08388162009/08/19(水) 12:32:09ID:???
レスありがとうさんです。

fixtureに書く方法だと、どうしてもテスト用のデータになっちゃうんで、
結局、新たにmigration1個作ってそこに書く方法でやっちゃた。
0839nobodyさん2009/08/19(水) 13:22:08ID:???
質問があります。

viewのedit.html.erbのform_for内で入れ子にしようと fileds_for を使ったところ、
Hoge expected, got HashWithIndifferentAccess とか言われてオブジェクトの更新ができません。

belongs_toで関連付けた Hoge.my_hage= に Hashがそのまま代入されているようなのですが、
どうしたらよいものでしょうか?

構成は以下のようになってます

model: hoge.rb

class Hoge < ActiveRecord::Base
 belongs_to :my_hage, :class_name => "Hage"

view: edit.html.erb # /nested/hage/1234/edit

<% form_for([:nested, @hage]) do |f| %>
 <%= f.error_messages %>

 (略)

 <% f.fields_for :my_hage, @hoge.my_hage do |hage_form| %>
  <p>
   <%= hage_form.label :name%><br />
   <%= hage_form.text_area :name %>
  </p>
 <% end %>
 <%= f.submit '更新' %>
<% end %>
08408392009/08/19(水) 13:22:50ID:???
>>839のつづき

controller: nested/hage_controller.rb

 def update
  @hage = Hage.find(params[:id])

  respond_to do |format|
   if @hage.update_attributes(params[:question])
    flash[:notice] = 'Nested::Hage was successfully updated.'
    format.html { redirect_to(@hage) }
    format.xml { head :ok }
   else
    format.html { render :action => "edit" }
    format.xml { render :xml => @hage.errors, :status => :unprocessable_entity }
   end
  end
 end
08418392009/08/19(水) 14:31:14ID:???
>>839-840ですが、accepts_nested_attributes_for を使うことで解決いたしました。

class Hoge < ActiveRecord::Base
 belongs_to :my_hage, :class_name => "Hage"
 accepts_nested_attributes_for :my_hage

でOKでした。

以下が参考になりました。
Localization expected, got HashWithIndifferentAccess - Ruby Forum
http://www.ruby-forum.com/topic/184877


ありがとうございました。おさわがせしました。
0842nobodyさん2009/08/19(水) 15:02:29ID:???
>>837
うわ、すまんかった。
このオプションでいけるんじゃないだろうか。

--root PATH
Set the document root (default 'public')
0843nobodyさん2009/08/20(木) 20:29:11ID:OSASGkcC
>>120
遅レスですが、同じくWindows環境のattachment_fuで添付ファイルが壊れる現象起こりました。

で、対応としては>>126さんのアドバイスを参考にして
vendor\plugins\attachment_fu\lib\technoweenie\attachment_fu.rbの370行目辺り
File.read(temp_path)をFile.open(temp_path, "rb"){|f| f.read}に変更しました。

あと、メタデータのsizeが設定されたり、されなかったりという現象も起こったので
http://nonki.yoka-yoka.jp/d2009-07-09.htmlを参考にRuby\lib\ruby\1.8\tempfile.rbにも手を入れました。

以上で添付ファイルのDBへの格納、表示ともにうまくいっています。
0844nobodyさん2009/08/20(木) 22:42:43ID:???
マゾですかっwww
08458302009/08/23(日) 04:36:10ID:vSt0R6A2
>>842さんご紹介の--rootでうまくいきました。
mongrel_rails start -r test/public
でtest以下のpublicを読んでくれました。
0846nobodyさん2009/08/23(日) 09:17:36ID:???
Rails3っていつリリースされるって情報は出てないんですか?
0847nobodyさん2009/08/23(日) 15:34:00ID:???
先日のルビー会議でrails3をリリースするという情報はあったがそれ以降何も聞かんな
0848nobodyさん2009/08/27(木) 18:15:48ID:???
お聞きいたします。

他のモデルとコントローラー両方から参照したいあるモデル(User,UserSession)があります。

セッション情報やユーザー情報が何度も参照されるため、
下記のように簡易的にクラス変数でキャッシュみたいなことをしたのですが、
デプロイするproductionモードとローカルのdevelopmentでは全然違う挙動をします。
というか、productionモードではわけがわからない動作をします。

 def self.current_user
  return @@current_user if defined?(@@current_user)
  current_user_session = UserSession.current_user_session
  @@current_user = current_user_session && current_user_session.user
 end

productionモードでは、クラス変数が初期化されたりしない?ということまではわかった(つまり、クラス変数が使いまわされる)
のですが、代替の方法がよくわかりません。
どのように対処したものでしょうか?

Rails 2.3.2です。
0849nobodyさん2009/08/27(木) 18:21:54ID:???
Railsは頼むから前方互換性を高めてくれよん

PHPみたいなことはや(ry
0850nobodyさん2009/08/27(木) 18:24:52ID:???
Railsと比べればPHPのほうが遥かに互換性高いけど
0851nobodyさん2009/08/27(木) 20:24:29ID:???
yes
0852nobodyさん2009/08/27(木) 22:55:33ID:???
>>849
無駄に内部を弄るから互換性で苦しむはめになるんだよ
0853nobodyさん2009/08/28(金) 06:03:30ID:???
フレームワークと言語仕様を比べることに何の違和感も持ってないのか
0854nobodyさん2009/08/28(金) 06:51:07ID:???
>>853
同意。
PHPは言語で、Railsはフレームワーク。
比べるなら、PHPとRubyを比較するべきだよな。
まぁ、>>>849はそれすら分かっていないのかもしれないが。
0855nobodyさん2009/08/28(金) 10:44:15ID:???
849はPHPも知らない
知っているのは伝聞のFUD
0856nobodyさん2009/08/28(金) 11:31:52ID:???
PHPは互換性を維持するために全身速度が遅く、色々縛られているが、
rubyはぶっちゃけ、過去のことなど放り投げちまう開発姿勢だから名、

互換性で比べたらphpに軍配上がっちまう罠、
比較対象として持ち出した奴が バ・カ
0857nobodyさん2009/08/28(金) 15:27:38ID:???
yakinikunoはや(ry
0858nobodyさん2009/08/29(土) 14:58:31ID:???
kawazakananoハヤ
0859nobodyさん2009/08/29(土) 15:02:17ID:???
PHPで10行以上のコード書きたくない><
PHPで2ファイル以上のコード読みたくない><
0860nobodyさん2009/08/29(土) 15:12:31ID:???
PHPスレかと思ってしまったではないか
0861nobodyさん2009/09/02(水) 16:56:18ID:???
互換性は別にいいが機能低下は避けていただきたい
0862nobodyさん2009/09/03(木) 08:08:48ID:801E0K0+
こんにちは。

他のスレッドで質問したのですが、スレッド違いということで、
再度、ここに書かせて頂きます。

前の開発者がRuby Railsでサイトを構築しました。

今回、私が、別の機能を付け足すことになりましたが、
私はRuby Railsを知りませんので、/manage/フォルダ以下に、
PHPで開発することになりました。
/manage/以下に、.htaccessを設定したのですが、動かず、404ページが返ってきます。

自分なりに色々調べた結果、Passenger/mod_railsを使っているため、
/manage/の.htaccessが、それによって上書きされているようです。


RailsAllowModRewrite On
を使えば、なおるようなことを言われたのですが、
/manage/.htaccessでそのように設定しても、/manage/.htaccessに設定してあることが
有効になりません。

どなたか知っていたら教えて頂けないでしょうか。
よろしくお願いします。
0863nobodyさん2009/09/03(木) 08:48:46ID:???
ぜんぜん具体的じゃないからさっぱりわからん。
0864nobodyさん2009/09/03(木) 09:10:30ID:???
ドキュメントルートがpublic_htmlではないということはないだろうか。
普通Railsのアプリ一式が入っているディレクトリをRAILS_ROOTとすると、
ドキュメントルートはRAILS_ROOT/publicにするのだが。
Passengerを使ってるのなら、ApacheのDocumentRootディレクティブを調べてみてほしい。
0865nobodyさん2009/09/03(木) 11:28:15ID:???
http://www.modrails.com/documentation/Users%20guide%202.0.html

5.8.3. RailsAllowModRewrite <on|off>
<略>
This option may occur once, in the global server configuration or in a virtual host configuration block.
<略>

ってことで、apache設定の最上位か、<VirtualHost></VirtualHost>の中に
しか書けない。

0866nobodyさん2009/09/03(木) 11:52:21ID:???
http://pc12.2ch.net/test/read.cgi/tech/1249687283/488-
0867nobodyさん2009/09/03(木) 14:10:11ID:???
下記のような問題なのですが、みなさんどうしてらっしゃいますでしょうか?
[Rails] ちょっとしたタイプをどこに置くか - capsctrldays(2006-05-30)
http://capsctrl.que.jp/kdmsnr/diary/20060530.html#p01

お聞かせ願いたいです。

具体的には、上記サイトにもあるのですが、
 1:男性
 2:女性

 1:承認待ち
 2:活動中
 3:削除

のような定数とActiveRecordを使う上での兼ね合いといいますか。

・配列(Hashとかにしちゃう)
・テーブルにしちゃう

どちらがオススメでしょうか?
0868nobodyさん2009/09/03(木) 14:16:09ID:???
table
08698622009/09/03(木) 14:21:23ID:4G6aJPkU
ご返信ありがとうございます。
>>864
そうです。
分かりやすく言うために、public_htmlといいましたが、
実際は、RAILS_ROOT/publicになってます。
で、今回、RAILS_ROOT/public/manage/フォルダにPHPで開発することになり、
(私はPHP言語しか知りません)
RAILS_ROOT/public/manage/.htaccessを作成したのですが、
.htaccessが作動しないのです。
私がRuby Railsの知識が全くないので、どのような設定になっているか分からない状況です。

>>865
httpd.confの中では、<virtual></virtual>はコメントアウトになっています。
ただ、Include /etc/httpd/conf/lxadmin/lxadmin.confとかいてあり、
lxadmin.confの中には、いくつかのconfファイルがincludeしてあります。
そのうちの一つのdefault.confには、下記の<virtual>タグが記載されています。
<VirtualHost \IP address:80\>
DocumentRoot /home/lxadmin/httpd/default/
servername default
ServerAlias default.*
<Ifmodule mod_userdir.c>
Userdir "public_html"
</Ifmodule>
</VirtualHost>
この中にRailsAllowModRewrite <on|off> を記入すれば宜しいのでしょうか。

無知な者でご迷惑おかけします。
もし対処法をご存知な方がいらっしゃいましたら、お知らせください。


よろしくお願いします。
0870nobodyさん2009/09/03(木) 14:43:27ID:???
>>869
> 分かりやすく言うために、public_htmlといいましたが、
> 実際は、RAILS_ROOT/publicになってます。

間違った情報がわかりやすいわけないだろ。
逆の立場だったらわかりやすいと思うか?
おまえの中では勝手に同じものと処理してるかもしれんが、
他人がそんなことわかるわけないだろ。
質問するならちょっとは考えろ。無知とか関係ない。

> Passengerを使ってるのなら、ApacheのDocumentRootディレクティブを調べてみてほしい。

DocumentRoot /home/lxadmin/httpd/default/

こうなってるわけだが、ちゃんとレスを見たか?
RAILS_ROOT/publicはドキュメントルートとして機能してないと思うが。

「実際は、RAILS_ROOT/publicになってます。」
↑
これまでわかりやすく書いたのなら、
掲示板じゃわからんから周りの友達にでも聞け。
08718672009/09/03(木) 15:05:15ID:???
>>868
おー、tableですか。


DB使わないスクリプトなんかだと、Hashなんかでやってしまい、その延長でついHashにしてしまいそうになるのですが、
テーブル使う利点ってなんなんでしょうか?
ActiveRecordを使えるから、ってことでいいんでしょうか?
あと、viewでcollection_selectがそのまま使える、とか。
08728622009/09/03(木) 16:46:48ID:Gs6kTm0I
>>870

ご回答ありがとうございます。
DocumentRootがどこなのか、分かりませんでした。
/home/lxadmin/httpd/default/ の下に、
/home/lxadmin/httpd/default/manage/とやれば良いということでしょうか。
/home/lxadmin/httpd/default/phpinfo.php
を作成し、mydomain.com/phpinfo.phpとアクセスしたのですが、
404が返ってきました。

Ruby Railsの為、私の知っている通常のサーバーの設定でない為、よく分かりません。
私、海外の田舎でプログラマをやっている為、あまりこの分野の友達がいません。
もし、ご存知の方がいらっしゃいましたら、教えて頂けないでしょうか。
お手数かけて申し訳ございません。

よろしくお願いします。
08738622009/09/03(木) 17:04:03ID:Yl0KYuqm
付け足しですが、
実際、色々動いてるファイルは、
/home/admin/vhosts/mydomain.com/public/
配下に設置してあります。

お手数かけましてすみません。
よろしくお願い致します。
0874nobodyさん2009/09/03(木) 20:34:55ID:???
>>872
マルチうぜぇ
ttp://pc12.2ch.net/test/read.cgi/tech/1249687283/488-491
ttp://pc12.2ch.net/test/read.cgi/tech/1249687283/554-555

htaccessかPHPのスレに行け。
0875nobodyさん2009/09/03(木) 22:53:48ID:???
>>867
データの多さに関係なく ActiveRecord で管理するのが一番融通が利くし楽でしょ。
だけど初心者の人はたいてい配列にしてマジックナンバーを撒き散らすよ
酷いのになると配列(の定数)すらない場合も。
0876nobodyさん2009/09/04(金) 00:55:17ID:???
>>872
sine
0877nobodyさん2009/09/04(金) 08:19:25ID:???
>875
でもActiveRecordになるとreadだけじゃなくてwriteもできるんだぜ。
定数ということを表現できてないじゃないか。
0878nobodyさん2009/09/04(金) 12:52:12ID:???
has_one :genderとかするんだ?


なんか良い感じのプラグインあればよさそうだけど。

これとかは?
http://d.hatena.ne.jp/fujisan3776/20080907/1221480262
0879nobodyさん2009/09/04(金) 13:20:14ID:???
>>877
定数を表現する必要がどこにある
0880nobodyさん2009/09/04(金) 16:27:16ID:???
>>862
Rails勉強しようって気はないのか?
なければスレ違い
08818672009/09/04(金) 16:59:50ID:???
>>875-879
サンクス
ActiveRecordで管理した方が利点あるように感じました。テーブルでいってみます。

>>878
こんなプラグインあるんですね。ふーむ、用途的に違うようなきがしないでもない??
0882nobodyさん2009/09/04(金) 17:06:45ID:???
ちょっとした質問よろしいでしょうか?

button_toヘルパーにてGETでパラメーターつきで、RESTのnew actionのボタン型のリンクを作ろうとしたのですが、
うまく行きません。

button_to(new_item_path(:hage_id => 1234), {:method => :get})

とすると、HTML上では、action="/item/new?hage_id=1234"となっているのですが、
<form>のせいか、実際にボタンを踏むと、/item/new? に飛ばされてしまい、
パラメータがなくなってしまいます(´・ω・`)

たぶんに、
<input type="hidden" name="hage_id" value="1234" />
みたいのを仕込まないといけない、というのはわかるのですが、ソース見る限りbutton_toではできないですよね。

一発ポンでできるヘルパーみたいなのってないもんでしょうか…?
0883nobodyさん2009/09/04(金) 17:47:59ID:???
Item belongs to Hage ということなら、config/routes.rb が
ちゃんと書かれてれば
new_hage_item_path(:hage_id => 1234, {:method => :get })
で
/hage/1234/item/new
になる気がしないでもない。
# 複数形にするんだっけ……?
0884nobodyさん2009/09/04(金) 18:05:22ID:???
GETならリンクにすればいいと思うのだがまずいのか?
0885nobodyさん2009/09/04(金) 22:23:08ID:???
>>880
というかRailsやPHPとかの環境の選択ってプロジェクトと一蓮托生じゃないの?
混在とか今時当たり前なの?気色悪いとか思わんのかな。

0886nobodyさん2009/09/04(金) 22:53:13ID:???
気色悪い

けど残念なことに過去の資産を利用するためにRubyからPerl/PHPを呼ぶこともしばしば
0887nobodyさん2009/09/04(金) 22:55:06ID:???
>>881
ARで管理する場合はpositionカラムも一緒に入れてacts_as_listしておくとさらに後が楽。
完全に自分用のアプリで、順番は id や created_at 順でじゅうぶんっていうことならいらないけど。
0888nobodyさん2009/09/04(金) 23:51:53ID:???
定数をActiveRecordで管理すると、使用するときはどうなるのよ?
Gender.findById("1").name //チンコ
Gender.findById("0").name //マンコ

やだよ。そんなのw
0889nobodyさん2009/09/05(土) 00:23:06ID:???
君はRubyとかRailsではなくてシステムの作り方を勉強しなさい
0890nobodyさん2009/09/05(土) 00:26:27ID:???
答えられない質問を受けたとき、そうやって相手の人格を
非難するような人っているよね。
0891nobodyさん2009/09/05(土) 00:30:55ID:???
お前が考える「人格」ってなんだ?
0892nobodyさん2009/09/05(土) 00:39:38ID:???
人格はちょっと言い間違ったかも。
言いたかったことは、相手の論点について反論するのではなく、
その人の性格、能力、過去などについての批判を加えるのは卑怯では
ないかということ。(そういうのってよくあるでしょ)
0893nobodyさん2009/09/05(土) 00:44:28ID:???
でっていう
0894nobodyさん2009/09/05(土) 00:45:13ID:???
>>892
ahodesune
0895nobodyさん2009/09/05(土) 00:45:28ID:???
お前が考える「ちょっと」ってなんだ?
0896nobodyさん2009/09/05(土) 00:48:54ID:???
>>888 = >>890 = >>892 ?

>>888 みたいにRailsの人格を非難するような人っているよね。
0897nobodyさん2009/09/05(土) 01:01:21ID:???
>>892
まともな開発者ならこの手のマスターデータを定数などにしない。
マスターデータの種類が増えたり変更が入るたびにプログラムの変更が入るから。
「男」や「女」なら増えないと思うかもしれないが、
この絶対に変わらないように思えるデータも「男性」「女性」にしたいなんてことが起こりうる。
「承認待ち」だの「活動中」あたりは言うまでもない。

この手の失敗はDBがここまで使われる前まではよくあって、
それこそ「男」を「男性」に変更するだけで、プログラム修正&追加料金なんてのはザラだった。
さすがに最近はあまりないと思うが。
だからこれはレスどおり「システムの作り方」を勉強すべきなんだよ。
そもそもActiveRecordパターンの目的から完全に外れてるしな。
>>888は「定数」という言葉を間違って使ってるんじゃないかとも思うが。

ちなみに>>893-896はおれではない
0898nobodyさん2009/09/05(土) 02:06:10ID:???
つまり?
0899nobodyさん2009/09/05(土) 04:20:22ID:???
もまえら、UNICODEがらみのRailsのXSS脆弱性きてるからupdateしろよ〜

Brian Mastenbrook: How I cross-site scripted Twitter in 15 minutes, and why you shouldn't store important data on 37signals' applications
http://brian.mastenbrook.net/display/36

XSS Vulnerability in Ruby on Rails - Ruby on Rails: Security | Google グループ
http://groups.google.com/group/rubyonrails-security/msg/7f57cd7794e1d1b4?pli=1
0900nobodyさん2009/09/05(土) 08:56:22ID:???
ぬお
パッチってどうやって当てるんだっけ?
0901nobodyさん2009/09/05(土) 09:19:19ID:???
railsの更新は怖い。
0902nobodyさん2009/09/05(土) 13:33:12ID:AlMjWjcW
>>900
パッチを見て-の箇所はすべて消す。+の箇所は貼り付ける。
人間が手でやるのが一番確実だからきちんと手作業でやろう。
0903nobodyさん2009/09/05(土) 20:37:01ID:???
>>902
あほか。
patch -p1
0904nobodyさん2009/09/05(土) 22:13:08ID:???
人間の手でやるのが一番確実って考えがすごいな
0905nobodyさん2009/09/05(土) 23:01:18ID:WL9xF+Eh
railsアプリの開発の為に、新しいPCを買ったんだけどさ、
(新PCも旧PCも Windows 機)
何でもいいやって感じで適当にrubyインストールして、gemでraisインストールして…、
って感じで環境整えて、いざ開発中のアプリを動作させてみたら全く動作が遅いの。


Completed in 59313ms (View: 40359, DB: 18719) | 200 OK [http://localhost/...]
みたいな法外な速度でさ。

いろんな可能性を考えて、実行環境のバージョン変えたり、ベンチマーク取ったり、
OSを再インストールしたり…、とか3日ぐらい試行錯誤してたんだが、全く改善なし。

んで、ハードウェアに手をつける前に、ふと思いついて、"one-click ruby installer"でrubyを
インストールし直したら、一発で直ったよ…。
新PCで環境作るときに使ってたのは"ActiveScriptRuby"

理由はさっぱり分からないんだが、そういうことって有り得る?
0906nobodyさん2009/09/05(土) 23:32:06ID:???
、と思ったらこんな記事があるな…。

http://74.125.153.132/search?q=cache:TX_nOz2k9hkJ:d.hatena.ne.jp/kusakari/+activescriptruby+%E9%80%9F%E5%BA%A6&cd=2&hl=ja&ct=clnk

ActiveScriptRuby すべてに問題があるわけじゃなさそうだな。失礼。
0907nobodyさん2009/09/06(日) 06:53:37ID:???
>>906
p72 は脆弱性の含まれる旧バージョンですので、実運用には利用しないようにしましょう。

arton さんが別途 p72 を置いてくれています。ActiveRuby-1.8.7-p72.msi
0908nobodyさん2009/09/06(日) 10:54:10ID:???
>> 897
横からすまん。

後から変更される可能性の高いデータならテーブルで
管理するというのは分かるんだが、性別などその可能性
の低いものはモデルに定数として定義してしまってるな。
深い考えがあるわけではなく、感覚的に。

請負とかじゃなくて、自前で開発と運用してるので
プログラムに手をいれるのは比較的容易というのもある。

性別をテーブル(モデル?)にした場合、たとえば
女性のユーザーを検索するときはどんなふうに記述するの?

定数にした場合はこんな感じだよね:
  User.find_by_sex(User.FEMALE)
0909nobodyさん2009/09/06(日) 13:06:46ID:???
性別も、「男」「女」と規定してたら、後で「不明」が必要になった
ことがあったよ。事業譲渡を受けたサービス元が、会員の性別を管理
していなかった。でも、男が0で女が1と定数にしてたから、不明を
2なんて定義するのは影響が大きすぎるので、性別は0なんだけど、
会員IDがこのプリフィックスで始まるときは不明とみなす、っていう
処理を必要なところに入れる、汚らしい解決法を取った。
0910nobodyさん2009/09/06(日) 13:28:59ID:???
ISO の性別使えばいいのに
0911nobodyさん2009/09/06(日) 13:36:19ID:???
不明は未登録だろ。nullでいいじゃんか
0912nobodyさん2009/09/06(日) 13:55:42ID:2yjCPfLR
で、お客さんに会員IDで差別されてるっていわれるんですね。
0913nobodyさん2009/09/06(日) 14:23:30ID:???
>>905-907
本当だ。なんだこれ?

mswin32版のRuby 1.8.7-p160が遅すぎる件 - 那由多屋 開発日誌
http://d.hatena.ne.jp/nayutaya/20090601/1243848756

L'eclat des jours(2009-04-22)
http://www.artonx.org/diary/20090422.html

(コメ欄)
0914nobodyさん2009/09/06(日) 14:29:31ID:???
でかそうなシステムをつくってる人
も結構いるのかな?

RoRのイメージって1,2人で1ヶ月開発ぐらいで
運用開始して、その後継続的にちょこちょこい
じっていくようなスタイルを想像してる。
0915nobodyさん2009/09/06(日) 14:35:46ID:???
2.3.4にはアップデートしたんだけど、2.2.3がないね。
これはまってれば2.2.3がリリースされるの?

皆さんはどうしてんの?
gemでインストールしてるんで直接パッチしたくないんだけど
いい方法ありますか?
アプリが複数ある場合はfreezeするときついし。
0916nobodyさん2009/09/06(日) 17:16:02ID:???
viewで参照したい定数ってどこに置いたらよいの?

application_helperに置いて参照しようとしても、
 uninitialized constant ActionView::Base::CompiledTemplates::DEFAULT_TEXT_AREA_WIDTH
みたいに言われるお…
0917nobodyさん2009/09/06(日) 17:34:23ID:2yjCPfLR
ApplicationHelper::DEFAULT_TEXT_AREA_WIDTHだろ常識的に考えて。
ったくっ!
0918nobodyさん2009/09/07(月) 07:26:47ID:???
railsやるならmac買えば良かったのに
0919nobodyさん2009/09/07(月) 09:33:12ID:???
TextMateでスクリーンキャストするためのMacですねわかります
0920nobodyさん2009/09/07(月) 10:40:05ID:???
>>917
おなじエラーでる(´・ω・`)
0921nobodyさん2009/09/07(月) 14:22:34ID:???
どうやばいか日本語で言わないとアップデートしない日本人が多いはずだ。

XSS Vulnerability in Ruby on Rails
==================================

There is a vulnerability in the escaping code for the form helpers in
Ruby on Rails. Attackers who can inject deliberately malformed unicode
strings into the form helpers can defeat the escaping checks and inject
arbitrary HTML.


0922nobodyさん2009/09/07(月) 17:52:13ID:???
お前らがRailsで作ったサイトにアクセスしたユーザが騙されたり
お前らがRailsで作ったサイトにアクセスしたユーザから情報が盗まれたり
するってことだ
0923nobodyさん2009/09/08(火) 02:30:57ID:hdImoFaT
Rails2.3.4にしたらviewがクソ遅くなった!どうなってんだ??
0924nobodyさん2009/09/08(火) 07:07:52ID:???
http://weblog.rubyonrails.org/2009/9/4/xss-vulnerability-in-ruby-on-rails
http://weblog.rubyonrails.org/2009/9/4/timing-weakness-in-ruby-on-rails

このパッチって git-am 形式ってものみたいだけど、これって Rails 本体を Git から落としてきてパッチ当てて、そのパッチ適用済み Rails と今動かしてるものを差し替え、みたいな事やらなきゃならないの??
誰か簡単な適用手順教えてくれ・・・。
0925nobodyさん2009/09/08(火) 07:21:15ID:???
>>924
リポジトリなしでも、git amコマンドで直接当てられないかな?わからんけど
gitスレで聞いた方がいいかも
0926nobodyさん2009/09/08(火) 07:31:28ID:???
>>924
最初のURLのコメ欄にあるが、普通にpatchコマンドでいけそうだが
0927nobodyさん2009/09/08(火) 08:27:39ID:???
git am形式である以前に単なるunified diff。
0928nobodyさん2009/09/08(火) 08:44:05ID:???
>>927
先頭付近のメール?ヘッダ部分削除してpacheコマンド、って感じでおk?
0929nobodyさん2009/09/08(火) 08:52:15ID:???
http://weblog.rubyonrails.org/2009/9/4/xss-vulnerability-in-ruby-on-rails

ここのコメント欄良く読んでみたら

$ cd vendor/rails $ git apply <name-of-patch>

とか

cd vendor/rails patch -p1 < 2-2-CVE-2009-3009.patch

ってのが載ってるね。
試してみよ。
0930nobodyさん2009/09/08(火) 10:02:33ID:???
>>928
patchは、^diffだったか^Indexだったかに遭遇するまでの行は無視する。
0931nobodyさん2009/09/08(火) 10:30:13ID:???
今回のパッチで UTF-8 や SJIS の文字チェックしているから、
表示する文字が多いと線形に遅くなりそう。
0932nobodyさん2009/09/08(火) 10:40:57ID:???
viewの中から public ディレクトリにある howto.html へのリンクを作成したいときは
どうすればいいのでしょうか。
link_to('ハウトゥス', '/howto.html')
http://myserver.examle.com/myapl/ のようにサブディレクトリ付きで
動作しているときの /myapl/ が付かないのです。
image_tag のように、この /myapl/ を付けるにはどうしたらいいんでしょうか。
0933nobodyさん2009/09/08(火) 10:57:15ID:???
>>932
たぶん先頭のスラッシュが駄目なんじゃね?
link_to('ハウトゥス', 'howto.html')
0934nobodyさん2009/09/08(火) 11:05:39ID:???
>>933
そのとおりでした。ありがトゥス。
0935nobodyさん2009/09/08(火) 16:58:34ID:???
Rails 2.3.2から2.3.4に上げようとしているんだけどうまく行かないっす…。

$ suso gem update railsして、
$ rails -v
2.3.4

の状態で、
$ cd my_project
$ rake rails:update
$ grep RAILS_GEM_VERSION config/environment.rb
RAILS_GEM_VERSION = '2.3.2' unless defined? RAILS_GEM_VERSION

となっており、ruby script/serverでも2.3.2が立ち上がってしまいます…
どのようにしたものでしょうか?

環境 Ubunut 9.04(coLinux) Rails 2.3.2→2.3.4 Ruby 1.8.7
0936nobodyさん2009/09/08(火) 17:24:08ID:???
Rails3 + Ruby1.9 速くなりすぎw
09379352009/09/08(火) 17:39:37ID:???
RAILS_GEM_VERSIONを修正しないといけないのね・・・

config/environment.rbを
RAILS_GEM_VERSION = '2.3.4' unless defined? RAILS_GEM_VERSION
にして、
$ rake rails:update
したら、無事アップデートできました。
お騒がせいたしました。ありあgとごうざいmした。
0938nobodyさん2009/09/08(火) 18:14:15ID:???
どこで聞けばいいのかな。
Railsの開発で使用しているcoLinuxのcofsって、lockできない仕様?

ruby script/plugin install git://github.com/rails/acts_as_list.git

みたいなのが失敗する。以下、エラー
error: could not lock config file ~my_project/trunk/vendor/plugins/acts_as_list/.git/config
error: could not lock config file ~my_project/trunk/vendor/plugins/acts_as_list/.git/config
error: could not lock config file ~my_project/trunk/vendor/plugins/acts_as_list/.git/config
Initialized empty Git repository in ~my_project/trunk/vendor/plugins/acts_as_list/.git/
fatal: Not a git repository

Windows側でcygwinから使うと問題ないからまあいいんだけど。
0939nobodyさん2009/09/08(火) 23:11:21ID:???
>>938
coLinuxスレで聞け
0940nobodyさん2009/09/09(水) 04:19:37ID:???
rails3っていつごろ出るんですかね?
最近railsの話題追ってなくて…
開発は順調なのでしょうか
09419382009/09/09(水) 07:38:24ID:???
>>939
スレタイ検索したらcoLinuxスレあった・・・いってきまつ
0942nobodyさん2009/09/09(水) 13:37:24ID:???
帳票印刷の仕事がありそうだから、JasperReport + JRubyOnRails がどんなもんか
調べてみた。

普通に動いてビックリ。
さて、JRubyとdRubyとの相性はどんなもんかのう...
0943nobodyさん2009/09/09(水) 13:48:31ID:???
>>942
rubyな帳票印刷ライブラリってのはないから
Javaなライブラリ使うためのJRubyonRailってこと?
0944nobodyさん2009/09/09(水) 15:05:38ID:???
>>943
Yes.
Rubyでなんかいいのある?

dRuby次第ではJVMのバックグランドプロセスににdRuby経由でPDF生成タスクを
投げて、アプリ自体はCRubyなRailsでいいかもとか夢想してるけど...
0945nobodyさん2009/09/09(水) 20:29:44ID:d2cRtkfX
>>944
「Ruby Printing Service」なんてのもある
0946nobodyさん2009/09/09(水) 22:01:28ID:???
>>942、944
似たようなことをやったけど、普通に使えます。

JRrubyからPOIを使ってExcelのワークブックを作る処理をdRubyのメソッドにして、CRubyのRailsから呼び出してます。
各セルの中身や装飾なんかは、配列やハッシュに数値や文字列を納めて、パラメータとして渡して、出来上がった
ワークブックのバイナリイメージを戻り値にして、クライアントにダウンロードさせています。

拡張ライブラリのオブジェクトは試してみてないですが、基本的なオブジェクトは普通にやりとりできてますよ。
0947nobodyさん2009/09/09(水) 22:41:01ID:???
drubyの互換性はいいかんじなのか。


YAMLが微妙でてをひいたよ
0948nobodyさん2009/09/09(水) 23:07:44ID:???
日本語でいいんだぜ?
0949nobodyさん2009/09/10(木) 14:40:06ID:ciwTQ8pm
shoulda を入れたところ(environments.rb で config.gem しただけ)
既存のテスト結果に続けて

Loaded suite /usr/bin/rake
Started

Finished in 0.000451 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

と出るようになったのですが、これは何をしようとしてるんでしょうか?
0950nobodyさん2009/09/10(木) 17:17:08ID:???
>>949
テストを実行して 0.000451秒以内に終了して、テストもアサートも失敗もエラーも1個もなかったよっていってるみたい
0951nobodyさん2009/09/10(木) 17:21:21ID:???
>>950
何のテスト?
0952nobodyさん2009/09/10(木) 17:35:35ID:???
質問よろしいでしょうか?

RailsのDraggableでtableのtrってドラッグアンドドロップできないもんでしょうか?

これとか、
#3955 (drag and drop <tr> in <table>) - Rails Trac - Trac
http://dev.rubyonrails.org/ticket/3955

[Rails-spinoffs] scriptaculous: Draggable and table rows
http://lists.rubyonrails.org/pipermail/rails-spinoffs/2005-August/000567.html

結局だめで、
<div>つかえとか、<li>にしろとか、あります。

何か代替する方法ってないもんでしょうかね?
tableみたいな表レイアウトをdivでできるのかな…
0953nobodyさん2009/09/11(金) 09:14:24ID:???
>>945,946
ありがとう、試してみる。
0954nobodyさん2009/09/12(土) 00:07:14ID:???
>952

出来ない。というかキレイな方法はない。

jQuery つかえ。
0955nobodyさん2009/09/12(土) 00:13:30ID:???
そういやprototype.jsよりjquery使ってる人が多いのは何故だろう。
Railsのサブセットにprototype.jsがあるんだからこっち使ったほうが良さそうなのに。
0956nobodyさん2009/09/12(土) 00:18:34ID:???
今はJQueryの方が主流なんだぜ
0957nobodyさん2009/09/12(土) 00:29:09ID:???
新しいから使いたがる奴は多いけど主流は言いすぎだろ
0958nobodyさん2009/09/12(土) 03:29:52ID:???
使いやすいからじゃねーの?
数行で書けるそうだよ、使ったこと無いけど。
0959nobodyさん2009/09/12(土) 07:16:40ID:???
今や勢いは完全にjQueryな気配だよね
プラグイン含めてライブラリの数が違いすぎる
0960nobodyさん2009/09/12(土) 08:32:20ID:???
RoRでExtJS使える?
0961nobodyさん2009/09/12(土) 09:02:14ID:???
使える
0962nobodyさん2009/09/12(土) 09:48:52ID:???
使ってる。
0963nobodyさん2009/09/12(土) 14:19:17ID:???
既にある既存システムのユーザマスターを使ってログインさせたい場合、どうしたらいい?
社内システムを拡張しようとした場合、ユーザーマスタは新規で作れないのよね…。
使おうと考えているプラグインはrestful-authentication。

今思いついた解決策は、restful-authenticationに適合するような形の
ユーザマスタへのView(DB上のほう)を作ること。

ただしrestful〜って、パスワードを暗号化してある前提で組まれてるんだよね。
現行のユーザマスタはたぶん暗号化されてないので、どうしようかまよってる。
どうしようかねぇ〜。
0964nobodyさん2009/09/12(土) 14:31:39ID:???
それだけの情報じゃアドバイスしようが無いわ
0965nobodyさん2009/09/12(土) 14:35:54ID:???
>>964
ありがとう。要件固めてからまたくる。
|会社| λ.....
0966nobodyさん2009/09/12(土) 14:44:59ID:???
既存のユーザマスタのパスワードを元に暗号化してパスワードだけ入れなおすことすら出来ないの?
0967nobodyさん2009/09/12(土) 15:26:44ID:???
内部でHTTPでも何でも使って、既存システムに代理で認証処理を
行うってことになるんじゃないの?
0968nobodyさん2009/09/12(土) 18:43:39ID:???
既にある既存システム
0969nobodyさん2009/09/12(土) 19:46:39ID:???
結論からいうと、restful-authenticationが吐き出すuserモデルの
authenticated?メソッドを書き換えればいける…。
(ちなみにユーザマスタはoracle、他はmysqlなんて構造でもいけた。)

>>963で言いたかったこと↓
システムごとにユーザマスタを個別に持ちたくない。
社内システムはphpのもあるしstrutsのもあるしvb.netのもある。

んで、それらのシステムは同じユーザマスタを利用してる。
ユーザマスタに1ユーザ追加すれば、php(のシステム)でもstrutsでもvb.netでも
そのユーザが使える。(ログインに関するロジックは各システムで個別に持ってる。)

で、新規に追加するrailsのシステムもそのユーザマスタを使いたいと…。
restful-authenticationで認証関係を組むと楽なんだけど、社内共通のユーザマスタの構造と
restful-authenticationが想定してるユーザマスタの構造が違うからどうしよっかなぁと。

>>966
それをすると今動いてるシステムの改修が発生して、一番工数が多くなる。
0970nobodyさん2009/09/12(土) 19:56:48ID:???
Authlogic とつぶやいてみる。
0971nobodyさん2009/09/12(土) 20:03:48ID:???
そこまでごちゃごちゃになってるんだったらプラグインなんて使わないで自前で実装した方がいいのでは?
0972nobodyさん2009/09/12(土) 23:02:56ID:???
いろいろ調べたんだが、authlogicがいいのかと思った。
0973nobodyさん2009/09/13(日) 03:49:05ID:???
そろそろ産め。

パスワードが無ければ、既存システムから拾って来て暗号化して格納して、そっちを参照するぐらいが現実的だろうな。
apache側でldap認証でいいじゃんと思うが。
0974nobodyさん2009/09/13(日) 03:56:09ID:???
パスワードを生でDBに突っ込んでる仕様を変更できないって時点で終わってる
0975nobodyさん2009/09/13(日) 06:12:48ID:???
rails3っていつ出るんだ
新しいもの好きでRails始めたのに今じゃ新しい要素0
0976nobodyさん2009/09/13(日) 06:38:16ID:???
ようやっとrails2に移行できたばかりなのに3とか勘弁してくれ
0977nobodyさん2009/09/13(日) 08:44:00ID:???
オレなんか、Railsによるアジャイル開発第二版で1.26を勉強中だぞ
0978nobodyさん2009/09/13(日) 08:49:40ID:???
Rails 2.3.4で追加されたseeds.rbについて - ひげろぐ
http://brass.to/blog/rails-2-3-4%e3%81%a7%e8%bf%bd%e5%8a%a0%e3%81%95%e3%82%8c%e3%81%9fseeds-rb%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6.html

migrationに初期データ追加処理かかずに、db/seeds.rbにかけってさ。
0979nobodyさん2009/09/13(日) 09:51:07ID:???
新しい物好きならTornadoでもやってたら?
0980nobodyさん2009/09/13(日) 17:10:25ID:???
>>977
おれも。
Pragmatic の英語版の第三版を入手しようと思ったが、
第三版は Rails 2系の内容になっているけど、もうすぐ Rails 3 が出るんだよね。
0981nobodyさん2009/09/13(日) 17:18:32ID:???
もうすぐとは言うがな、まだアルファすら出ていないぞ。
0982nobodyさん2009/09/13(日) 17:38:09ID:???
たしかに。
今年の前半では、Rails 3(Merb との統合)は夏頃には出るとか言われていたけど、
今年いっぱいは出ないかも。
0983nobodyさん2009/09/13(日) 18:05:44ID:???
>>978
初期データ設定用のタスクを自分で書いてたけど
こっちを使った方が幸せになれそうだな。早速そうするわ
09849832009/09/13(日) 18:15:45ID:???
と、思ったけどやっぱやめw
テーブルごとに初期データ設定のタスクを作って依存関係を設定した方がいいや
0985nobodyさん2009/09/13(日) 18:24:51ID:???
>>977
俺もそのやり方でサンプルいじりながら勉強した
その後はすぐに最新版に切り替えて 1.26 との差分をネットやレシピブックで
補うという感じ

アジャイル開発の第三版欲しいけど
今すぐ英語版買うか、翻訳版が出るのを待つか悩み中
0986nobodyさん2009/09/13(日) 18:34:56ID:???
各バージョンを完全に最初から習得しなおしになることが多い人は3を待つ。
差分で習得できそうな人は2で始める。
0987nobodyさん2009/09/13(日) 18:47:28ID:???
ここにいる人間はrailsのソースコードすら読めないのか
0988nobodyさん2009/09/13(日) 18:57:38ID:???
umetemiru
0989nobodyさん2009/09/13(日) 19:00:46ID:???
>>987
本を読んで勉強する人はソースコードを読まないとでも?
なんでそこで排他論理になるのか意味不明
0990nobodyさん2009/09/13(日) 19:42:42ID:???
仕様を知らずにいきなりソースを見ても把握は難しいだろう。
時間をかければ可能だろうが、効率的なやり方ではない。
どういう機能があるのかを系統立てて知るには書籍が一番手っ取り早い。
0991nobodyさん2009/09/13(日) 19:49:32ID:???
マジレスするとどこから読んだらいいのか、
読みたい *.rb がどこにあるのかよくわからん

ソースは GEM の下にあるのは find でみつけたけど

Rails コードリーディングみたいなサイトないかな
0992nobodyさん2009/09/13(日) 19:58:13ID:???
>>991
関連gemのソースからtagsファイル作ってタグジャンプ
09939912009/09/13(日) 20:07:32ID:???
>>992
ありがとう
いまは、エラーが出たら、そのクラス名で find と grep で結局たどっています。
Java と違い、Ruby はクラス名とファイル名が 1:1 ではないので、
Java から来た人間だと、どうもおっかけにくい。

地道に追っかけることにします。

コントローラから view への渡し方でどんなことが出来るかを調べたくて、
render.rb はだいぶ読み込んだが・・・
0994nobodyさん2009/09/13(日) 20:10:09ID:???
もしかしてローカルでAPI参照してないのだろうか。
0995nobodyさん2009/09/13(日) 20:20:12ID:???
確かに rdoc の View Source は素晴らしい
private なメソッドまであれで見られるようになればソースブラウザとして
かなり便利なものになるだろうな

と思って man 見たら --all というオプションを発見してしまった
09969912009/09/13(日) 20:28:22ID:???
http://railsapi.com/ とかでオンラインでも見るけど、
ローカルで使っている Rails が必ずしも最新版とは限らないので、
やり方は忘れてしまったが、ローカルで Rails で空の App をつくって、
そこから rdoc(?) 作らせて、それを見ている。

でもソースを直接見たいときもある。

>>995
> 確かに rdoc の View Source は素晴らしい

これは私もそう思う。
Javadoc も取り入れれば、と思った。
0997nobodyさん2009/09/13(日) 20:37:52ID:???
Javaは型ががっちりしてるので、ソースの内部を見る必要なくない?
あるとしたらたぶん、メソッドの定義が下手なんだと思う。
09989912009/09/13(日) 20:41:25ID:???
>>997
いや、Java に限らず、そのメソッドの内部で何が行われているか
知りたいことがあるから、API を見ることとソースを見ることは別だと思います。

1000 が近いので、スレ立ててみますね。
テンプレは >>1-2 を使用します
0999nobodyさん2009/09/13(日) 20:48:07ID:???
>Java と違い、Ruby はクラス名とファイル名が 1:1 ではないので、

ha?
1000nobodyさん2009/09/13(日) 20:49:46ID:???
ume
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。