トップページphp
1001コメント336KB

【Ruby】Ruby on Rails Part6

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/10/24(金) 17:46:53ID:???
■前 Ruby on Rails のスレ が
http://pc11.2ch.net/test/read.cgi/php/1207425569/

■参考サイト
<英語>
本家: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 33
http://pc11.2ch.net/test/read.cgi/tech/1223709050/
Ruby 初心者スレッド Part 22
http://pc11.2ch.net/test/read.cgi/tech/1221467121/
0251nobodyさん2009/01/17(土) 06:54:26ID:J8ZBiU3+
development.logをrename
終わったら戻す
0252nobodyさん2009/01/17(土) 11:13:36ID:???
出力をしなくすれば良いだけの話
0253nobodyさん2009/01/17(土) 14:32:08ID:???
class ActiveSupport::BufferedLogger; def add(*args); end; end
とか。

0254nobodyさん2009/01/20(火) 01:13:51ID:???
外部キーじゃないのに*_idって使いたいときってどうします?正に今、携帯の端末IDをなんてカラムに保持するか悩んでいます。
・気にせず使う
・強引に名前を考える
0255nobodyさん2009/01/20(火) 05:27:16ID:???
やさしく別の名前を考える
0256nobodyさん2009/01/20(火) 05:36:20ID:???
それがしっくりくる名前なら気にしつつ使う
0257nobodyさん2009/01/20(火) 05:49:19ID:???
rails2.2のスレッドセーフはサーバーのメモリ節約に役立ちますかね?
passengerで複数サイト稼働させていてメモリのやりくりが大変です

>>254
_idは外部キーのみ使った方が確実かと
自分ならアンダーバー無しにします。見づらそうだけど
0258nobodyさん2009/01/20(火) 23:18:05ID:???
serial とか numberとか?
0259nobodyさん2009/01/23(金) 18:19:19ID:ZhfLwxbK
質問させて下さい.modelにて

class A < ActiveRecord::Base
end

class B < ActiveRecord::Base
end

class AChild < A
 def get_b
  B.find(1)
 end
end

とした際に,get_bにてエラーがでます.
どうやら,find時にClass名がBではなくA::Bとなってしまうのですが,解消する方法はないでしょうか.
そもそも,AChildeでBをfindすることは良くないのでしょうか?
0260nobodyさん2009/01/23(金) 22:09:16ID:ZhfLwxbK
>>259
serverの再起動で自己解決しました
スレ汚し申し訳ない

0261nobodyさん2009/01/23(金) 22:31:26ID:BmccCjRs
>>250
>250
02622612009/01/23(金) 22:33:26ID:BmccCjRs
編集中におくってしまった
/dev/nullとかにくわせたらだめかね?
0263nobodyさん2009/01/24(土) 02:11:00ID:???
>>247
そういうのは普通に HTML で書いちゃうのがオススメ。

%p.p1
hogehoge <acronym title="Cascading Style Sheets">CSS</acronym>.
0264nobodyさん2009/01/25(日) 21:35:46ID:???
scaffoldして、ビューを見ると
<%= link_to 'Back', users_path %>
というのがあるんですが、このusers_pathってどこで定義されてるんですか?
0265nobodyさん2009/01/25(日) 22:34:43ID:???
>>263
そっか、細かいところまで無理してhamlで書く必要はないわけね
ビューの可読性があがればいいわけで、考えてみれば当然か
thx

>>264
名前付きroute
ルーティング関係のモジュールのどこか
<コントローラ名>_path という命名規則だから、users_path自体が定義されているわけではないと思う
0266nobodyさん2009/01/26(月) 01:13:43ID:???
scaffoldしたなら config/routes.rb に
map.resources :users
って書いてあるはず。

$ rake routes
で確認できる。
_path とか _url とかが使えるようになってる。
0267nobodyさん2009/01/26(月) 02:34:36ID:???
>>259
>どうやら,find時にClass名がBではなくA::Bとなってしまうのですが,解消する方法はないでしょうか.

def get_b
 ::B.find(1)
end

