トップページ⇒php
993コメント316KB

【Ruby】Ruby on Rails Part3

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/02/06(火) 20:10:09ID:nOZh/PU9
Rubyのweb application frameworkである
Ruby on Railsに関するスレッドです。

<英語>
本家: http://www.rubyonrails.org
API: http://api.rubyonrails.com/
Documents&Tutorials: http://documentation.rubyonrails.com/

<日本語>
Rails' wiki: http://wiki.fdiary.net/rails/


前スレ
【Agile】Ruby on rails相談所 part2【DRY】
http://pc10.2ch.net/test/read.cgi/php/1151254378/
0693nobodyさん2007/07/09(月) 20:33:45ID:ypOM/m4j
>>688
はい。どうもです。
で例えば、MySQLのbigintだと最大値は9223372036854770000の用ですが、
idをココまで使っちゃうとどうなっちゃうのかなぁ?と。
ま、気の遠くなる様な大きさですが。
06946932007/07/09(月) 21:08:13ID:???
>ま、気の遠くなる様な大きさですが。
こんなの見つけた。
ttp://blog.livedoor.jp/nipotan/archives/10116601.html
漢は黙ってbigint。私みたいな厨房は黙ってRails使えって事か。
ActiveRecordのソース眺めても何にも気にしてない気がする(←自信なし)
0695nobodyさん2007/07/09(月) 21:21:33ID:???
おそらく先にディスクI/Oで死ぬかディスクの容量が足りなくなるので
気にしなくていいと思う。
06966932007/07/09(月) 21:30:05ID:???
>>695
> 気にしなくていいと思う。
pragmaticってこういう事なのかぁ…って思った。
0697sage2007/07/09(月) 22:45:52ID:pNke+qhj
セッションがタイムアウトした瞬間に、
Railsから指定のメソッドが呼び出されるようにする機構はありますか?
0698nobodyさん2007/07/09(月) 22:54:13ID:???
>>693
試してみればいいんじゃないか?
insert into items (id ) values(9223372036854770001);
とか、SQL打って。Postgresqlだと、
ERROR: integer out of range
ってエラーが出たよ

>>692
JavaScriptだけで動いてるから、Rails関係ない。エラーコンソールでも見れ
0699nobodyさん2007/07/09(月) 23:26:27ID:???
レイアウトで
<%= stylesheet_link_tag 'default' %>
が、
<link href="/stylesheets/default.css?(数字たくさん)" media="screen" rel="Stylesheet" type="text/css" />
という出力になります。
css?のあとの数字たくさんは何なのでしょうか。
development環境だけかと言えばそんなことはないし…。
しばらく前から気になって夜も寝られます。
0700nobodyさん2007/07/09(月) 23:40:41ID:???
Version
0701nobodyさん2007/07/09(月) 23:50:35ID:???
>>699
ブラウザがCSSをキャッシュしないよう
強制的にリロードさせるようにするためじゃね?
0702nobodyさん2007/07/10(火) 00:31:25ID:???
キャッシュされるのを抑制するために問い合わせ文字列をつけている。
0703nobodyさん2007/07/10(火) 00:32:10ID:???
つーか寝られるなら気にするな。

07046992007/07/10(火) 05:56:31ID:???
>>700-703
優しい人ばっかりだな!
キャッシュ抑制という発想はなかったわ。
ありがとね。
07056922007/07/10(火) 12:26:12ID:???
理由がやっとわかった
GeocoderはGoogleMapsAPIの認証キーを厳密にチェックしてて、
Railsをローカルで動かすと登録したURLと一致しないということではじかれてた
地図は適当なキーでちゃんと表示されてたのでそこまで気にしてなかったなあ
0706nobodyさん2007/07/12(木) 17:28:19ID:????2BP(0)
RubyConfで出た統合開発環境って情報出ないね
EcripsベースってRadRailsとどう変わるんだろ?
最近、仕事で色々エディタ使ってるけど、楽しいものがないんだ。

