[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 05/10 00:35 / Filesize : 47 KB / Number-of Response : 216
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Rubyについて Part 35



1 名前:デフォルトの名無しさん [2009/03/28(土) 07:52:30 ]
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
www.ruby-lang.org/ja/

= 前スレ
Rubyについて Part 34
pc12.2ch.net/test/read.cgi/tech/1233686068/

過去スレ・関連スレは >>2-

151 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 22:30:13 ]
ピア村は昔いい本出してたけど、最近は縮小傾向だったな
久しぶりに買ってみようかな
Amazonで見る限り、純粋なRubyのGoF本ってわけじゃないのだろうか

152 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 13:57:18 ]
表紙とか紙の質とかが残念だけど良書だと思う。

153 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 16:45:17 ]
>>152
どういまいちなの?

154 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 16:50:37 ]
>>151
Rubyで純粋なGoFって無駄多すぎじゃない?

155 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 17:03:19 ]
Ruby自体が旧来言語から見たデザインパターンの塊だからな

156 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 17:13:20 ]
>>154
そうなんだけど、
「GoFにそってコーディングするとこうなるけど、
Rubyの機能(Singletonとかイテレーターとか)を使うとこうなります」
みたいな感じのもいいかなと思って。

Rubyのよさもわかるし、コーティングするのはRubyだけとは限らないし。
まあGoFをやりたかったら、Javaの本でも読めと言われればそうなんだが。

157 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 17:38:40 ]
そこで The Design Patterns Smalltalk Companion ですよ。
余力があれば、Ruby 向けに書き直すのもよし。

158 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 18:03:41 ]
Rail3がどーたらこーたら
www.computerworld.jp/topics/osst/144809-2.html

159 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 08:55:54 ]
いつのまにか、るりまのクラスリファレンスの表示形式が変わって見やすくなってるな
(旧リファレンスのような一括表示になってる)
るりまチームの人お疲れ様です



160 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 13:04:17 ]
if (a = foo) != nil

end



if a <- foo

end

って書ける様にしてくれ。
イコールで代入とか全国の数学者が混乱するだろ。

161 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 13:08:13 ]
は?

162 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 13:32:32 ]
それより//演算子だろ

163 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 14:24:35 ]
>>160
そういう文法の言語をお前が作れ

164 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 14:34:23 ]
>>160はどこかからの受け売りと予想

165 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 14:50:09 ]
>>160
その記法、俺には foo が a を参照している、という状態を表しているように見え、
代入という操作を表現しているようには見えない。

166 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 14:53:45 ]
代入は
a := foo
でいいよもう

167 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 15:01:17 ]
>>160
> イコールで代入とか全国の数学者が混乱するだろ。

だとしたら、この世に存在する殆ど全ての言語を作り直す必要が発生するね。
Cもそうだしネ!

ここは寧ろ混乱して困っている数学者氏にご登場願いたいくらいだ。

168 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 15:21:59 ]
数学者は計算機を計算に使わない。

169 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 15:33:17 ]
数学者はRubyを計算機での計算に使わない。



170 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 15:34:36 ]
使うよw
四色定理の証明とか

171 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 15:53:04 ]
数学なんて定義を明確にして積み上げていくシロモノなんだから
数学者は、むしろ適応早いと思うんだが

172 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 16:20:05 ]
> if (a = foo) != nil

なんでこんな無駄なこと書いてるんだ?

173 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 16:33:14 ]
>>172
自分の成功体験で「若し変数 a に foo を代入した結果が nil でないならば」と読み下せるからだろう
なんでわざわざ新しい言語を覚えようと思ったのかが理解不能だ

174 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 17:04:28 ]
>>172
if文ブロック内で、aがそのまま使えるからじゃね

175 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:03:11 ]
いや、 if (a = foo) とか unless (a = foo).nil? とかあるじゃん? という話だと思う

176 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:28:16 ]
foo が false だったら 真として扱いたいんじゃないか?

177 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:31:57 ]
fooがfalseだったら偽だろ

unless (a = foo).nil
は気持ち悪い

178 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:33:49 ]
if a == false

if a == nil
を区別したいんだろ

