トップページ⇒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/
0002nobodyさん2007/02/06(火) 21:16:13ID:???
今すぐ始めるRubyガイド
http://i.loveruby.net/ja/rhg/book/index.html
http://www.aoky.net/articles/why_poignant_guide_to_ruby/
0003nobodyさん2007/02/07(水) 00:48:22ID:???
>> 1乙
0004nobodyさん2007/02/08(木) 00:16:00ID:???
>>2
2番目のサイト意味わからんよ・・・
0005nobodyさん2007/02/08(木) 10:50:32ID:???
>>4
Rdocは多分いちばんお世話になる情報じゃないか?
いったいナニがわからないんだ?
0006nobodyさん2007/02/08(木) 10:55:12ID:???
>>5
>>1のじゃなくて>>2のようだが。
0007nobodyさん2007/02/08(木) 11:14:28ID:???
そうか、ごめんよ >>4
0008nobodyさん2007/02/08(木) 11:33:24ID:???
>>4
1番目のサイトも意味わからんな。今すぐ始めるRubyガイドにはならんだろ。
0009nobodyさん2007/02/08(木) 11:38:37ID:???
ならないな。Cで書かれたRubyのソースコードを解説してる。
001022007/02/08(木) 12:16:23ID:???
2ゲット、すみませんでした。
0011nobodyさん2007/02/08(木) 20:22:43ID:???
rake test
ってやるとdevelopmentのテーブル構造でtestデータベース作ってくれるんだけど、
各カラムに勝手にdefault属性をつけてくる。(MySQL)
それは便利なこともあるからいいけど、text属性にまで付けようとして落ちる。
textはdefault値もてないから。どうしたもんかな。
0012nobodyさん2007/02/09(金) 00:11:43ID:???
>>11
migrateのスクリプトがおかしいだけとか?
0013nobodyさん2007/02/09(金) 15:14:40ID:0o4zhHm/
ルビ厨、無様〜(w
http://blog.japan.cnet.com/kenn/archives/003556.html
0014nobodyさん2007/02/09(金) 23:40:28ID:???
↑マルチ

さてrailsの導入段階で失敗してる俺はふて寝する
0015nobodyさん2007/02/10(土) 00:34:15ID:???
fastcgiの導入の面倒さは特記すべき
0016112007/02/10(土) 11:39:06ID:???
1.1.6だからかな。同じ事が起きるか誰か試してちょ。
0017nobodyさん2007/02/10(土) 20:36:21ID:???
まぁ、Rubyが「書く楽しさ」とか曖昧で基準の無いアピールに逃げてるのも、
ひとえにその辺の「現実的な力における存在価値の無さ」ゆえだからな。
0018nobodyさん2007/02/10(土) 23:06:27ID:???
railsユーザはメインでは何使ってる気になる
perl?php?java?
0019nobodyさん2007/02/10(土) 23:42:55ID:???
言語なんて適材適所だからメインなんて聞かれてもなぁ。
0020nobodyさん2007/02/11(日) 01:10:00ID:???
バッチ系はperl、いにしえの遺産はC、shell scriptも少々。で、メインはphp

で、最近バッチ系をrubyにしようとしたら阻止されたw
0021nobodyさん2007/02/11(日) 01:30:06ID:???
まずはpythonだろ。常識的に考えて。
0022nobodyさん2007/02/11(日) 02:43:26ID:???
なんで?
0023nobodyさん2007/02/11(日) 09:57:44ID:???
日本じゃマイナーすぎ>ぱいそん
本もほとんどないしrubyより嫌がらそう。
railsを皮切りにrakeも普及してシェルやバッチもrubyで、というふうになればいいな。
0024nobodyさん2007/02/11(日) 11:00:25ID:???
ちょっとした自動化処理をPerlやRubyで書いた後、パズルの意味も兼ねて
シェルスクリプトで再実装してみることはあるな。
0025nobodyさん2007/02/11(日) 13:06:44ID:U7k+fpd+
質問おけ?
routes.rbで
map.connect ':controller',
:action => 'index'
map.connect ':controller/:id',
:action => 'show',
:requirements => {:id => /[\d]+/}
map.connect ':controller/:action/:id'
って書いて、例えば
http://localhost:3000/user
にアクセスしたら
user_controller#indexが呼ばれるようにしたいのに
user_controller#showが呼ばれて「Couldn't find User without an ID」って言われてしまうのはなぜ?
どこがおかしいの?
0026nobodyさん2007/02/12(月) 00:46:35ID:???
railsでPDFを扱いたいんだけど
rjbからブリッジしてFOPで出力っていうのはできるかな?
0027nobodyさん2007/02/12(月) 01:23:11ID:???
>>25
んー、こっちじゃ期待通りに動いてるなー。
0028nobodyさん2007/02/12(月) 21:06:58ID:???
>>24
オフラインのホストとかの場合モジュールのインストールとか依頼するの面倒だから
バッチはシェルで書いちゃうな。それはもうゴリゴリと。
自動テストもMakeとシェルで書くぜ。

逆にシェルで書いた奴をPerlとかで書きなおしてみたことはあるよ。
0029nobodyさん2007/02/12(月) 21:17:12ID:???
お前らの趣味について質問しているわけではないのだけどね。w
0030nobodyさん2007/02/13(火) 07:35:50ID:QEaruDuK
質問です。
プロジェクトフォルダ直下の画像ファイルを読み込みたいんですが、どう設定したらよいでしょうか?
"..\..\hoge.jpg"としてもうまくいきません。
0031nobodyさん2007/02/13(火) 07:38:02ID:???
画像を置く場所が間違ってる
0032nobodyさん2007/02/13(火) 08:04:20ID:QEaruDuK
>>31
生成した画像ファイルがプロジェクトファイル直下にできるのでpublic\imageに移動させたいんですが、移動させかたがわからないんです。
0033nobodyさん2007/02/13(火) 09:58:57ID:???
RAILS_ROOT + '¥hoge.jpg'
0034nobodyさん2007/02/13(火) 10:26:25ID:???
>>33
せめて FIle.join
0035nobodyさん2007/02/13(火) 14:24:56ID:QEaruDuK
>>33,>>34
ありがとうございました。
結局画像ファイルをpublicフォルダに移して解決しました。
0036nobodyさん2007/02/15(木) 00:55:33ID:???
rails1.2.2って意外と多くの変更があるような稀ガス
0037nobodyさん2007/02/15(木) 01:04:14ID:???
>>33-34ていうかFile.joinでないと、いざunix環境もっていったときに動かなくなるよね
0038nobodyさん2007/02/15(木) 01:20:09ID:???
pathname.rbは便利なんだがWindowsではツカエネーしなー。
0039nobodyさん2007/02/15(木) 13:45:02ID:???
win環境でサンプルアプリを作ってるんだけど
rubyやdbの文字コードをsjisにしても
server起動してブラウザで画面表示させると
必ずutf8になって文字化けして困ってます。
画面遷移する度にブラウザでエンコード変更
すれば一応正常に表示されるので確認だけなら
OKなんだけど・・・
どこか設定を変更すればsjisで初期表示できたりするものですか?
0040nobodyさん2007/02/15(木) 13:52:38ID:???
コントローラのフィルタで@headers['Content-Type']をソレナリに
設定するとか。

0041nobodyさん2007/02/15(木) 13:59:49ID:???
今さら好んでcp932使う意味あるの?
0042nobodyさん2007/02/15(木) 14:42:31ID:???
メモ帳でコード書いてるとか
0043nobodyさん2007/02/15(木) 15:11:04ID:???
最近はメモ帳でもUTF-8の読み書きできた気がする。
0044nobodyさん2007/02/15(木) 15:29:00ID:???
見てみたら、保存時にUTF-8指定できた
0045nobodyさん2007/02/15(木) 15:34:24ID:???
ケータイ用コンテンツとか?
0046nobodyさん2007/02/16(金) 00:23:18ID:???
まあ勝手にBOM付けられたりすることもあったり無かったり。
0047nobodyさん2007/02/16(金) 08:12:32ID:???
>>39
Railsで、sjisはねーだろw
0048nobodyさん2007/02/16(金) 08:31:34ID:???
携帯のみ対応なら、db、ソースともsjisなら変換が要らないという理屈もあるけどな。。。
0049nobodyさん2007/02/16(金) 10:30:51ID:???
>>47
Rails ってエンコーディングの設定変更もできないんだ。使えねーな。
0050nobodyさん2007/02/16(金) 12:35:26ID:???
>>40を具体的に書くと

# ApplicationController
before_filter :set_charset
after_filter :convert_to_sjis

private
def set_charset
@headers['Content-Type'] = 'text/html; charset="Shift_JIS"'
end

def convert_to_sjis
@response.body = NKF.nkf('-WS -m0 -x', @esponse.body)
end

つーか携帯ならActiveHeartプラグインも入れた方がいいんじゃね。
名前が体を表してないのが気に入らんが。
0051nobodyさん2007/02/16(金) 13:01:13ID:???
ActiveHeart ってそういうのに使えるんだ。
名前だけ聞いてキショかったんでそれ以上調べようとも思ってなかった。
0052nobodyさん2007/02/16(金) 14:22:12ID:???
ActiveHeartに入ってるのは、
validationのメッセージの日本語化。
メーラのISO-2022-JP化。
セッションIDをURLに自動的に付け、formにhiddenで埋め込む。
の3つだった。

上2つはgettextでもできるな。
最後のが携帯向けだた。
0053nobodyさん2007/02/17(土) 02:44:13ID:???
>>39
script/server -c Shift_JIS

1.2ならenvironment.rbの後ろのほうに
$KCODE = 'SJIS'
ActionController::Base.default_charset = 'Shift_JIS'
1.1.6ではこのcharset指定はできないので注意。
0054nobodyさん2007/02/17(土) 22:47:51ID:LiRd38e4
scaffold とかで作った編集画面で、データベースから引っ張ってきた 1000 個くらいの選択肢を選択させたいんです。
option で選択させるのではなく、別ウィンドウが開いて検索して選択できるようなお手軽な方法はありますか。
0055nobodyさん2007/02/18(日) 02:31:55ID:???
scaffold(足場)は本格使用のためのものじゃなく、あくまでとっかかり的なもの。
最終的には自前のコードで置き換えて消滅する立場の物なので、あまり凝った物
にはなってないし期待すべきでもない。

Railsが提供する範囲だと、auto completionが使えたりしないのかな?

0056nobodyさん2007/02/18(日) 08:36:10ID:???
ありがとうございます。
auto completion ちょっとためしてみます。
0057nobodyさん2007/02/18(日) 13:44:48ID:???
例外発生したときの既存のエラー画面のテンプレートはどこにあるのかにゃ。
それともハードコーディングされてるのかしら。
0058nobodyさん2007/02/18(日) 13:58:04ID:???
>>57
action_controller/rescue.rbの
template_path_for_local_rescue(exception)メソッド
かな。

呼ばれるrhtmlは
action_controller/templates/rescues
にあるようです。
0059nobodyさん2007/02/19(月) 08:38:45ID:???
ruby script/server でデフォルトではMongrelが立ち上がるけど、
Windows環境ではMongrelがコンソールに出力するメッセージにエスケープシーケンスが混ざっており、
これがWindowsのコンソールでは適切に認識できないみたく、表示が見にくくなっている。
回避方法がわからないので、Webrickを選んでいるけど、なんか解決方法ありますか?
0060nobodyさん2007/02/19(月) 09:40:03ID:???
>>59
config/environment.rbなどで
config.active_record.colorize_logging = false
0061nobodyさん2007/02/19(月) 11:43:23ID:???
>>60
おお、ありがたい。うまくいった。感謝!
0062nobodyさん2007/02/19(月) 14:58:52ID:???
Exception継承して独自の例外クラス作ったんだけど、これはどこに置くべき?
modelに置いたけど何か違うような気モス。
0063nobodyさん2007/02/19(月) 15:07:00ID:???
lib/ じゃないかな。
0064nobodyさん2007/02/19(月) 18:04:06ID:XuEA94+B
入力の際に電卓のように右側から数字が出て3桁ごとにコンマが出るようにする良い方法を知ってる方
いたら教えて下さい。ヒントでもOK
0065572007/02/19(月) 18:09:30ID:???
>>58
どもです。助かりました。
0066nobodyさん2007/02/19(月) 18:17:20ID:???
コンマ付きの数値に整形するには数値を文字列化した上で
true while x.sub!(/(.*¥d)(¥d{3})/, '¥1,¥2')

右寄せで表示するのはスタイルシートの仕事かな。

0067nobodyさん2007/02/19(月) 18:48:02ID:???
「入力の際に」ってことだから違うような。
0068nobodyさん2007/02/19(月) 19:22:12ID:???
Javascriptでも似たような置換できたはず。
0069nobodyさん2007/02/19(月) 19:43:40ID:???
>>62
Exceptionなんて継承しちゃダメ!
Rubyで独自例外を作るときははStandardErrorを継承するのが作法。
0070nobodyさん2007/02/19(月) 22:07:08ID:???
javascriptが良いような
0071nobodyさん2007/02/19(月) 22:29:30ID:???
>>68
できるよ。かなり面倒臭いけど。
0072nobodyさん2007/02/20(火) 21:09:32ID:???
1.1.6なんだがflashのassertがうまくチェックできない
postしたあと
assert_equal "hoge", flash[:notice]
とかやるが、flash[:notice]の中身はnil。
何か仕様がかわったのかな。
0073nobodyさん2007/02/25(日) 03:05:10ID:J8TZXx7l
HAML使いたいんだけど、
gem install haml
ってインストールしただけだと、
Railsから使えないんだけど、
Railsでは、どう設定したらいいんだろう。。
0074nobodyさん2007/02/25(日) 03:34:09ID:???
require 'haml' ?
0075nobodyさん2007/02/26(月) 00:22:23ID:uf+U74ev
<%= date_select 'hoge[]', 'fuga' %>
ってまともに出力しなくない?
0076nobodyさん2007/02/28(水) 20:41:31ID:???
>>75
date_select "hoge", "date"
にしてみたらどう?

それにしてもこのスレ、活気ないな
0077nobodyさん2007/02/28(水) 22:24:36ID:???
これくらいまったりでちょうどいいんじゃね

railsのソース読むの少しずつ慣れてきたがまだ割と迷子になる
mix-inのメカニズムは書く時は楽だが
読むのには慣れるまで苦労するなあ、、
0078nobodyさん2007/03/01(木) 16:22:31ID:???
railsでのsingletonってスレッドセーフなんかな・・・
たとえば設定ファイルを具現化するクラスをsingletonにして、
30秒おきに設定を読み直す仕組みにするときって、
Javaだとsyncronizeとか使うよね。
railsでは、どうすればいいのだろう。
そもそもスレッドごとにsingletonでサーバー単位でsingletonじゃない?
0079nobodyさん2007/03/01(木) 18:00:29ID:???
singletonとIOの同期に何の関係があるのかよくわからない。
0080nobodyさん2007/03/01(木) 18:14:38ID:???
いわゆるシングルトンならRubyでもインスタンスはプロセス内で1つだけ。
文法にはスレッドの同期はない。
Mutexを使うらし。
ttp://www2.ruby-lang.org/ja/20020315.html
0081nobodyさん2007/03/01(木) 18:54:42ID:???
>>78
プロセス内では一つだけだけど、
普通 mod_ruby とか fcgi を使うと複数プロセスになるので注意。
そうなると Mutex とか使えない。
0082nobodyさん2007/03/01(木) 20:49:36ID:???
>>78
「読むだけ」ならどれだけ同時に読んでも問題ない気がするけど違うのかな。
0083nobodyさん2007/03/02(金) 15:50:13ID:???
http://timeline.nifty.com/
これってRoRでできてるそうですね。
NaClも協力してるとか。RoRを見直した。
0084nobodyさん2007/03/02(金) 18:26:55ID:???
>>83
このアプリで大変なのは、ぶっちゃけJavaScriptであって、バックエンドは簡単そうだから、べつにRoRである必要はないんじゃないかな。
RoRが強いのはデータのCRUDのようにformを使うものだと思う。
0085nobodyさん2007/03/02(金) 19:59:39ID:???
>>73
ruby script/plugin install http://svn.hamptoncatlin.com/haml/trunk
して,プラグインとして導入するのが楽.

とりあえず,チュートリアル的なものは見つけた.いまいちチュートリアルになってない気もするが.
ttp://d.hatena.ne.jp/uchiuchiyama/20070228/haml_tutorial
0086nobodyさん2007/03/02(金) 23:05:30ID:???
> このアプリで大変なのは、ぶっちゃけJavaScriptであって、バックエンドは簡単そうだから、べつにRoRである必要はないんじゃないかな。

RoR には RJS があるが、何か?
ぶっちゃけるのは自由だが、Flash まくってるのは気のせいかね?
0087nobodyさん2007/03/02(金) 23:11:49ID:???
> RoRが強いのはデータのCRUDのようにformを使うものだと思う。

ワロスwwこの決め台詞は流行るww
0088nobodyさん2007/03/05(月) 03:32:46ID:???
まあ今時のウェブアプリはほとんどJS+Flashでバックエンドは何でもいい感じだからな・・
0089nobodyさん2007/03/05(月) 03:49:59ID:???
> まあ今時のウェブアプリはほとんどJS+Flashでバックエンドは何でもいい感じだからな・・

K*NT でもおk?
0090nobodyさん2007/03/07(水) 03:01:42ID:???
symfony使ってたら、rails使うのが馬鹿らしくなった
0091nobodyさん2007/03/07(水) 03:06:11ID:???
php なんかつかうやつはばかです。
0092nobodyさん2007/03/07(水) 03:51:43ID:???
こういう書き込みに対するレスポンスは迅速なんだな
0093nobodyさん2007/03/07(水) 06:32:23ID:???
まぁPHPだからな。
0094nobodyさん2007/03/08(木) 04:20:40ID:J25zk7/S
質問してもよろしいですか?
さくらレンタルサーバでruby on railsを動かそうとして、
ttp://d.hatena.ne.jp/usukey/20070305
にある通り設定しました。

railsプロジェクトを作ると
Welcome aboard
までは出るのですが、About your application’s environmentをクリックすると、

Application error
Rails application failed to start properly"

となってしまいます。
ググって見てもあまり情報が無く、サクラサーバで同じような現象になった方がいたら
アドバイスを頂きたいのですが、どなたかご存知ないですか??
0095nobodyさん2007/03/08(木) 04:48:09ID:J25zk7/S
94です.
dispatch.cgiを動かすと、こんなんでます。。

$ ./dispatch.cgi
Status: 400 Bad Request
$HOME/local/ruby/gem/gems/activesupport-1.4.1/lib/active_support/dependencies.rb:404:in `to_constant_name': Anonymous modules have no name to be referenced by (ArgumentError)
from $HOME/local/ruby/gem/gems/activesupport-1.4.1/lib/active_support/dependencies.rb:214:in `qualified_name_for'
from $HOME/local/ruby/gem/gems/activesupport-1.4.1/lib/active_support/dependencies.rb:476:in `const_missing'
from $HOME/local/ruby/gem/gems/rails-1.2.2/lib/dispatcher.rb:117:in `reset_after_dispatch'
from $HOME/local/ruby/gem/gems/rails-1.2.2/lib/dispatcher.rb:51:in `dispatch'
from ./dispatch.cgi:10
0096nobodyさん2007/03/08(木) 07:51:45ID:???
>>94
その機能はローカルでしか動かんよ。たしか。
0097nobodyさん2007/03/08(木) 08:39:38ID:???
さくらの専用サーバでRails使ってる。

About your application's environmentはリモートから見ようとすると
For security purposes, this information is only available to local requests.
と出るのが正しい。

とりあえずlog/#{RAILS_ENV}.logには何か出ないの?

ところで、漏れもzsh使いだが、なんでそのURLでzshのインストールから
始めてるんだろう。
0098nobodyさん2007/03/08(木) 08:46:53ID:J25zk7/S
>97

94です
$HOME/logと$HOME/rails/test/logには

~/log
$ ls -al
total 68
drwxr-xr-x 3 $usr_name users 512 3 8 04:54 ./
drwx---r-x 15 $usr_name users 1024 3 8 04:01 ../
-rw-r--r-- 1 $usr_name users 1342 3 7 04:54 access_log_20070307.gz
-rw-r--r-- 1 root users 57985 3 8 04:54 access_log_20070308
-rw-r--r-- 1 $usr_name users 2 3 6 09:19 month
drwxr-xr-x 2 $usr_name users 512 3 8 04:54 webalizer/

~/rails/test/log
$ ls -al
total 4
drwxr-xr-x 2 $usr_name users 512 3 8 04:09 ./
drwxr-xr-x 14 $usr_name users 512 3 8 04:09 ../
-rw-rw-rw- 1 $usr_name users 0 3 8 04:09 development.log
-rw-rw-rw- 1 $usr_name users 0 3 8 04:09 production.log
-rw-rw-rw- 1 $usr_name users 0 3 8 04:09 server.log
-rw-rw-rw- 1 $usr_name users 0 3 8 04:09 test.log

とあり、#{RAILS_ENV}.logは無いらしいのですが、設定どこか間違ってますか?
0099nobodyさん2007/03/08(木) 08:54:12ID:???
>>98
えーと、
#{RAILS_ENV}.logと書いたのは、development.logとかproduction.log
のこと。

これのサイズがゼロってことは script/serverはリクエストを一度も受け付け
ていないはず。

つーか、script/server以外の方法で動かしてたりする?
apacheのログはまだ一切関係ないはずだが。
0100nobodyさん2007/03/08(木) 09:38:41ID:J25zk7/S
script/serverはやってません。。
動かし方は、ttp://dgames.jp/dan/?date=20060218#p03を参考にしました。
--
hoge/publicの.htaccessを書き換え
下の3行をコメントアウト。
AddHandler fastcgi-script .fcgi
AddHandler cgi-script .cgi
Options +FollowSymLinks +ExecCGI

config/environment.rbを書き換え
ファイルの先頭に下の2行を追加。
$LOAD_PATH.push("/home/xxx/ruby/lib/ruby/site_ruby/1.8")
$LOAD_PATH.push("/home/xxx/ruby/lib/ruby")

ってやってます。。
0101nobodyさん2007/03/08(木) 09:45:25ID:J25zk7/S
apacheのログ(~/log/access_log_20070308)には

"GET /hoge/rails/info/properties HTTP/1.1" 500 81 "http://xxx.sakura.ne.jp/hoge/";

って出てます。
■ このスレッドは過去ログ倉庫に格納されています