【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
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
0504nobodyさん
2009/07/01(水) 23:16:14ID:???OneClick Installerは使ったことないけど、スペルミスってことはないの?
×trails
○rails
0505教えてください ◆Mn5mzn8hAQ
2009/07/01(水) 23:21:10ID:???試してみましたが、同じエラーになります。
このコマンドは、Rubyのディレクトリに移動してやってみてもダメでした。
0506nobodyさん
2009/07/01(水) 23:35:41ID:???エラーメッセージ
>ERROR: While executing gem ... (Zlib::GzipFile::Error)
>not in gzip format
で検索すると対応策が出ているね
0507nobodyさん
2009/07/01(水) 23:36:48ID:???zlibを入れればいいじゃん。
おれは今確認したら1.1.4.1を入れてるな
0508nobodyさん
2009/07/01(水) 23:37:10ID:???いや入ってるよ?
さすがに全てのディストリで必ずとは言わないが、CD1枚のUbuntuにすら
入ってる。ましてやDebian、CentOSをやだ。
元の話題に戻るが、あの程度自力で解決できないような素人が、Windows
でRails開発とか地雷を踏むもんじゃない。
0509nobodyさん
2009/07/01(水) 23:40:33ID:???0511nobodyさん
2009/07/01(水) 23:57:07ID:???zlibの入ってないディストリでも探して1人で悦に入ってろよ。
0512nobodyさん
2009/07/01(水) 23:59:44ID:???そういう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:???gemというのをインストールしていませんでしたw
0516nobodyさん
2009/07/02(木) 00:38:54ID:???オフィス並みにメジャーアプリなら、ウィンドウズ使ってる丸の内OLにモテモテなのに。
0517nobodyさん
2009/07/02(木) 00:40:48ID:???0518nobodyさん
2009/07/02(木) 02:17:57ID:???この人は基本的に自分の好きなことしかやらないし
ドキュメント書くのも面倒くさいって言ってるし
0519nobodyさん
2009/07/02(木) 06:22:59ID:???やっぱりウィンドウズ使ってる丸の内OLだろう。
0520nobodyさん
2009/07/02(木) 09:56:03ID:???解決したのならそれはそれで良いんだけど、一寸気になったので一言。
もしかして普通にコマンドプロンプトから実行したんじゃない?
すべてのプログラム -> Ruby-186-???? -> RubyGems -> RubyGems Package Manager
で起動されるコマンドプロンプトからやってみた?
0521nobodyさん
2009/07/02(木) 10:45:55ID:???0522nobodyさん
2009/07/02(木) 11:52:26ID:???この俺様がハイブローな質問をしてやるから、誰か答えてみやがれ。
さあ、いくぜ。
「Railsで一定時間ごとにある処理を実行するにはどうしたらいいんだ」
フフフ、どうだ答えられまい。
どうだ、誰か答えられるものなら答えてみろ。
てゆうか、教えて。
お願いします。
0523nobodyさん
2009/07/02(木) 12:42:55ID:???0524nobodyさん
2009/07/02(木) 13:11:18ID:???0525nobodyさん
2009/07/02(木) 13:56:17ID:???・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:???0527nobodyさん
2009/07/02(木) 14:11:26ID:???日本国内からアクセスしたときの遅延はどのくらいでしょうか。
0528nobodyさん
2009/07/02(木) 14:47:35ID:???Linuxで実際にGUI開発環境使ったことある?
おれはVirtualBoxでCentOS入れて開発してるけど、
ことGUI周りに関してはWindowsのよさを痛感すると思うよ。
0529nobodyさん
2009/07/02(木) 15:23:03ID:???0530今日は曇り ◆twZ04DwX3o
2009/07/02(木) 15:25:05ID:w8jxLyuc0532nobodyさん
2009/07/02(木) 18:08:14ID:???ホップ数とか、ラウンドトリップの時間なら手元で調べられるんじゃない?
他に何が知りたい?
単純にHTTPとかアプリサーバの反応の軽い重いとかだとサーバのロードも関係してくるしなぁ。
0533nobodyさん
2009/07/02(木) 18:54:23ID:???gemからRailsをインストールするのにFWが邪魔して、できないこともある。
うまくいかない人は、FWを一時的に無効にして再挑戦w
0534nobodyさん
2009/07/02(木) 19:53:19ID:???使ってて一番大きいのは反応じゃないだろうか。
遅いというのもあるけど、反応にばらつきがある。
細かい動作の完成度もバカにならない。ペーストが変なところに貼り付いたりとか。
なんだかんだ見た目もWinはかなり配慮されてるし。まあ、これは個人的な印象。
かけてる金がすごいだろうから、当然と言えば当然だけどね。
0535nobodyさん
2009/07/02(木) 21:23:46ID:???それとWindowsを比べてどうすんだ。
比べるならUbuntuだと思うが。
0536nobodyさん
2009/07/02(木) 21:27:12ID:???現状が気に入らないならスキル次第でかなり深いところまで変更
することができる。
初心者から上級者まで一律お仕着せのMacとそのマネのWindows
とはそこが違う。
0537nobodyさん
2009/07/02(木) 21:33:39ID:Ot61hTL30538nobodyさん
2009/07/02(木) 21:55:27ID:???> 遅いというのもあるけど、反応にばらつきがある。
これLinux関係ないな、メモリが少なくてスワップ発生、
HDDは遅いけどディスクキャッシュが効いてるから速くなったり遅かったり、
て事でしょ?Windowsでもなるよ
コピペとかはまあ、操作体系の違いだから慣れるしかない
WindowsのGUIライブラリは基本的に一つしか無いから
その辺がまとまってるのは優れてるといってもいいか
0539nobodyさん
2009/07/03(金) 01:21:53ID:???犬だとまだまだ使ってる香具師が少ないから洗練されてない。
鯖なら常時起動してるから、起動させっぱにすれば良いだけ。
perlもjavaも同じ。そのためにmod_rubyとか小細工してるし。
開発だとどこでも開発したくて、ノートとかに開発環境作ると、ウィンドウズの便利さを痛感する。みんながモバイルで当たり前に使ってるありがたさ。
その当たり前の機能が犬だとまだまだ不十分なのが現実。
0540nobodyさん
2009/07/03(金) 10:04:52ID:???フフン、思ったより骨がありそうだな。だが次の質問はどうだ。
今度は質問が長いぞ。
「現在時刻を知るにはどうすればよいか、と問えば Time.now と答えるだろう。
二時間前なら 2.hours.ago だ、と聞かれてもいないことまで答えるかもしれないな。
だが、それを一回のリクエストの間に何回も使う場合はどうするのだ。
毎回 Time.now では呼び出しのたびに、ちょっとづつ変わるわけだ。
だったら @time_now = Time.now として、二回目以後の参照は @time_now を使えばいい。
本当にこれでいいのかな?フフル、よく考えてみることだ。」
ねえ、どうかな、本当にこれでいいのかな?
何かRailsが用意してくれたリクエストされた時刻のようなものはないのでしょうか?
0541nobodyさん
2009/07/03(金) 10:20:07ID:???結局慣れとスキルの問題、と。
で、結局WinでRubyの起動がLinuxに比べて遅いのはガチ?
0542nobodyさん
2009/07/03(金) 10:44:56ID:???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:???同じ画像を国内のレンサバとlinodeにおいて、
ブラウザからアクセスしたときのタイムラグがわかるとありがたいです。
ホップ数を測るというのはlinode.comに対してということでしょうか。
サービス用のインフラと、自社サイトのインフラが同じかどうかわからないと思うのですが。
0545nobodyさん
2009/07/03(金) 13:34:22ID:???本人?
これ手伝おうかと思ったけど、
一番下の
>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:???親切な方がメールでこのスレで紹介されたと教えてくれました。
成果を独り占めする気はございません。
最終的には本家に入れば良いと思っています。
もちろん日本語版翻訳協力者のリストを付けるべきだと思っています。
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 を直接使う、ということでいいんでしょうか?
0552nobodyさん
2009/07/03(金) 15:16:54ID:???そこまで規約に従う理由があるのか?
0553nobodyさん
2009/07/03(金) 15:54:42ID:???0554nobodyさん
2009/07/03(金) 16:34:28ID:???$RAILS_ROOT/lib にクラスとかモジュールの実装を置くのは普通だと思うが、なんで?
rubyはクラスもふつう定数だがクラスは動的に書き換えられるのでなんか混乱するな。
0555nobodyさん
2009/07/03(金) 16:42:35ID:???0556nobodyさん
2009/07/03(金) 17:24:33ID:???自分で定義したものはやっぱりapp以下に置くのが自然に思うけど
0557nobodyさん
2009/07/03(金) 18:01:42ID:???READMEに書いたある。
0558nobodyさん
2009/07/03(金) 18:37:16ID:???0559nobodyさん
2009/07/03(金) 18:47:47ID:???vendor/pluginsはプラグインとして使えるように作られたものを置くところ。
自分でプラグインを作ってもOKなので、外部製とは限らない。
app以下はやっぱり
app/models(ActiveRecord::Baseのサブクラス)
app/controllers(ActionControllerのサブクラス)
app/helpers(ヘルパとして使うmodule)
を置くところであって、それ以外はlib/でよいだろう。
もとの質問の定数定義についてだけど、定数の名前が重要で値自体にさして
意味がない(互いに異なりさえすればよい)場合は 定数の名前に使う予定の
ものに相当するシンボルを使うことも一考に値する。
0560nobodyさん
2009/07/03(金) 19:37:06ID:???RubyGemsで入るRaptというのを使おうとしたのですが、githubには対応してなさげ…
githubのものでgemが作られてるものは、RubyGemsで入れればいいんでしょうけど、
小さいプラグインだとないものもあります。
script/pluginで手動管理でしょうか?
0561nobodyさん
2009/07/03(金) 22:48:31ID:???個人的にはgemで用意されてるプラグインでも、汎用なものでなければscript/pluginでアプリケーションに個別に入れてる。
0562nobodyさん
2009/07/04(土) 07:23:40ID:???どっかからdispatch.fcgiをコピーしてくるのでしょうか?
ちなみに.htaccessもないもよう。
0563nobodyさん
2009/07/04(土) 11:26:40ID:???これっすかね?
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:???0567nobodyさん
2009/07/04(土) 19:22:01ID:???0568nobodyさん
2009/07/04(土) 22:48:17ID:???DirectoryIndex index.xhtml
ってやってもきいてくれずに404エラーになる。index.xhtmlは間違いなくある。
VirtualHostとDirectoryの両セクションコンテナでやってみたのだが。
これどうにかならないだろうか。おれだけ?
0569nobodyさん
2009/07/05(日) 00:35:44ID:???0570nobodyさん
2009/07/05(日) 00:46:18ID:???0571nobodyさん
2009/07/05(日) 02:56:44ID:???0572568
2009/07/05(日) 10:36:21ID:???0574nobodyさん
2009/07/05(日) 11:38:01ID:???0575nobodyさん
2009/07/05(日) 12:38:44ID:???まあ、口だけなのはわかってるけどなw
0576nobodyさん
2009/07/05(日) 14:13:27ID:???入門でいいなら、
・逆引き本
・Railsレシピ
・定番のAgile Web Development with Rails 3版を見ながらわからないところは、2版の日本語版を見る
俺はこんな感じで進めている。
>>574
汚いっちゅーか、黒魔術つかいすぎだと思う
0577nobodyさん
2009/07/05(日) 19:27:05ID:???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:???0582nobodyさん
2009/07/06(月) 10:19:10ID:???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:???多少の違いはあるかもしれんが、
ほとんどのプログラマは「普通」の感覚があると思うぞ。
0586nobodyさん
2009/07/06(月) 15:21:41ID:???2文字じゃ困るって話じゃないかな
0587nobodyさん
2009/07/06(月) 17:07:12ID:???0588nobodyさん
2009/07/06(月) 18:09:23ID:???とくに年寄りにその傾向があるようだ
0589nobodyさん
2009/07/07(火) 03:00:09ID:???ソースはけっこう汚いこともあるよ(ロジックが汚いという意味ではない)
インデントとかコメントのルールとか、全然統一取れていないこともある
NTT 系の仕事だったら、NTT のやつらに絶対だめ出し食らうレベル
>>588
Linux(Unix)が開発環境となっている環境(CとかPHP/Rubyが多いかな)は、
・インデントはタブ
・vi なり Emacs で、タブ幅を4
を前提というかコーディング規約にしているところは多いね。
そういうのをWindowsのエディタや Eclipse で見ると崩れて見える。
(設定すればいいのだが)
んで、文句をいうと袋だたきにあう
どっちがいいか、というのではなく、文化というか習慣の問題だと思うが
0590nobodyさん
2009/07/07(火) 08:29:50ID:???# 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:???Windows使ってるから特別にデフォルトでも4タブが崩れないようにしろって主張は、
ちょっと意味がわからない。
■ このスレッドは過去ログ倉庫に格納されています