179 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:41:31 ]
>>174>>178は同じやつで、最初のレスのやつだったりしてな
どう見ても素人まるだし

!= nil
== nil

Rubyでこんなこと書くやつはそうそういない



180 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:42:56 ]
>>174だけど違うよw

181 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:43:57 ]
a.nil? はともかく、 !a.nil? は字面がなんか嫌だ

182 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:44:33 ]
>>179
RubyなんてPerlとかからの移行が多いんだから、普通に一杯いるだろ

183 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:44:45 ]
unlessやnil?を無理やり使ってこそ真のRubystだろうが

184 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:51:32 ]
>>172の「なんで」から始ったレスなのに、
レスした奴まで素人扱いかよw

というか、その程度のことで素人認定するお前はRubyしか知らない素人なんじゃねーの?

185 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 19:12:01 ]
こっちのほうが初心者スレになってきた件

186 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 20:20:11 ]
if not obj.nil? then
はまれに使うな

187 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 21:18:11 ]
>>184
ソースは言葉よりはるかに雄弁
あとやたら「w」つけるやつで優秀な奴はまずいない(おれ個人の経験則だが)

188 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 22:17:42 ]
変ながんばり方だなw

189 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 01:54:17 ]
unless obj.nil? != false とか。




190 名前:デフォルトの名無しさん [2009/05/14(木) 16:35:24 ]
rspecで、fixture をキャッシュさせない方法はないでしょうか

fixtures :product
で product.yml でデータを products テーブルに投入しますが、
*_spec.rb を単発で実行するときはテストが通るけど、
rake test 等でまとめて実行するとき、Aという機能のspecファイルで :product を投入し、
次に Bという機能の specファイルで、:product というシンボル名だけど別のディレクトリにある product.yml を
投入したいのですが、名前が同じだと2回目は読んでくれないようです。

言い方を変えると、describe ごとに fixtures で入れたデータをロールバックしてほしい

spec_helper.rb で
config.use_transactional_fixtures = true
を falseにすると、ロールバックされるようになったが、逆にテストメソッドの中で実行した insert や delete は
コミットされるようになってしまった

191 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 17:00:04 ]
>>190

別のディレクトリにあるproduct.ymlっていうのがよくわからない。
AとBで読み込んでるfixtureは同じじゃないのか?

とりあえずfixtureを読み直してくれないという意味で捕えるけど
データベースエンジンがMySQLのMyISAMだったらロールバックしない。
InnoDBだったらロールバックするよ。

fixtureを読み直したりはしてないんじゃないかね。
ロールバックよりは遅そうだし。

192 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 18:29:38 ]
>>191 レスどうもありがとうございます。
> 別のディレクトリにあるproduct.ymlっていうのがよくわからない。
> AとBで読み込んでるfixtureは同じじゃないのか?

たとえば Rails で二つコントローラがあって、
 RAILS_ROOT/app/controllers/foo_controller.rb
 RAILS_ROOT/app/controllers/bar_controller.rb

それぞれの spec ファイルは以下の通り。
 RAILS_ROOT/spec/controllers/foo_controller_spec.rb
 RAILS_ROOT/spec/controllers/bar_controller_spec.rb

それぞれの spec で異なるテストデータを使いたいので、以下のようにfixtureのymlファイルを配置し、
 RAILS_ROOT/spec/fixtures/controllers/foo/product.yml
 RAILS_ROOT/spec/fixtures/controllers/bar/product.yml

それぞれのスペックファイルの describe の先頭で、以下のようにやっています。
self.fixture_path = RAILS_ROOT + '/spec/fixtures/controllers/foo/'
fixtures :product

193 名前:192の続き mailto:sage [2009/05/15(金) 18:30:02 ]
> とりあえずfixtureを読み直してくれないという意味で捕えるけど
> データベースエンジンがMySQLのMyISAMだったらロールバックしない。
> InnoDBだったらロールバックするよ。

こちらでも MySQL を使っていて、InnoDBです。
で、テストを動かす前にテーブルの中身を全て truncate した後、テストを動かして、
もう一度テーブルの中身を覗くと、fixture でいれたデータが残っている。
自分のビジネスロジックで insert したり delete したトランザクションはロールバックされるようです。