書いてて楽しいと思えるものは、みなさんだと何でしょ?
私はWinだとEmEditer
LinuxだとEmacsです
0707nobodyさん2007/07/12(木) 17:31:15ID:???
vim
0708nobodyさん2007/07/12(木) 18:07:55ID:???
国際化するにはどうするのがよいのでしょうか?
0709nobodyさん2007/07/12(木) 18:20:16ID:???
gettextで
0710nobodyさん2007/07/12(木) 18:37:57ID:???
magic_model_generator というのをgemで見つけて試してみたのですがエラーになってしまいます。
使ったことある人いますか?

$ ./script/generate magic_model
undefined method `table_name' for Transaction:Module
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
....(省略)

$ rails -v
Rails 1.2.3
0711nobodyさん2007/07/12(木) 22:21:24ID:???
Netbeans の Ruby版
0712nobodyさん2007/07/12(木) 23:19:25ID:???
komodo edit使ってる
komodo ideほしいけど金無し
0713nobodyさん2007/07/15(日) 01:05:03ID:gojNHc9A
Functional Test(たとえばuser_controller_tes.rb)でsession[:user_id]とかできないんだけどどうしたらいい?
sessionはHashじゃなくてArrayだって言われてしまう。
Functional Testではどうすればsession上の変数を扱えるの?
0714nobodyさん2007/07/15(日) 01:10:41ID:???
小さいプロジェクトなのでapplication.rhtmlにヘッダ、フッタを書いて済ませていたのですが
rssを付ける段になってコントローラに
layout nil, :only => :rss
と書いたところ、同じコントローラの別アクションもレイアウトがかからなくなってしまいました。
逆に
layout "application", :except => :rss
と書けば大丈夫なのですが、この辺の仕組みが分かる方おいでます?
0715nobodyさん2007/07/15(日) 01:28:18ID:???
モデルにバリデータが着いちゃってるけど、
この画面の段階ではいらないけど、
このときには必須になるみたいなケースな場合どうするの?
0716nobodyさん2007/07/15(日) 12:14:32ID:???
>>713
一度何かリクエスト/レスポンスのやりとりをしないとセッションが出来ないかも。

>>714
コントローラの属性テーブルに "layout" => 名前 というペアを挿入する形なので、
名前がnilだと親コントローラに探しに行ってしまうんじゃないかしらん。

>>715
validates_xxx :on => :update とかでは対応できないのなら、
自分で validate メソッドを書く。
「xxxがnilでないときのみyyyもnilでないこと」みたいなのも確認しほうだい。


0717nobodyさん2007/07/15(日) 12:18:19ID:???
714を読み間違ったみたい。忘れて。

0718nobodyさん2007/07/15(日) 19:14:52ID:???
>>713 は、@request.session て話では
0719nobodyさん2007/07/15(日) 20:42:23ID:???
>>716
ありがと!
0720nobodyさん2007/07/19(木) 01:37:07ID:???
1.8.5と1.8.6の互換性に触れると「Railsが悪い」と言うくせに、
Rubyって何に使えるのと聴くと「Railsが凄い」と言う…
0721nobodyさん2007/07/19(木) 15:05:24ID:???
それだけ影響力があるってことだろう
0722nobodyさん2007/07/19(木) 18:50:40ID:???
レコードを更新したいけど、updateo_onフィールドを一時的に更新させないようにする方法は
ありますか?
0723nobodyさん2007/07/19(木) 18:51:55ID:???
ActiveRecord::Base.record_timestamps = false
ですね。はずかしすぐる・・・
0724nobodyさん2007/07/19(木) 21:58:27ID:oZlZzBRy
DelWiki - Senro
http://delwiki.info/?Senro

> Delphi と Ruby on Rails と SQLite の組み合わせで簡単に
> ローカルデータベースアプリケーションを作るプロジェクトです。

DelphiとRailsの夢のコラボ

0725nobodyさん2007/07/19(木) 22:06:44ID:???
Delphiを今使うメリットってなんですの?
0726nobodyさん2007/07/20(金) 01:44:41ID:???
CakePHPもある今、遅いRailsを使うメリットってなんですの?
0727nobodyさん2007/07/20(金) 02:22:36ID:???
CodeIgniterもある今、遅いCakePHPを使うメリットってなんですの?
0728nobodyさん2007/07/20(金) 02:28:01ID:???
紙とえんぴつがあるのに、コンピュータを使うメリットってなんですの?
0729nobodyさん2007/07/20(金) 06:10:33ID:???
紙とえんぴつじゃ遅いからじゃないかな
0730nobodyさん2007/07/20(金) 09:37:02ID:???
最近えんぴつが品薄だから
0731nobodyさん2007/07/20(金) 09:58:34ID:???
えんぴつは使うのが難しいからじゃないかな
0732nobodyさん2007/07/20(金) 11:18:05ID:???
えんぴつをナイフできれいに削れるヤツは少ないだろ
0733nobodyさん2007/07/20(金) 15:02:05ID:???
>>728
君が今、周りを見渡して、鉛筆とPCとどっちが先に見つかる?
0734nobodyさん2007/07/20(金) 15:32:21ID:???
>>733
それ無茶だろwwww
0735mod_fastcgi2007/07/20(金) 19:54:32ID:DvId2R7o
apache上で動かすと死にそうなぐらい遅いのですが
対策方法ってあるのでしょうか?

環境は
ruby 1.8.6
apache 1.3
windowsXP
です。。。

InstantRailsでインストールしました。

OSを変えるべきなんでしょうか?
0736nobodyさん2007/07/20(金) 20:18:53ID:???
webrickかmongrelでやればいいんじゃね
(fastじゃない)cgiでrailsはどうやっても重過ぎて使えないよ無理
0737nobodyさん2007/07/20(金) 22:11:09ID:???
mongrelお勧め。
まぁRailsのアプリだけならね。

lighttpdも合わせて使うと良いと思われ
0738nobodyさん2007/07/20(金) 22:15:19ID:???
うちはapache(mod_proxy)とmongrel(railsアプリはこれで動かす)の連携。
0739nobodyさん2007/07/20(金) 23:16:36ID:???
実際にrailsアプリを公開しようとすると
実質(apache+)lighttpd + fastcgiか
apache + mongrelってことなんだろうけど、
この環境が無料あるいはワンコインレベルの共有サーバで
使えるようになる日はくるのかね

xreaとかでもfastcgiはリソース使用量が高いっていう理由で
サポートされてないんだけど、それは多分fastcgiが
プロセスを死なせず常駐させるような仕組みだからだと思うんだけど
それが速い理由だからfastcgiは無理っぽいし
mongrelだとmongrel自身がhttpdだから
それぞれのユーザがデーモンを常駐させる必要があるし、
結局そういう流れでrailsに特化して最適化したサーバが
必要で国内にもいくつかあるみたいだけど
やっぱりワンコインみたいな気軽に借りれそうなところは無い

ほんと後はこの壁だけだと思うんだよ
PHPのような普及に至るためには
railsももちろんそうだけど、
webでrubyを気軽に使える世界になって欲しいんだよな
無料サーバでもすぐに使えますみたいな
rubyって楽に素直に書けるから

長文になってしまった失礼
0740nobodyさん2007/07/20(金) 23:29:17ID:???
Rails環境を整えることでビジネスチャンスに繋がるということを
認識できるレンタルサーバ業者がどれだけ出てくるかという事だろね。
ロリポもはやくRails対応してー。
0741nobodyさん2007/07/21(土) 07:25:24ID:???
mod_ruby が安定したり、phpみたいにセーフティーモードがあれば組み込むんだけど
0742nobodyさん2007/07/21(土) 07:28:09ID:???
しかし、Railsを使おうと思ったら現状デーモンを常駐させないと使い物にならんしねぇ。
俺がレンタル鯖屋さんだったら、1ユーザ・1デーモンのサービス開始しようとは思わないなぁ。
むちゃくちゃリスキーな訳だし
0743nobodyさん2007/07/21(土) 10:04:41ID:???
vpsでいいじゃん。rapidvpsとかなら1000円ちょいだろ?
0744nobodyさん2007/07/21(土) 15:20:18ID:???
> 俺がレンタル鯖屋さんだったら、1ユーザ・1デーモンのサービス開始しようとは思わないなぁ。

1個で良いの?www
0745nobodyさん2007/07/21(土) 20:04:31ID:UNPvyq3t
http://jp.rubyist.net/magazine/?0004-RubyOnRails
を参考に、 connections\native_mysql\connection.rb を修正、
$ ruby -I "connections/native_mysql" base_test.rb
を行ったのですが、以下の部分(base.rb:1031)でのエラーが多数でます。

ActiveRecord::RecordNotFound: Couldn't find Topic with ID=1
./../lib/active_record/base.rb:1031:in `find_one'
./../lib/active_record/base.rb:1014:in `find_from_ids'
./../lib/active_record/base.rb:419:in `find'

base.rb の def find_one(id, options) の部分を見てみたのですが、いまいちよく分かりません。どう訂正すればいいのでしょうか。

環境は、win xp, xampp 1.6.2 で、One-Click Ruby Installer 1.8.6-25 ( 1.8.5-24 でも同じエラー ), Rails 1.2.3 です。
0746nobodyさん2007/07/21(土) 20:22:34ID:???
テーブルは作った?
07477452007/07/21(土) 21:05:02ID:UNPvyq3t
> 746
ありがとうございます。http://jp.rubyist.net/magazine/?0004-RubyOnRailsで、
$ mysql -u root activerecord_unittest < test/fixtures/db_definitions/mysql.sql
$ mysql -u root activerecord_unittest2 < test/fixtures/db_definitions/mysql2.sql
の部分ですよね?やりました。

あと、activerecord_unittest.topics.author_name で
\ r '
\n "
という項があるのですが、エラーと関係ありますかね?
0748nobodyさん2007/07/21(土) 22:43:56ID:???
エラーメッセージはfind()でidから1件取得で
失敗した時のだから単純にfixturesが入ってないとか
テーブルができてないとかだと思ったんだけど、、、

テスト結果がほぼ全コケなら
そういう感じの単純な理由だと思うけど
中途半端だとなんとも
railsのテスト周りはwindows環境でもちゃんとチェックされてんのかなあ
07497452007/07/21(土) 23:04:27ID:UNPvyq3t
> 748
レスありがとうございます。

# base_test.rb テスト結果

手許のxp、二台で試してみたのですが、同じ結果でした。

> 137 tests, 318 assertions, 9 failures, 39 errors

errorについては、すべて base.rb `find_one'がらみです。

とりあえずrailsのバージョン変えて試してみます。
0750nobodyさん2007/07/21(土) 23:11:28ID:???
とりあえずスタックトレースが出るんだからどこで何が悪いのかはわかるんじゃないの?
0751nobodyさん2007/07/22(日) 11:58:13ID:???
そのテストだけでfixturesを指定し忘れてるとか。
testrbで通ってrakeで通らないとか、その辺は大抵それが原因な気がする

find_by_sqlで"SELET * FROM table_name WHERE id = 1"してやっぱりヒットしないようなら
RailsとかARの問題じゃなく、アプリかテストの問題だよ。
(find(id)でAR::RecordNotFoundが挙がるのは仕様)
0752nobodyさん2007/07/23(月) 03:39:14ID:???
test/functional のテストコードで、
RESTっぽいコントローラーのテストをしたいんだけど、
query string の内容を直接指定してgetとかpostとかを発行する
のってどうすればいいの?

つまり、いわゆるparam=value形式じゃなくて、request.raw_postで
取れる値を直接流し込みたいんだけど
0753nobodyさん2007/07/23(月) 11:22:15ID:???
TestRequestにenvセットしたら取れた

@request.env['RAW_POST_DATA'] = 'foo'
0754nobodyさん2007/07/23(月) 11:46:41ID:???
>>753
�d
0755nobodyさん2007/07/23(月) 17:33:20ID:Y5zBlasD
JOINしたテーブルのデータを列挙するモジュール作っていますが。
A テーブルに B テーブルを JOIN した場合
どのように受け渡して表示すればうまくいくでしょうか?


0756nobodyさん2007/07/23(月) 19:43:24ID:???
普通にfindで :join で連結するテーブル指定して
:select で表示したいcolumn指定すれば取れると思うが
07577552007/07/24(火) 11:56:14ID:BEyPYoNf
>>756
普通にJOINしたカラムをモデル.カラム で取得できました。
ありがとうございました。

RailsでPDFで帳票出力したいんですが、皆さんは
帳票ライブラリはナニを使ってますか?
0758nobodyさん2007/07/24(火) 14:46:34ID:???
初めて英語で技術書読んでるけど
アジャイルRailsの本読みやすい英語だね。
0759nobodyさん2007/07/26(木) 01:17:08ID:???
引数付きのURL、例えばhttp://example.com/main?query=1234
をキャッシュする方法はありますか?
普通にやったら引数は保存されませんでした。
07607452007/07/26(木) 12:12:41ID:DIyctI7v
>750,751
ありがとうございます。もうちょっと色々と勉強してみます。
0761nobodyさん2007/07/26(木) 21:20:21ID:???
>>759
ページキャッシュかな?

ページキャッシュはrailsアプリを通らず、完全にHTTPサーバレベルで
処理されるので、Rails側では何もできないと思う。
apacheのmod_rewriteで工夫できそうな気もするけど。
0762nobodyさん2007/07/27(金) 01:30:38ID:???
>>761
そうでしたか・・・。ありがとうございます。
0763nobodyさん2007/07/27(金) 11:22:56ID:???
便乗質問ですが、そうするとページネータで作る二ページ目以降はキャッシュされないってことでしょうか?
0764nobodyさん2007/07/27(金) 13:17:36ID:???
スレチかもしれないけど質問。

Aptana IDEを使ってみようと思ってインストしたんだが、
これってDB指定でgenerate出来ないのかな?
デフォではMySqlになっているんだが、俺はSQLite3でやりたいんだが……

まぁ自分でコマンドうってから、プロジェクトをインポートすればいいんだが、
それだとIDEの意味ないだろ、と。

誰かこの辺りについての情報お持ちの方いたら教えてください。
0765nobodyさん2007/07/27(金) 22:01:20ID:???
>>763
ページがURLの一部になるような規則をroutes.rbに書けばいい。
0766nobodyさん2007/07/27(金) 22:39:29ID:???
よっぽどページ数とアイテム集合が変動しない代物でもない限り、
フラグメントキャッシュでやるほうが適しているかもしれんね。
0767nobodyさん2007/07/27(金) 23:38:50ID:???
>>765
そっか、?page=は固定だからrouteで指定できますね
0768nobodyさん2007/07/28(土) 07:24:43ID:AhK16ONh
viewの中で、そのviewのcontroller名とaction名を取得したいんですが、どうすればいいでしょうか?
0769nobodyさん2007/07/28(土) 11:08:31ID:???
>>768
レンダングする前にアクション内でcontroller_nameとか
controller_pathとかcontroller_class_nameとかaction_nameを
インスタンス変数に入れておけばいいんじゃない?
0770nobodyさん2007/07/28(土) 11:12:30ID:???
viewにはcontrollerへのアクセサがあるから、

controller.controller_name
controller.action_name

で参照できるはず、多分
0771nobodyさん2007/07/28(土) 14:11:17ID:???
params[:action]とかで取得できない?
0772nobodyさん2007/07/28(土) 14:39:47ID:???
paramsの中身をどう使うかはルーティング規則次第だから
:controller/:action/:id 以外を使ってるとうまくいかないかも。
07737722007/07/28(土) 14:43:33ID:???
失礼、最終的には :controller と :action を補って呼び出すんだから大丈夫か。
07747682007/07/28(土) 23:52:59ID:AhK16ONh
おおっ、みなさん有り難うございます。
>>769
それも考えたのですが、それだと、逐一コードを書かないといけなくなるので、
面倒だな、とスルーしてました。

>>770
バッチリでした。
欲していたもの、そのものです!

>>771
こちらも、ルーティングを変更していない状態での、正常動作を確認しました。
ルーティングを書き換えた状態では確認してませんが、
>>773 のおっしゃる通り、問題ないように思えます。

有り難うございました。
0775nobodyさん2007/07/28(土) 23:59:05ID:???
>>764
Aptanaもgenerateも全く関係ない。railsの基本です。
config/database.yml 書き換える。
0776名無しさん@そうだ選挙に行こう2007/07/29(日) 02:09:09ID:???
そりゃ基本ではあるが、コマンドラインからだと
rails myproject -d sqlite3
で済むんだから、IDEにもオプションあってもおかしくないよな。
0777名無しさん@そうだ選挙に行こう2007/07/29(日) 19:13:41ID:????2BP(0)
>>775

776の言う通り、オプション指定できないのかな、と
0778名無しさん@そうだ選挙に行こう2007/07/29(日) 19:25:22ID:???
最初からlinuxの仮想環境作って
emacsやvimでやりゃいいのに
rails使うモチベーションがあるのに
window使ってたりとかIDEで開発してる人の気持ちは俺にはわからん
0779名無しさん@そうだ選挙に行こう2007/07/29(日) 19:46:46ID:???
(´・ω・`)帳票はやはりRoRには向かないのでしょうか?
0780nobodyさん2007/07/30(月) 01:38:42ID:???
>>779

なぜそう思うかを 400字以内で述べよ。

0781nobodyさん2007/07/30(月) 01:41:03ID:???
>>778

linuxの上でも eclipseで開発しているやつなんてごまんといる。
別に何つかったってかまわないさ。

などという俺はwindowsの上に cygwin + meadow という変態だが、
同じ環境を他人に勧めようとはおもわん。この環境がなじむやつは、
すすめる前に自分で普通に使ってるはずだから。

0782nobodyさん2007/07/30(月) 02:06:29ID:???
>>780
帳票ツール何つかってますか?ってレスが0だったので。。。
0783nobodyさん2007/07/30(月) 02:17:54ID:???
Excelで帳票出力、以前やってみよーと思って調べたことがあるんだけど、

ruby ole32
→Linuxで動かないんじゃね?

spreadsheet-excel
→んー。難しい制御できるのかなぁ

ActiveWebService+Office XP Web Services Toolkit 2.0
→SOAPよりRESTでやりたいなぁ。


で、結局、帳票出力自体めんどくなってやめちゃった。
なんだかお仕事ライク過ぎる処理を遊びで書くのがアレになってしまtって

でも、お仕事でRailsつかうならいい帳票出力探したいところだねぇ。PDFとかExcel(OpenOffice含)とか。

なんかないのかしら。
0784nobodyさん2007/07/30(月) 02:37:52ID:???
>>783
一応、RoRのHPに色々書いてあってJasperReport使えるっぽいこと書いてあったんですが
まだ、RoRに慣れてないため、実験コード書けないッス。。。
http://wiki.rubyonrails.org/rails/pages/HowtoIntegrateJasperReports