としてはどうか。しらんけど。
0268nobodyさん2009/01/26(月) 04:28:17ID:???
>>247
別解

%p.p1
hogehoge
= succeed '.' do
%acronym{:title => 'Cascading Style Sheets'} CSS
02692682009/01/26(月) 04:29:11ID:???
インデント失敗した。すまぬ。
0270nobodyさん2009/01/26(月) 05:57:27ID:???
ケツ毛
0271nobodyさん2009/01/27(火) 17:28:09ID:???
テーブル間でドラッグ&ドロップするのに以下のようにやっていますが、反応するときとしないときがあって困っています。
何か良い方法ありますか?
<table id='sort1' border="1">
<tbody id='item_1'>
<tr><td>aaaaaa</td></tr>
</tbody>
<tbody id='item_2'>
<tr><td>bbbbbb</td></tr>
</tbody>
<tbody id='item_3'>
<tr><td>cccccc</td></tr>
</tbody>
</table>
<table id='sort2' border="1">
<tbody id='item_4'>
<tr><td>dddddd</td></tr>
</tbody>
<tbody id='item_5'>
<tr><td>eeeeee</td></tr>
</tbody>
<tbody id='item_6'>
<tr><td>ffffff</td></tr>
</tbody>
</table>
<%= sortable_element( 'sort1', :url => { :action => :sort_update }, :tag => "tbody", :containment=>['sort1','sort2'], :dropOnEmpty=>true) %>
<%= sortable_element( 'sort2', :url => { :action => :sort_update }, :tag => "tbody", :containment=>['sort1','sort2'], :dropOnEmpty=>true) %>
0272nobodyさん2009/01/27(火) 20:49:25ID:???
マイグレーション時にデータを作成する際、
User.create :name => 'user_1', :age => 10
などとして値を指定してデータ作成できますが、以下でプライマリキーを指定しての作成ができません。
User.create :id => 10
プライマリキーを指定してデータを作成するにはどうしたらいいでしょうか?
0273nobodyさん2009/01/27(火) 21:36:42ID:???
>>272
プライマリキー(id)はと、STI型名(type)は、デフォルトで
「まとめて初期化」(attr_protectedとかで制御するやつね)の対象から除外されている。
active_record/base.rb のattribute_protected_by_default 参照。

簡単に対処するには、
1. とりあえずnewで作成
2. idだけ個別に代入
3. save
かな。
0274nobodyさん2009/01/27(火) 23:39:28ID:???
コントローラで、
format.render :xml => Model.to_xml
としてるような場合、
テストコード側でどうやってアクセスしたらよいのでしょう。。
0275nobodyさん2009/01/28(水) 00:26:34ID:???
>>273
解説ありがとうございました。その対処法でいってみます。
0276nobodyさん2009/01/29(木) 02:56:04ID:???
>>270
バーガー?
0277nobodyさん2009/01/29(木) 21:46:41ID:???
>>274
何にアクセスしたいのん?
出力されるXMLなのか、それ以外の何か?
0278nobodyさん2009/01/29(木) 23:43:43ID:wkptOo2L
過疎りすぎだろ・・・


全サーバ共有のオブジェクトとしてMarshal使ってるんだが、
Marshal.loadでたまに、
marshal data too short (ArgumentError)
が発生するのが腹が立つ・・・

同じような症状にあった人いる?
02791632009/01/30(金) 01:33:04ID:???
さくらレンタルサーバに railsを入れたのですが。。。

下記エラーが出て動きません。
no such file to load -- sqlite3

どなたか原因が分かる方いらっしゃいませんか。。。
0280nobodyさん2009/01/30(金) 01:34:45ID:???
>>279
さくらたんはRails使えない、これ常識。
0281nobodyさん2009/01/30(金) 01:35:42ID:???
>>279
エラーに原因書いてあるじゃまいかw
0282nobodyさん2009/01/30(金) 01:38:34ID:???
>>280
漏れはそれでRadiant使うの諦めてDrupalにした。
0283nobodyさん2009/01/30(金) 03:02:59ID:???
mod_rails使ってみたんだが
静的コンテンツ(画像やらcssやらfavicon)が読めない。
BaseURI使って複数プロジェクト上げるとダメ。

BaseURI使わなければ問題無し。
mongrelだと問題無し。


いくつか外人サイトでも上がってるようだが
.htaccessを消すとかmod_rewriteを使うなとか
試してみたがダメ。

誰か分かる?
02842832009/01/30(金) 03:05:47ID:???
ruby1.8.6
rails 2.1.2
0285nobodyさん2009/01/30(金) 03:08:21ID:???
>>283>>279か?
こんな辺境で聞くよりさくらのスレで聞いた方が解決すると思うよ。
0286nobodyさん2009/01/30(金) 03:11:29ID:???
>>277

出力されるXMLです。

ちょうどよいサンプルが見つかりました。
gems\actionpack-2.2.2\test\controller\mime_responds_test.rb
0287nobodyさん2009/01/30(金) 06:17:33ID:???
>>279
レンサバの社名だけじゃなくプランも書くべきじゃね?
レンサバはプランで環境変わってくるし、本気で聞きたいなら言うべきだね。

Rails突っ込むくらいだしスタンダード以上のプランだと思うけど
出てるエラーの通りそこを修正したら多分動くはず。

プラン違うと思うから参考にならんかもしれんけど
もしもの時ように契約だけして一年以上放置してた
さくらの専用サーバにてさっきRails動作したから一応報告。
0288nobodyさん2009/01/30(金) 09:26:02ID:???
便乗ですみませんが
さくらの専用サーバーとやらでdjangoも動きますか?
0289nobodyさん2009/01/30(金) 23:43:11ID:LFWFBeOw
専用サーバってroot権もらえてSSHでリモートログインできるやつ?
それならスキル次第で動くんじゃない?
02902832009/01/31(土) 00:21:50ID:???
279じゃないです。ここは辺境の地ですか。残念。
0291nobodyさん2009/01/31(土) 01:39:16ID:???
SSHのリモートログインなら専用サーバでなくてもスタンダード以上のプランならできるだろ
0292nobodyさん2009/01/31(土) 04:38:35ID:???
Ruby1.9.1キタ━━━━━━(゚∀゚)━━━━━━!!
02931632009/01/31(土) 08:20:00ID:+94In4wf
>> 皆様
解決しました。ご意見ありがとうございました。

環境:
 さくら スタンダードプラン

症状:
 最初の「Welcome aboard」ページにて
 About your application’s environment をクリックすると
 no such file to load -- sqlite3  が出る

対応:
 sqlite3-rubyがないので入れる
 
 1)失敗 root権限で入れようとした様子
 gem18 install sqlite3-ruby -- --with-sqlite3-include=$HOME/include --with-sqlite3-lib=$HOME/lib

    chown/chgrp: Operation not permitted
    *** Error code 71
 
 2)成功
 setenv RB_USER_INSTALL true
gem18 install sqlite3-ruby -- --with-sqlite3-include=$HOME/include --with-sqlite3-lib=$HOME/lib

参考URL:
tp://blog.proj.jp/ituki/20090107.html

ようやくこれで作成に入れます!!!
うれしい!!
0294nobodyさん2009/01/31(土) 08:24:48ID:???
だから出ているエラーの通りだっただろw
動作おめでとう☆
次からは出ているエラーをきちんと嫁よ
0295nobodyさん2009/02/02(月) 22:35:12ID:???
rails 1.2.3 + Mysqlで開発中なんですが
activemailerを使って
データベースに保存されているファイルを添付して
メールを送信する方法を知っている人おられませんか?
現在のソース書きます。
urlを直接打つとダウンロードできますし、メールも添付ファイルがなければ送れます。
1週間ぐらい悩んでまして・・・誰か助けてください・・・

class TestMailer < ActionMailer::Base

def report(receiver)
@subject = '写真の送信'
@body["receiver"] = receiver
@recipients = 'hoge@hoge.com'
@from = 'hoge@hoge.com'
attachment :content_type => "image/jpeg",
:body => File.read('http://localhost:3000/pics/file/1/test.jpeg')
@sent_on = Time.now
@headers = {}
end
end
0296nobodyさん2009/02/02(月) 22:55:44ID:???
File.readでURLの参照先が読めるの?