spec_helper.rb では以下のようにしています。
config.use_transactional_fixtures = true
config.use_instantiated_fixtures = false

私が思うに、fixtures :product のシンボル名でキャッシュするようで、
foo_controller_spec.rb が動いた後、 bar_controller_spec.rb が動くときに、
bar_controller_spec.rb で指定した fixture :product が再読込されないようです。
だから spec コマンドで foo_controller_spec.rb や bar_controller_spec.rb を
単発で動かすときはきちんとテストが通るけど、rake spec してテストを全て実行した場合、
bar_controller_spec.rb のテストが失敗する。これを何とかしたい。

lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/fixtures.rb に
reset_cache というクラスメソッドを見つけたが、*_spec.rb の中に
Fixtures.reset_cache と書いてもうまくいかなかった。

みなさんは、rake spec して全部のテストを通すとき、全ての spec ファイルで
整合性がとれるような fixture のテストデータを用意しているのでしょうか?

194 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 12:36:46 ]
controller の spec では mock してる。

195 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 13:06:08 ]
NetBeans新バージョンってRubyサポート周りでなんか改善あった?

196 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 20:48:00 ]
なんだよ、未だにsqlite3-rubyって1.9対応になってねえのかよ
だせえなあ

197 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 22:18:52 ]
そういやみんなはなんでPerlやPythonじゃなくてRuby使ってるの?
漏れはPerl使ってたら、研究室の先生にRubyを猛プッシュされたからなんだけど。
ちょうどPerlになんか嫌気がさしてたころだったし。

198 名前:デフォルトの名無しさん [2009/05/17(日) 22:56:32 ]
Ruby Rubyしようよって上司に言われまして。
キモかったので渋々使うようになりました。

199 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 23:00:11 ]
むかし(15年くらい前)はPerl使ってた。OOで書けるスクリプト言語は
ないもんかなーと思いはじめた頃にPerl5が登場して、似非OOできるように
なった。少し遅れてPythonを知り習得。selfのウザさとスコープの貧弱さに
面倒を感じはじめた頃にRubyがfjで発表され、飛びついた。




200 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 23:35:43 ]
やっぱり上からプッシュはそこそこあるのかね。
仕事ならまあ仕方ないんだろうけど。

>>199さんはRubyへの飛びつきはええw

201 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 23:46:01 ]
数年前に、RPGツクールに搭載されてたRGSSから飛びついたような記憶がある

202 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 00:27:11 ]
>>199とちょっと似たような感じだが、Pythonは通らなかった。
Perl4->Perl5->Ruby


203 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 19:22:37 ]
RGSS という文字列を見ると○motiを思い出してしまう…。
かなり俺の心に深い傷となって残ったようだ。

204 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 11:17:20 ]
少し前に MoonW○lf の投稿を見て、ああ、と思った

205 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 13:00:33 ]
最近見ないのは鬱期なのかな。お大事に。

206 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 13:11:15 ]
いや普通は「忙しい」が来るもんだと思うんだが
他にすることもあるだろうしRubyコミュニティにかまけてばかりでもなかんべ

207 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 15:34:54 ]
普通じゃないから

208 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 21:30:19 ]
まつもとゆきひろ コードの世界~スーパー・プログラマになる14の掟
www.amazon.co.jp/exec/obidos/ASIN/4822234312/

この表紙Matzはどう思ったかなw

209 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 21:33:07 ]
WBSに出演したときは割と普通だった



210 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 21:36:11 ]
World Baseball ...Senior ?

211 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 22:03:07 ]
>>208
twitter.com/yukihiro_matz/status/1834174414


212 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 23:12:31 ]
>>208
よく言えば、やり手の経営立て直し屋だな

213 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 00:48:50 ]
Hashのキーをタプルしたいけどできません
なんでですかね?

214 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 00:51:14 ]
>>213

「タプルしたい」とは?
「できない」とは?

タプルという言葉はわかる。


215 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 00:58:19 ]
>>213
h = {'a'=>'aaa', 'b'=>'bbb'}
h.each do |t|
 p t #=> ['a', 'aaa'] ...
end

こういうこと?違うならkwsk






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<47KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef