【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
0402nobodyさん
2009/06/23(火) 11:22:36ID:???マジレスすると、save じゃなくて save! にすると、失敗した場合に例外が出るから、そのスタックトレースを眺めるとか。
0403nobodyさん
2009/06/23(火) 16:58:51ID:???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:???>Railsは通常、/Controller/Action/id のようになっていると思っていたのですが、
>上記の例だとURLが/Controller/id/Action/ になっているようです。
Rails 2.0 から RESTfull なかんじにかわったかんじ
0406nobodyさん
2009/06/24(水) 21:02:35ID:???passengerじゃオチまくって話にならん!
0408nobodyさん
2009/06/24(水) 22:37:00ID:???それ、おれと同じところのVPSじゃないだろうか、
おれは180Mだが数百ユーザーで落ちまくりだった。
悲しい対処でがんばってるが、360Mでもダメか。
PassengerのMAXインスタンスはいくつにしてるの?
おれは2だけど。
なんかメモリの少ないVPSあたりだと、
Mongrelの方がいいような気がする。
Railsデプロイのアドバイスに従ってればよかった。
このスレでPassengerじゃないと古いとかいうやつがいるから、
と人のせいにしてみる。
0409349
2009/06/24(水) 22:50:30ID:???それはおれのことかな?(笑)
もしそうだったとして、自分は VPS 等でなく、占有できる PC でしか動かしたことがないので、
あなたのレスは参考になるから、もっといろいろ書いてほしい
0411nobodyさん
2009/06/24(水) 23:46:13ID:???linodeだよ。
mongrelで4つくらいプロセス立ち上げて、バランサで振り分ける
ようにしたら普通に動くようになった。
0412nobodyさん
2009/06/24(水) 23:56:05ID:???メモリ4Gの専用サーバーの人?
前にそういう書き込みがあったように記憶してる。
その人は安定してるってことだったから、
それくらいがっつり積んでれば安定するのかなとうらやましく思った。
Rubyも1.9.1だしPostgreSQLは8.4βだし不安定要素がありすぎて、
Passengerの問題だけではないようにも思うけど。
遊びではないけど自分だけの責任で済むから、
ちょっと野心的にやりすぎた。
>>406のRubyのバージョンが知りたいなあ。
>>410
おれはCPIだよ。
いろいろ検討したけどあそこが一番いいように思った。
バカみたいに通信が発生すると別途相談らしいけど、
基本どれだけ通信しても追加料金かからないし。
運が良かっただけかもしれないけど、
電話で問い合わせたとき担当者もいい感じだった。
0413412
2009/06/24(水) 23:57:43ID:???> ようにしたら普通に動くようになった。
まじかよ・・・
0414nobodyさん
2009/06/25(木) 00:10:11ID:???マジ。5000↑ユニークでもいけた。
http://d.hatena.ne.jp/shohu33/20071121/1195650627
> mongrelで4つくらいプロセス立ち上げて、バランサで振り分ける
> ようにしたら普通に動くようになった。
↑なんか自分でやったかのような書き方してるけど、↑のURLのやり方
参考にしただけ。
HTTP部分をApacheに任せられるものすばらしい。
0415nobodyさん
2009/06/25(木) 00:16:11ID:???おお、サンクス。Apache併用方式か。
おれはモバイルだからIPで判別してPCからのリクエストをはじきたいんだよね。
Mongrelはそのへん分からなかったけど、Apacheに任せればいいか。
1.9.1はMongrel Clusterのインストールに問題があったのも躊躇した理由だが、
いろいろ試してみるよ。
0416409
2009/06/25(木) 01:29:57ID:???> >>409
> メモリ4Gの専用サーバーの人?
いや、ちがいます。
Passneger を動かしているのは、職場や客先での業務イントラだけ。
もちろん専用のサーバなので、メモリも2GBとか4GBとか。
だけど同時アクセス数は少ないけどね
0417nobodyさん
2009/06/25(木) 08:40:07ID:???>>412
サンキュー、参考にします。
>>414のブログの記事ってもう一年半も前のなんだけど、
いまだにこれがベストプラクティスなの?
0418nobodyさん
2009/06/25(木) 09:53:42ID:???Ruby は言語が綺麗でも実用的じゃない。書生論。
0419nobodyさん
2009/06/25(木) 13:30:58ID:???そういうもともと論から始めるのも、いかにも書生論って感じだよね。
まぁGoogle App Engineで、Pythonでも始めたら?
信頼と安心のGoogleブランド
0420nobodyさん
2009/06/25(木) 14:42:40ID:???古いけど実績はある。
枯れてるサーバーはそうそう急激な変更はしないよ。
サーバーは安定しなきゃ話にならないし、適材適所じゃないだろうか。
0421nobodyさん
2009/06/25(木) 16:43:20ID:kFfq4IDXBazaarなら中央も分散もどちらの運用も可能ですよ!
0422nobodyさん
2009/06/25(木) 22:36:23ID:???0424nobodyさん
2009/06/26(金) 05:06:56ID:???0425nobodyさん
2009/06/26(金) 07:25:25ID:???遅レスですが、メモリ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:???バランサーといっても、
>>414の場合はハードのロードバランサーを使うんじゃなくて、
Apacheのバランシング機能を使うだけだよ。
大規模でそれなりにお金がかかるのは間違いないと思うけど。
>>425
おお、サンクス。
専用2台って最低でも月4〜5万かかるよね。
ゆとりある組とかつかつ組のノウハウは別にためないときついね。
おれはPostgreSQLのキャッシュを10Mにして抑えてるよ。
データはためてないようにしてる。
しかし50万を2台ってやるなあ。
それだとピークタイムは20アクセス/秒以上もあり得るよね。
おれも静的コンテンツにできるものは徹底的に静的にしたりがんばってるのだが。
バッチやプチクローラー(対象は数百くらい)もあるから、メモリ360Mにあげようかな。
rsyslogとかも引きずられて落ちたりするし><
0427nobodyさん
2009/06/26(金) 14:57:27ID:???サーバー室はミニ冷蔵庫w
0428nobodyさん
2009/06/26(金) 17:32:18ID:???比較の問題だが安心と安全を金で買うようなものだ
24時間監視とか個人じゃ無理だし
0429nobodyさん
2009/06/26(金) 17:47:11ID:???0431nobodyさん
2009/06/26(金) 18:15:21ID:???サイト名やページ名のように、デフォルト値を共通に設定したり、
viewなどで使いまわしたい場合は、Railsではどうするのがよいのでしょうか?
・共通コントローラーを作って、継承させる
・ヘルパーを作る
共通コントローラーだと、全部のコントローラーをそれから派生するように決まりつくらないとあかんですよね。
手間も面倒くさい、とかいったらいかんよなあ…
0433431
2009/06/26(金) 18:55:09ID:???0434nobodyさん
2009/06/26(金) 19:04:45ID:???なんでもコントローラーでやろうとする方が初心者の考えだと思う。
どうしても変数でほしいならconfigでやるべきじゃないだろうか。
0435406
2009/06/27(土) 00:21:23ID:???ちょっと無責任な書き込みしてしまったので、訂正。
メモリ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:???俺の場合は、共有レイアウトファイルを作って、それに共通メニューとか
サイトロゴを書き込んで、コントローラの先頭にlayout "common"みたいな
感じで共通レイアウトファイルを使用するよう設定してる。
content_forつかえば、ビューのソースからレイアウトファイルへの出力も
できるから、あんまり不便だとおもったことない。
0437nobodyさん
2009/06/27(土) 00:33:52ID:???だと思った。
Passengerのメモリ管理はかなり優秀で、一定期間アクセスがないとアプリケーション
サーバ側のプロセスは消滅してメモリ占有量はほぼゼロになるとどこかで読んだ覚え
がある。
あとMySQLは少ないメモリ量で効率よく動くのが苦手で、その点ではPostgreSQLの
ほうが優れてるらしい。
それでも300MB程度でMySQLやPostgreSQLを動かすのは自殺行為だと思う。
そのメモリ容量でどうしてもDBを使いたいならFirebird一択じゃないか。
0438406
2009/06/27(土) 01:15:51ID:???…FirebirdというDBを初めて知った。
ちょっと勉強してみる。
mysqlを選んだのは、phpMyAdminでGUI操作できるという動機…。
0439nobodyさん
2009/06/27(土) 04:40:58ID:???> あとMySQLは少ないメモリ量で効率よく動くのが苦手で、その点ではPostgreSQLの
> ほうが優れてるらしい。
初めて知った。
MySQL は Postgres よりも軽くて、必要なメモリも少ないものだと思っていた。
あと組み込みDBといったら sqlite とかじゃないの?
sqllite が、MySQL みたいに排他制御してくれるかどうか知らないけど
0440nobodyさん
2009/06/27(土) 06:34:04ID:???> メモリ不足が起きる原因がapacheのチューニング不足だった
kwsk!
>>437
Firefirdを勧めるやつ初めてw
もともと商用だしsqliteあたりよりいいのかもしれないけど
ちなみに300Mと言ってもOSが使う分は含まれてないと思うぞ
自殺行為というほどじゃないような
0441437
2009/06/27(土) 07:27:54ID:???同時にアクセスが来ると、しばらくテーブルにロックがかかってエラー
起きまくることがある。
まあ、うちのサーバで起きたんですけどね。
1日1,000アクセス程度でそういう現象が出るようになった。
0442nobodyさん
2009/06/27(土) 08:18:35ID:???DBだけ動かすんなら自殺行為じゃないかもね。
Apache+Railsアプリ+DBなら、それはやばいでしょって話で。
またRubyそのものもけっこうメモリを食う。
Enterprise Rubyにするとかなり節約できるようになるという話なので、
試してみる価値はあるんじゃないだろうか。
http://d.hatena.ne.jp/rx7/20090608/p1
0443nobodyさん
2009/06/27(土) 08:52:58ID:???1鯖で、アパチもルビもDBもってのは大規模では無理が有る。
0444nobodyさん
2009/06/27(土) 15:30:33ID:lkILxYvh(遅いのは承知の上で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:???参考になります。
しかし、
>>437
ということは、Passengerだともっとパフォーマンスがあがるのかもね。
>>442
REEなんて初めて知ったよ。
37Signalsが使ってるならRailsは大丈夫そうだね。
PHPからRailsに乗り換えて、サービス公開しようとしてるんだけど、
作るのは手早くできても、個人レベルだと公開するのがとにかく大変だね。
なやましいなぁ。
0446nobodyさん
2009/06/27(土) 16:07:32ID:???> dispatch.cgiがよくわかりません。
RewriteRuleに自分で書いてるじゃん。振り分けを行う起点だよ。
今時のフレームワークは名前こそ違え、大抵ディスパッチャで振り分けをしてる。
基本から学びたいならフレームワークのソースから読んだ方がいいよ。
0447nobodyさん
2009/06/27(土) 17:49:50ID:???メモリはOS+アプリで360MB。
月19.95$だし、たぶん1万人/日(!=pv)くらいなら耐えれそう。
あと安いサーバーのがかえってチューニングのスキルがあがる気がしたw
個人サイトで専用サーバは、俺は金がもったいないと思うな。
というか貧乏なので無理(くやしいのう!)
メモリ不足でmysqlが落ちる問題は、apacheへの接続人数とmysqlの
メモリ上限を下げたらなおった。
接続人数絞っても快適なのは、おそらく1アクセスの負荷が低いから。
今まで落ちてたのは、短短期間に偶然多くのリクエストが発生したとき
だと思う。
RailsはSQLキャッシュが有効になるように組んでるし、アクセス頻度の
高いコンテンツはページキャッシュを使ってる。
0448nobodyさん
2009/06/27(土) 17:52:47ID:???これができる環境を1人で作り上げるだけで、1つのプロジェクトを終えたような
気分だ・・・w
0449nobodyさん
2009/06/27(土) 18:06:12ID:???ひと月あと10ドルくらいケチケチすんな。
0451nobodyさん
2009/06/27(土) 19:14:19ID:???すげーわかる。
負荷を半分に減らせるとすると、
仮に大ヒットしてサーバーが10台必要になるところが5台。
個人レベルのこじんまりしてるものなら月数千円の違いだが、
いろいろ苦労して損はない気がする。
リソースをじゃぶじゃぶに使うのってキリがないしな。
0452nobodyさん
2009/06/27(土) 19:40:08ID:???「冗長化」の意味すらまともに知らない素人が他人のスキルにケチつけるとか
ちゃんちゃらおかしいわ。
10年後に出直してこい。
0453444
2009/06/27(土) 19:43:10ID:???RewriteRuleの部分は理解できてます。(リクエストのパスを書き換えてるということ)
READMEのとおりにしているのですが、dispatch.cgiというファイルはプロジェクト内を探しても見当たらないし,READMEの通りなのにうまくいかない原因が分からず,よって対処法もわからないのです。
0454nobodyさん
2009/06/27(土) 20:34:12ID:???cgiでやったことないけど、
MongrelとかPassengerはその辺を勝手にやってくれると認識してる。
今見てみたが、READMEファイルの近くにdispatchersってディレクトリがあるから、
そこからコピーするんじゃないだろうか。
0455445
2009/06/28(日) 11:16:18ID:???絶対必要、あったら便利、個人的におすすめ、
というようなプラグインを教えてください。
環境はRuby1.9.1 Rails 2.3です。
よろしくお願いします。
0457nobodyさん
2009/06/28(日) 20:27:12ID:???つ ブラウザ、テキストエディタ
0459nobodyさん
2009/06/29(月) 11:01:30ID:???Mr.1.8.7はブログあたりで主張しろよ
プラグインはページャーものが定番だろうけど、
acts_as_listは便利だと思った。
DBにpositionカラムを追加すると表示順を手軽に管理できる。
deleted_atカラムを追加して論理削除を管理する、
acts_as_paranoidも便利そうだ。どれも有名だろうけど。
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:???0463nobodyさん
2009/06/29(月) 13:37:25ID:???予定ではね。今でも動かしてるけど。
2.3で1.9対応はされてるし、まあまあ動く。
ActiveResourceはダメだったけど。
アプリ開発者が創り出すバグの方がよほど問題になるくらいまできてると思う。
0464nobodyさん
2009/06/29(月) 14:18:08ID:???>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:???どんなアプリを作るかによってまったく違うんだし、
Ruby 1.9.1 だと動かないプラグインやライブラリもあったりするからね。
0467nobodyさん
2009/06/29(月) 21:00:50ID:???0468nobodyさん
2009/06/29(月) 22:16:53ID:???携帯サイトを作るならjpmobileがおすすめ。
ただし、gemで入る最新の0.0.4ではrails2.3で動かない。
githubにある開発版なら動くかもしれない。
0470455
2009/06/29(月) 22:33:03ID:???ありがとう、みてみます。
ページャー物の定番もおすすめがあったら教えてください。
>>464
Ruby1.9はそんなに互換性に問題があるの?
>>466
どんなアプリを作るにも便利なものってあると思うから聞いたんだけどね。
妙な質問に妙なレスか。
>>468
サンキュー。
携帯対応も考えてます。
github
0471nobodyさん
2009/06/29(月) 22:35:31ID:???自己レス、途中で送ってしまいました。
>>468
サンキュー。
携帯対応も考えてます。
github使ったことないけど、読み方はギットハブでいいのかな。
とりあえずgitいれてみる。
0472nobodyさん
2009/06/29(月) 22:44:38ID:???ページングなら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:???>>>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:???どこで指定すればいいのやら。
0475nobodyさん
2009/06/29(月) 23:54:59ID:???そんなのここにくるやつは大抵チェックしてるからいらんよ
0476nobodyさん
2009/06/30(火) 00:15:37ID:???partialじゃなくて、DB(SQLite3)に入ってる文字列のほうがASCII-8BIT
になってました。
0477nobodyさん
2009/06/30(火) 08:55:35ID:???基本と思っているかもしれないが、RailsではCGIは基本じゃないよ。
練習したいだけなら、webrickかmongrelでいいだろうし(script/server)
そうじゃなかったら、つまりちゃんとサーバーとして稼動させたかったら、重くてまともな速度で動かずイライラするだろう。
RailsではCGIの出番はないよ。
>>448
俺も最初、それですげー満足した気分になったわww
ちょっと弄ってコミット→一発deployで満足ww
0478nobodyさん
2009/06/30(火) 10:38:44ID:???gem sourcesとか初めて知った。
ありがとう。
>>473
なるほど、ようやく合点がいきました。
確かにpostgresqlのライブラリがgemで入らなかった。
ググったら解決策を書いてる人がいたから、
そのとおりにCのヘッダファイルをいじったりしたよ。
とりあえず爆死するくらいの地雷を踏むまでは1.9.1で使ってみる。
0479nobodyさん
2009/06/30(火) 11:43:13ID:???「postgres」のgem使ってない?
0480nobodyさん
2009/06/30(火) 12:50:34ID:???今は pg がいいの?
0481nobodyさん
2009/06/30(火) 13:58:52ID:???ありがとうございます。
バグや問題があったら報告するなりブログに書くなりしてください
0482nobodyさん
2009/06/30(火) 14:33:48ID:???postgres-prって開発止まってるんじゃなかったっけ?
最終的な手順しか残してないから詳細は忘れたが、
1.9.1だとpostgres-prじゃ(たしか)動かないし、
ポスグレのadapterではpgがデフォルトになってるはず。
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:???Http の PUT/GET/POST/DELETE メソッドで行うことであり、
URL を /categories/12/books/4 というように見せることとはちょっと違うと思うのだが。
んで、>>485 さんの場合、自分の作るアプリケーションが、他のツールから REST クライアントで
呼び出されることを想定しない場合、削除しちゃっていいんじゃないの?
0487485
2009/06/30(火) 16:47:48ID:???あらら、そうしたら、>>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で連携、見たいな記事を見たことはあるくらいなのですが…。
0488485
2009/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:???ビンゴ。
postgres-0.7.9だった。
gem install pg
とやったらすんなりインストールできたよ。
ありがとう。
>>488
なんでRailsGuideを真っ先に読まない?
以下にすごく詳しく書いてあるよ。
http://guides.rubyonrails.org/routing.html
0490nobodyさん
2009/07/01(水) 06:20:03ID:Q9Au53lLhttp://oldmoe.blogspot.com/2008/01/restful-pagination-in-rails.html
map.paged_users ← この記述がよく理解できない。
0491nobodyさん
2009/07/01(水) 16:02:49ID:???あんまり突き詰めて考えることはないんじゃないだろうか
0492485
2009/07/01(水) 16:40:32ID:???サンクス。真っ先に公式文章を読むべきでした。
で、読んでいてつまづいたのですが、
"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:???/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:???>>494のような場合だったら本を特定するURLを割り当てるのだろうな。
フォームで条件を指定すると該当するものの集合が得られる、
というURLはどう表現すればいいかよくわからん。
検索結果をリソースとみなして、フォームから条件をPOSTして、
検索結果リソースを新規作成後にステータス 201 Createdでリダイ
レクトだろうか。
0496485
2009/07/01(水) 17:53:46ID:???ああ、 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ネスト論」を含む新着エントリー - はてなブックマーク
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:???それって適当な例えだと思ってた。
もしあるbookを特定するためにそのURLになるんだったら、
テーブルの設計を見直す必要があるんじゃないだろうか。
代替キー(大抵意味のない連番)なしで自然キー(意味のあるキー)だけだときついよ。
自然キーは一意のデータを取得するために、いくつもカラムが必要になる可能性があるから。
内部的に自然キーを使うのは当然なんだけど、
URLとかデータを一意に特定したい場合は代替キーのみがいいと思う。
気持ち悪いって人もいるけど、その代償として工数がかさむしバグも多くなる。
0499nobodyさん
2009/07/01(水) 20:55:32ID:???0500nobodyさん
2009/07/01(水) 22:46:35ID:???ほとんど知らないけど、ASINとかいうやつも自然キーっぽいのだが。
0501教えてください ◆Mn5mzn8hAQ
2009/07/01(水) 23:07:32ID:???Railsもインストールしたくて、試みたのですが、下記のようにエラーになります。
どうしたらうまくいきますか?
C:\Documents and Settings\boku>gem install trails
ERROR: While executing gem ... (Zlib::GzipFile::Error)
not in gzip format
■ このスレッドは過去ログ倉庫に格納されています