# require 'open-uri'

:body => open(URL) {|input| input.read }
とかじゃなく?
0297nobodyさん2009/02/02(月) 22:58:53ID:???
localhost:3000なのか。

pics/以下が何らかのアクションを呼ぶものではなくpublic_html以下のファイル実体なら、
File.read(File.join(RAILS_ROOT, 'pics/file/1/test.jpeg'))
で読めると思う。
0298nobodyさん2009/02/03(火) 17:31:55ID:XJb6VJd0
ファイルアップロード時にプログレスバーで経過を見せたいのですが
皆さんどうやって実現していますか?
0299nobodyさん2009/02/03(火) 18:05:07ID:???
それをrailsだけでやるの?
03002982009/02/03(火) 18:17:26ID:XJb6VJd0
>>299
javascript等、必要であれば
0301nobodyさん2009/02/04(水) 00:13:34ID:???
昔調べた時に、たしかlighttpdではできたような。
うちはmongrelだったのでその時はあきらめた。
もしかしたら、今ならそういうライブラリあるかも。

例えばjQueryの jquery.ajax_upload でonSubmitの時に
読み込み中の画像を出すみたいな事はできると思う。
プログレスバーは難しいだろうけど。

いっそのことFlash使うという手もあるかと。
0302nobodyさん2009/02/04(水) 00:15:59ID:???
流行ってるからって何でもかんでもFlash薦めれば良い問題でもない
0303nobodyさん2009/02/04(水) 00:31:09ID:???
Flashでサーバ問わずに手軽に実現できるならそれでも良いんじゃないのかな
0304nobodyさん2009/02/04(水) 00:35:00ID:???
お手軽さを求めるなら有りだと思う
0305nobodyさん2009/02/04(水) 01:11:03ID:???
んでFLASHで何をどうしたら簡単に実現できるんですか?
0306nobodyさん2009/02/04(水) 04:45:19ID:???
>>299 はさりげなくスレ違いを指摘してんじゃないの?
0307nobodyさん2009/02/04(水) 04:51:16ID:???
確かにRails以外の話はスレ違いだな>>305
0308nobodyさん2009/02/04(水) 09:04:49ID:???
>>305
まずサーバーにうpする部分とプログレス表示の部分を分ける
サーバーにうpは普通にうp
プログレス表示の部分はFLASHでサーバーにうp途中の
ファイルサイズを問い合わせしつつ%表示
簡単かどうかは知らん
0309nobodyさん2009/02/04(水) 16:15:25ID:vZ1IhzmW
スレ違い
0310nobodyさん2009/02/04(水) 16:32:55ID:jYgE8dre
Rails2.3リリースノート訳
ttp://webtama.jp/series/railstips/articles/31
0311nobodyさん2009/02/04(水) 23:39:49ID:???
なるほど
ありがとうございました
0312nobodyさん2009/02/04(水) 23:50:06ID:???
2.3正式版きたんだな
0313nobodyさん2009/02/05(木) 00:54:46ID:???
Rubyの1.9.1に対応させてきたな
0314nobodyさん2009/02/05(木) 01:09:21ID:???
入れてみるか。この前1.9.1と2.2.2の組み合わせで撃沈したから。
0315nobodyさん2009/02/05(木) 03:31:27ID:???
CMS on Rails(?)って、定番はrubricksかRadiantなのかな?
やりたいことのほとんどは典型的なCMS機能でカバーできて、特殊機能を独自にPluginのように開発しようと考えているんだけど
0316nobodyさん2009/02/05(木) 04:18:48ID:???
>>312
RC1のリリースノートだよ。
0317nobodyさん2009/02/06(金) 21:47:33ID:???
再開発じゃなくて再発明だが、四角いはまた意味がちょっと違うけどな
0318nobodyさん2009/02/06(金) 23:22:48ID:???
Railsで生成した画像やCSSなどのURLに?1233545454のようなものが付与されますおね
あれは何の意味があるのでしょうか?
0319nobodyさん2009/02/06(金) 23:35:41ID:???
Railsに限らずキャッシュを読み込まないための方法だよ
ファイルを更新したら、?1233545454などのお尻の値も更新する
そうすることで更新されたファイルをちゃんと読み込むようになります
0320nobodyさん2009/02/06(金) 23:57:24ID:???
いやがらせですね
わかります
0321nobodyさん2009/02/07(土) 01:14:41ID:???
ファイルを更新したら変えるの?ランダムかと思ってた。
0322nobodyさん2009/02/07(土) 01:43:03ID:???
Railsのデフォルトではタイムスタンプだよ。
0323nobodyさん2009/02/07(土) 02:00:36ID:???
なるほど
ありがとうございました
0324nobodyさん2009/02/07(土) 09:56:50ID:???
config/environments/以下やinitializers以下などで
ENV['RAILS_ASSET_ID'] = '' #空文字列にセット
としておくと付かなくなる。

03253182009/02/07(土) 12:36:51ID:???
勉強になりました!ありがとうございます。
確かにpublic内の画像等を更新した場合はasset_id(?)が変わりますね

asset_hostを指定してpublic内の静的ファイルを他サーバーから配信している場合、
ファイルを更新してもasset_idは変わりませんでした
0326nobodyさん2009/02/08(日) 11:42:40ID:???
xreaではまだ使えるのに、coreserverでfastcgiが使えなくなったな。
まぁリソース食いまくるからしょうがないんだろうが…
0327nobodyさん2009/02/11(水) 01:00:58ID:???
Railsの簡単なリファクタリング方法教えてくれ
0328nobodyさん2009/02/11(水) 02:58:01ID:???
ユニークじゃない処理をPickUp

ライブラリorプラグインを探す
|↓ない
|最初に戻る
↓ある
置換える

テスト
0329nobodyさん2009/02/11(水) 10:50:42ID:???
Railsなら最初にテストを記述じゃないの?直すたびに手動でテストはめんどいよ
0330nobodyさん2009/02/11(水) 11:12:12ID:???
>>329
同意。
標準のTestUnitではなくて、最近はRSpecのほうが流行りなのかね。
あ、でも仕事の場合、テスト仕様書とテスト結果表をエクセルで
書かないと納品物として認めない客が多いので、
Railsのテスト(TestUnit/RSpec)に加えて、手動テストが必要だよね。
0331nobodyさん2009/02/11(水) 11:49:55ID:???
つまりRSpecの出力フォーマットにエクセル(つーかCSVでいいや)を追加すれば……
0332nobodyさん2009/02/11(水) 11:54:18ID:???
おー。なるほどね
線引いたり、フォントとかの体裁はVBAでがんばればいけるかな?
0333nobodyさん2009/02/11(水) 12:58:05ID:???
Rspecっていいのけ?使ったことないのだが。

ttp://jp.rubyist.net/magazine/?0021-Rspec

を見てみたのだがイマイチ利点がわからん。

----- RSpec とは何か ------------------------------
RSpec とは、公式サイトの説明によれば、
「プログラムの振舞 (behaviour)」を記述するためのドメイン特化言語
(DomainSpecific Language:DSL) を提供するフレームワーク」です。
--------------------------------------------------

これはよく分かった

----- なぜ、RSpec なのか --------------------------
では、なぜ Test::Unit ではなく、RSpec を選ぶのでしょうか。
冒頭の FAQ を再び。 「RSpec って、要は Test::Unit でやっていることを別の書き方にしただけでは?」
――確かにその通りなのですが、その「書き方」が重要だというのが私たちの思いでした。
--------------------------------------------------

なるほどと思った。ところがこのあと、テスト駆動開発の説明が続いて、

--------------------------------------------------
Rspec の狙いはプログラマにテストコードが設計であることを明確に意識させることと、
プログラマがテストコードをスムースに記述し実行できるようになることです。
--------------------------------------------------

