【Ruby】Ruby on Rails Part7
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/04/30(木) 23:07:27ID:???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/
0005nobodyさん
2009/04/30(木) 23:35:01ID:???現在、RubyはPHPが支配する世界の陰で細々と生活しております
表向きはPHPerで、裏でせっせとrubyっていましょう
0006nobodyさん
2009/05/01(金) 01:43:12ID:???0007nobodyさん
2009/05/01(金) 01:43:53ID:???0008nobodyさん
2009/05/01(金) 21:03:58ID:???動作させられるようにならないの?
cakephpはできてるよね?
0009nobodyさん
2009/05/01(金) 21:18:21ID:???0010nobodyさん
2009/05/01(金) 21:21:52ID:???サーバーの管理権限がないと
動作が遅すぎて重すぎて、
まともに動かせないんだよね?
0011nobodyさん
2009/05/01(金) 21:39:51ID:???0012nobodyさん
2009/05/01(金) 23:34:29ID:???サーバーの管理権限なくても
まともなスピードで動くんだよね?
0013nobodyさん
2009/05/01(金) 23:41:46ID:???0014nobodyさん
2009/05/01(金) 23:43:12ID:???これでダメって、最低1日2〜30万PVはあるんだろうな。
0016nobodyさん
2009/05/02(土) 15:23:45ID:???0017nobodyさん
2009/05/02(土) 17:02:26ID:???俺は趣味アプリが完成したらさくらインターネットの専用サーバ借りる予定。
月8,000円くらいだったかな。
0018nobodyさん
2009/05/02(土) 18:07:46ID:???0019nobodyさん
2009/05/02(土) 21:12:12ID:???十分なスピードで動くのに、
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:???聞き方があまりにも幼稚すぎて答える気にならんな
社会性のかけらも感じられない
0023nobodyさん
2009/05/02(土) 23:55:00ID:???子供みたいでカワイイ
0024nobodyさん
2009/05/03(日) 00:06:05ID:rx1Rm2aS0025nobodyさん
2009/05/03(日) 00:11:51ID:???0026nobodyさん
2009/05/03(日) 02:38:45ID:???GW中開発三昧だ〜。
0027nobodyさん
2009/05/03(日) 02:50:14ID:???回線を太くするととたんに高くなるんだな。
10MだったらVPSでも問題ないだろうし微妙だと思った。
0028nobodyさん
2009/05/03(日) 06:18:26ID:???CGI駆動だとRailsはメチャメチャ重いからだろ
PHPが標準のモジュール駆動だと重いといわれるCakePHPもそこそこ動く
だが、共有レンタルサーバーの多くはphpもCGI駆動だから気をつけれ
Railsをまともn動かす時は、Passengerとか使うのでそうなると、
多くの共有サーバーは入ってないので、管理者権限いるってこと。
ただ、まともにサービスしようとしたら、いろいろ弄る必要があるから、
結局管理者権限ないと話にならんが
0029nobodyさん
2009/05/03(日) 07:54:16ID:???0032nobodyさん
2009/05/03(日) 14:37:31ID:C26VReX10033nobodyさん
2009/05/03(日) 16:53:21ID:???海外だともっと安いのがあるのかもしれないけど、おれは満足してるよ。
ブラウザベースの管理アプリも用意されてて割と便利だし。
0035nobodyさん
2009/05/03(日) 23:13:01ID:???0036nobodyさん
2009/05/03(日) 23:30:06ID:???0037nobodyさん
2009/05/04(月) 00:47:10ID:???できるような設計にしようと思ってるんだけど、rails的にどうなの?
一般利用者はほとんどのテーブルに対して参照ばっかりだから、
それぞれのコントローラのupdateやdelete、insertを発行するメソッドは
管理者のみ、っていう方法もあるんだけど、どうしたらいいんかな〜。
0038nobodyさん
2009/05/04(月) 02:55:49ID:???admin/userとか階層作って管理する方法を自分は採用してる。
004038
2009/05/04(月) 10:34:22ID:MqCVRAIXAdmin::UserControllerを 作ってlistやdeleteアクションを定義する感じ。
0041nobodyさん
2009/05/04(月) 22:11:00ID:???ありがとう。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:???まず、あなたなりに書いたらどうなるの?
その後教えてあげます。
0044nobodyさん
2009/05/07(木) 21:22:30ID:???既にふつうの(=ARのHasManyProxyなどでない)配列になっているっ
てことだよな?
Enumerable#find / detectでも好きに使えばいいじゃん。
004542
2009/05/08(金) 00:27:37ID:XobVG3nsありがとうございます!
findの使い方よくわかっていませんでした。。
0046nobodyさん
2009/05/09(土) 07:16:53ID:???コントローラは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:???0048nobodyさん
2009/05/10(日) 16:27:57ID:???なるほど・・・。
名前空間でコントローラを整理できることを知らなかった。
ありがとう!
一般ユーザと会員ユーザ、システム管理者からなるシステムを作っているのだけど、
作り直そうか迷うなぁ。
わけた方がすっきりするんだろうけど、一般ユーザと会員ユーザの出来ることは
ほとんど同じなんだよなぁ。
0049nobodyさん
2009/05/10(日) 16:38:53ID:???長く運用してると、機能追加などで次第に一般ユーザと会員ユーザの違いが
大きくなっていくので、そのときに整理し直してもいいと思う。
0050nobodyさん
2009/05/10(日) 22:14:49ID:???システムごと分離するか、コントローラを分割するか、ユーザのrole機能で対応するかは適材適所やね
0051nobodyさん
2009/05/11(月) 00:35:14ID:???0053nobodyさん
2009/05/11(月) 23:14:24ID:2slawtRURails 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
005453
2009/05/11(月) 23:16:54ID:???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:8mXS3koFif x=='dog'
Dog.find :all
elsif x=='cat'
Cat.find :all
elsif x=='horse'
Horse.find :all
end
005958
2009/05/12(火) 20:37:09ID:8mXS3koF教えて頂けると幸いです。
0060nobodyさん
2009/05/12(火) 20:37:20ID:???代わりに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:???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
006458
2009/05/12(火) 21:04:34ID:8mXS3koF>>62
レスありがとうございますm(__)m
>classify.con...
うおぉぉ。。
rubyすごすぎる(笑)
0066nobodyさん
2009/05/12(火) 21:29:38ID:???x.classify.constantize.find(:all) if ["dog", "cat", "horse"].include?(x)
0068nobodyさん
2009/05/12(火) 21:43:04ID:???「使いたいから使う」みたいなのもたまに見かけるし
0069nobodyさん
2009/05/13(水) 05:15:55ID:???>ユーザのrole機能
そんな機能があったんかー、しらんかった。pluginかな?
ActiveRecord継承のRoleモデルつくってた。
まだ初めて半年だけど、もう以前の環境(php)には、戻れなウィッシュ。
0070nobodyさん
2009/05/13(水) 08:44:50ID:???確かに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:???generatorとして認識される。
こいつがそういう配置になってないだけ。
0073nobodyさん
2009/05/16(土) 23:17:33ID:???上記はcategory ascでソートされますが、これをcategory descで
ソートされるようにするのにいい方法はありますでしょうか?
:order => 'category desc' とすれば一応できたのですが、これだと
テーブルのカラム名を直に入力してしまうので、これをやってしまっていいのか迷っています。
よろしくお願いします。
0074nobodyさん
2009/05/16(土) 23:28:15ID:???シンボルを書けるのは、単にSQLに埋め込むときにシンボルを #to_s した
ものが入るから。
0075nobodyさん
2009/05/16(土) 23:37:41ID:???通常あり得ないとは思うけど、カラム名が変わったときにシンボルで指定できると
修正が1カ所ですむけど、カラム名直書きしてしまうと、そのカラムが含まれる
すべての箇所を修正しないといけないから、何かスマートな方法あるかなと思っただけなんだ。
0076nobodyさん
2009/05/17(日) 00:00:07ID:???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:???この意味が分からないのだが、
例えば「category」カラムの名前が「business_category」に変わったとしたら、
その1カ所をどういうふうに修正するの?
0079nobodyさん
2009/05/17(日) 00:35:24ID:???シンボリックリンクのように参照しているものだと妄想してました…。
0081nobodyさん
2009/05/17(日) 15:05:25ID:???なるほどやっぱりそうなんですね。
というか、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:???自分はまったく使ってないわ。
そんなに新規で作る事が少ないというのもあるけど、
一から設定するのもそれほど手間じゃないから。
今よく使うのはこんなもんかな。
mislav-will_paginate
jpmobile
postgres
rmagick
i18n_genrators
mongrel
mongrel_cluster
バージョン管理はSubversion。
そのうちgitも試してみたいと思う。
公開する時は、Passengerを使う事が多くなってきたけど、
スペックが低いサーバだとPassengerよりmongrelを複数起動して、
Apacheのproxy_balancerで動かすほうがレスポンス早いので、mongrelもしばらく使うつもり。
008582
2009/05/18(月) 00:04:25ID:???http://github.com/jeremymcanally/rails-templates/tree/master
>>84
確かにPassengerの初回起動は遅いもんなぁ。
mongrel使った事ないから試してみるよ!
0086nobodyさん
2009/05/18(月) 00:53:06ID:???mongrel 使ったことないということだけど、
普段(ローカルの開発環境) は webrick 使っていて、本番環境は Passenger を使っているの?
008782
2009/05/18(月) 01:22:25ID:???うん
開発webrickで本番Passenger。
monoで開発してた時も開発XSP本番mod_monoだったなぁ。
なんとなくapacheの方が安定してるのかなぁという思い込みでt
0088nobodyさん
2009/05/18(月) 01:24:25ID:???今ならThinかEbbじゃないの。
008986
2009/05/18(月) 02:32:23ID:???なるほど、どうもありがとう。
>>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:???ホスティングだからメモリの問題だとは思うけど。
0091nobodyさん
2009/05/19(火) 06:26:08ID:???今でもrailsは開発早いの?
それとも何か新しいのでた?
ほかの言語もrails並に早くなった?
0092nobodyさん
2009/05/19(火) 07:14:33ID:???0094nobodyさん
2009/05/19(火) 11:23:22ID:???0095nobodyさん
2009/05/19(火) 11:30:03ID:???rails3がでてmerbと統合したら、、
0096nobodyさん
2009/05/19(火) 11:55:09ID:???複数人でやると、こんな書き方があるのかーというばかり。
聞けば分かるけど、読んだだけではすぐには分からない書き方が多いような気もする。
0097nobodyさん
2009/05/19(火) 12:13:21ID:???動的にメソッド追加してて、どこに定義があるのかctagsで追えないとか。
でも勘とgrepでソース読めばなんとかなるレベルだとは思う。
ruby-debugがマシになってきて、railsの動的なコードの山もあまり怖くなくなってきた気がしなくもない。
0099nobodyさん
2009/05/19(火) 17:55:25ID:???規定を知らないだけで開発効率関係ないと思う
動的にメソッド入るならコメも入れてよって泣きながら探してる
0100nobodyさん
2009/05/19(火) 22:26:10ID:???rubyを書けること?
MVCを理解すること?
railsの統合開発環境をインストールして、どっかの本を見ながらいじればいいの?
0101nobodyさん
2009/05/19(火) 22:34:10ID:???■ このスレッドは過去ログ倉庫に格納されています