ちと、RoR自体を使いこなせるようになってから使ってみます。
0785nobodyさん2007/07/30(月) 23:01:53ID:???
"Ajax on Rails"って本ってどーですか?
Rubyクックブックの評判が悪かったのでオライリーの本ってどうなのかなぁ?と。
0786nobodyさん2007/07/31(火) 00:32:45ID:???
オライリーは中身でなく見た目で買ってる。(ダメすぎ)

本棚にオライリーが並んでるだけで賢そうに見えるじゃない?

そういう意味では、Ajax on Railsも買い。自分的には。
0787nobodyさん2007/07/31(火) 11:32:17ID:???
主キーが2つ以上ある場合、set_primary_keyで複数のキーを指定する書き方ってどうするの
0788nobodyさん2007/07/31(火) 11:38:07ID:???
railsは複合キーをサポートしてないと思うけど
0789nobodyさん2007/08/01(水) 16:29:23ID:???
Railsで2時間でつくったプログラムを
サーバに設置するのに3時間苦労してる俺
0790nobodyさん2007/08/01(水) 16:54:45ID:???
2回目以降が10分になればそれでいいんだよ
そのためのrubyとrailsだ
0791nobodyさん2007/08/01(水) 17:13:29ID:???
>>790
惚れた
0792nobodyさん2007/08/01(水) 18:35:13ID:???
ブログっぽいモデル構造で1対多の関連付けを行ってる部分があるんだけど、
例えば親メッセージをblog、子メッセージをpostとした場合に
blog.posts とすれば親メッセージにぶら下がってる子メッセージが取れる筈だし、
実際にそれで動いている。

ところが、投稿されているメッセージ全件を対象とした集計処理を行った後だと、
blog に posts というメソッドが見つからないというエラーが出るorz
ちなみに件数は、blogが15件、postが600件ほど。

いったい内部では何が起こってしまったの?
■ このスレッドは過去ログ倉庫に格納されています