みたいな結論になってるのだが、あまり具体性がなくてピンとこない。
だれかわかりやすい利点を具体的にいくつか教えてくれるとうれしいのだが。
ほかにもいくつかサイトを参考にしたのだが、記述方法メインがほとんどだった。
0334nobodyさん2009/02/11(水) 13:31:54ID:???
RSpecって、ちょっとさわった程度なんだけど
英語っぽいから、英語圏の人がありがたがる気持ちはわからんでもない

日本人の自分としては?だけどね
使い込むといろいろ便利なのかね?
0335nobodyさん2009/02/11(水) 13:36:31ID:???
>>333
自分的にはテストの表示結果が非常に分かりやすいのが気に入ってる。
TestUnitではどのメソッドが成功した、失敗したというのは分かるんだけど、
それぞれが何のテストなのかが分かりにくい。
RSpecだと、
ttp://jp.rubyist.net/magazine/?c=plugin;plugin=attach_download;p=0021-Rspec;file_name=capture9.png
こういう感じになるので、分かりやすいなと。
でも、それだけなのでTest::Unit使ってる人は無理にRSpec覚えなくていいと思ってる。

0336nobodyさん2009/02/11(水) 13:42:46ID:???
>>335
なるほど、サンクス。利点の一つがわかった。

DSLは便利なのだが、いくらRubyベースとはいえ何個も覚えたくなかったりする。
もっと利点が挙がってきて魅力を感じるようになったら勉強するよ。
0337nobodyさん2009/02/11(水) 14:40:35ID:???
BDDって何だろ,って思って勉強しながら使ってたら
いつの間にかTest::Unitよりもなんとなくしっくり来て(慣れたからだと思うけど)使ってる

結局概念的にはあんま理解してないと思うけど,TDDの発展形らしいのでとりあえず満足してる
0338nobodyさん2009/02/11(水) 16:55:40ID:???
shoulda
0339nobodyさん2009/02/11(水) 16:57:54ID:???
SVNにコミットしたら自動で全部テストして
エラーが起きたらメールで通知
rspec&autotestおいしいです^q^

所で宍道湖つかってる人いる?
0340nobodyさん2009/02/11(水) 17:02:11ID:???
しめじ
0341nobodyさん2009/02/11(水) 17:04:17ID:???
しじみじゃないのか?
0342nobodyさん2009/02/11(水) 20:05:42ID:???
テストはSeleniumでするものです
0343nobodyさん2009/02/11(水) 21:45:57ID:???
仕事でやってるけど、テストはRSpecで行った。
やっぱり自動テストできると仕様変更の際とても楽。
色付けて、色で判別できるのも良い。
あと it "日本語" do みたいに書けるので、
テスト走らせた時に半分仕様書っぽく見えるのがgood。

それでもAjaxが絡む部分とかはテストできないので
地道に手動テストしてエビデンスをExcelに貼付けるとかは行った。
0344nobodyさん2009/02/11(水) 21:57:14ID:???
いくら自動テストしているからと言っても
お客さんにはそれが見えないので、書類として出せるものは必要。
結局Excel登場な訳です。
0345nobodyさん2009/02/11(水) 22:35:03ID:???
>>343
>それでもAjaxが絡む部分とかはテストできないので
RSpecなんか使ってるからだよ
0346nobodyさん2009/02/11(水) 23:28:18ID:???
Ajax部分は、まぁSeleniumとかの担当になるだろうなぁ。
あと、CIでやるテストと、納品に必要なテストは違うよね。
0347nobodyさん2009/02/11(水) 23:29:01ID:???
CI=Continuous Integrationね、一応。
0348nobodyさん2009/02/12(木) 00:47:34ID:???
>>339-341
わろす
0349nobodyさん2009/02/12(木) 02:02:30ID:???
テストは客のためじゃなくて自分のためにするもんだけどな
0350nobodyさん2009/02/12(木) 02:16:23ID:???
客に提出するためのテスト資料ってわりといい加減なことが多い気がする
提出したあとにプログラムを変えて、テストは思いっきりおろそかとか

で、客の信頼を失ってテスト資料の提出をせまられる
■ このスレッドは過去ログ倉庫に格納されています