したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

アニメ一話見終わるまでに4回食事出来る男

1センスの良い名無し募集中:2015/01/15(木) 19:26:13
km

127センスの良い名無し募集中:2015/01/17(土) 06:04:36
126のレスがぐっときた

128センスの良い名無し募集中:2015/01/17(土) 06:09:13
覚えて使って身につけるってループを1時間に何回転できるかやと思うわ

129センスの良い名無し募集中:2015/01/17(土) 06:33:47
factory :user のブロックの中に owner 定義するのかも

130センスの良い名無し募集中:2015/01/17(土) 06:47:32
ボクならbinding.pryして値を見てみますね

131センスの良い名無し募集中:2015/01/17(土) 06:50:42
おはよう、何につまってるの?

132センスの良い名無し募集中:2015/01/17(土) 06:51:14
Can't you read English!? Hahaha

英語だけだとダメってpeerstplayerに怒られたorz

133センスの良い名無し募集中:2015/01/17(土) 06:52:45
FactoryGirl関係ないかもしれん
change{ introduction.user.reload.re_introductions_count } ってしてみて

134センスの良い名無し募集中:2015/01/17(土) 06:55:54
多分順番として
1.Userを作る(キャッシュされる)
2.Introductionを作る
3. 1と2が関連付けられる

ここで introduction.user とすると 1 の状態が帰ってきちゃう

135センスの良い名無し募集中:2015/01/17(土) 06:56:27
ActiveRecordの挙動がよく分かってないから難しいな
どの操作で副作用や永続化が行われてるんだ

136センスの良い名無し募集中:2015/01/17(土) 06:56:59
カウンターキャッシュは3の時に走るから1の状態だと0のまま

137センスの良い名無し募集中:2015/01/17(土) 07:00:29
それは 2 と 3 を一緒にやってる

1. user = User.create
2. introduction = Introduction.create
3. introduction.users << user

138センスの良い名無し募集中:2015/01/17(土) 07:00:49
それはDBに取りに行ってるから新しいインスタンス生成して増えてるだけじゃないの?
1回目の取得時に変数に取得したユーザをバインドしとけば変わってないんじゃ無い?

139センスの良い名無し募集中:2015/01/17(土) 07:01:55
user = Usre.first
Introduction.create
user.count

で見ると増えてないんじゃないのかって意味

140センスの良い名無し募集中:2015/01/17(土) 07:02:46
こうなるはず

user = User.create
introduction = Introduction.create
user.count_cache #=> 0
introduction.users << user
user.counter_cache #=> 0

user.reload
user.count_cache #=> 1

141センスの良い名無し募集中:2015/01/17(土) 07:04:44
30行目で変数にreloadの結果を代入してないから上手くいってないんじゃないの?
reloadって副作用があるメソッドじゃないよね?

142センスの良い名無し募集中:2015/01/17(土) 07:06:37
Introductionの生成がユーザテーブルにデータを永続化してると思うから
永続化された後に再度DBからデータを取得しないと期待した値が取れないんだよね?

143センスの良い名無し募集中:2015/01/17(土) 07:06:57
データベースに問い合わせないでメモリにあるやつを返してるんだと思う

144センスの良い名無し募集中:2015/01/17(土) 07:07:23
永続化はとりあえず保存って意味で読んでくれていいや

145センスの良い名無し募集中:2015/01/17(土) 07:09:46
テスト中に止めてtestDB見たら値が入ってるんじゃないかなぁ
おそらくIntroductionの生成時にUserテーブルに対して値を足してるから
その更新された値が必要であればDBからデータを取得しないといけないんだと思う
実行中のプログラム全てに対してチェックして変数の更新は行ってないんじゃない

146センスの良い名無し募集中:2015/01/17(土) 07:11:04
さみゅい

147センスの良い名無し募集中:2015/01/17(土) 07:11:18
Railsを深く触ったことはないけど他のMVCフレームワークだと妥当な挙動だしそうだと思う
DBについて完全にブラックボックス化されてないって言われてるのがこの辺じゃないかな

148センスの良い名無し募集中:2015/01/17(土) 07:12:43
で、reloadっていうのは同じIDのオブジェクトに対して
再度DBから値を取得するメソッドだから上手くいったんだよね?

149センスの良い名無し募集中:2015/01/17(土) 07:24:36
カウンターキャッシュのカラムは普通の方法じゃ更新できひん

150センスの良い名無し募集中:2015/01/17(土) 07:28:35
え、reloadって副作用があるメソッドなのか
それはreload!あたりで実装したらよさそうな気がするけど

151センスの良い名無し募集中:2015/01/17(土) 07:31:30
update は引数ハッシュやろ update(name: "新しい名前")

152センスの良い名無し募集中:2015/01/17(土) 07:31:38
user = introduction.user.reload
でuserが新しいのが取得出来るのなら分かる
introduction.user自体を更新するのはそこ以外のコードの挙動を変える可能性があるから
introduction.user.reload!の方がいいと思うけどな

153センスの良い名無し募集中:2015/01/17(土) 07:34:14
あ、いやActiveRecordの挙動について愚痴ってるだけだよ
破壊的なメソッドには!を付ける文化があるんだしそうしとけよって思った

154センスの良い名無し募集中:2015/01/17(土) 07:35:12
そんな文化ないで
ruby標準のString#deleteも破壊的やし

155センスの良い名無し募集中:2015/01/17(土) 07:36:31
あれ、deleteは破壊できじゃなかった
でもなんかあったで!ないのに破壊するやつ

156センスの良い名無し募集中:2015/01/17(土) 07:37:21
>def xxx!
>「!」はメソッド名の一部です。慣用的に、 同名の(! の無い)メソッドに比べてより破壊的な作用をもつメソッド(例: tr と tr!)で使われます。
一貫してないのは知ってるし、一貫できてないのはクソだと思ってるけど
公式にドキュメントにこう書いてるよ

157センスの良い名無し募集中:2015/01/17(土) 07:39:09
まぁArray#shiftやArray#popが破壊的だししょうがないと言えばそうなんだけど
自分がコーディングするならreload!って書きたいなぁって感じ

158センスの良い名無し募集中:2015/01/17(土) 07:40:55
確かに統一された方が分かりやすいかもしれんな
Array#delete とか壊して欲しくないときある
でも慣れちゃう

159センスの良い名無し募集中:2015/01/17(土) 07:41:37
PHP触ってるとその辺の挙動が全く一貫してなくて本当にクソだし
それに比べたら大分マシなんだけど
ちゃんと統一されてるとドキュメント調べたりpry使って挙動調べる機会が減るし嬉しい

160センスの良い名無し募集中:2015/01/17(土) 07:46:59
なんでreload!じゃないかは多分 reload!.user とか
メソッドチェーンが気持ち悪くなるからだな

161センスの良い名無し募集中:2015/01/17(土) 07:47:18
destroyの返り値ってなんなの?

162センスの良い名無し募集中:2015/01/17(土) 07:54:03
destroyの後もキャッシュ読んでるんじゃね

163センスの良い名無し募集中:2015/01/17(土) 07:56:26
あぁ、reload書いてない場合は0から0への変化に見えて落ちて
reloadした場合は1から1への変更に見えて落ちてるんじゃないのこれ

164センスの良い名無し募集中:2015/01/17(土) 07:57:20
user = introduction.user
ってして user を検査したらどうなるの

165センスの良い名無し募集中:2015/01/17(土) 07:57:44
28行目のreloadを書くか書かないかで失敗する理由が変化してると思う

166センスの良い名無し募集中:2015/01/17(土) 07:59:53
1. re_introductions_count を調べる (1)
2. destroy する
3. re_introductions_count を調べる (キャッシュを読んで1)

introduction.user が 1と同じ状態やから変化してないように見えてる

167センスの良い名無し募集中:2015/01/17(土) 07:59:58
rspecの挙動よく知らないけどこの文法を見るに
expectに渡したブロックが実行される前にchangeブロックが実行されて
expectブロック実行後にchangeブロックが再実行
changeブロックの実行結果の差がbyの引数と一致するか見てるのであってるのかな

168センスの良い名無し募集中:2015/01/17(土) 08:01:33
167で合ってる
destroy しても introduction.user は更新されないから変化なしになってる

169センスの良い名無し募集中:2015/01/17(土) 08:02:49
面倒くさいしexpectの外で
user_id = introduction.user.id
expectの中で
User.find(user_id).re_introductions_count
って書けばいいんじゃない?
別にそんなに分かりにくいわけじゃないし

170センスの良い名無し募集中:2015/01/17(土) 08:04:55
明示的にUserテーブルの値を再確認しにいってるコードになるから
そういう意図のテストだって言うのはまぁ分かりやすくなってると思う

171センスの良い名無し募集中:2015/01/17(土) 08:07:01
あれ、changeの中で毎回reload呼ぶコードにしたら上手く動くよね?
無理?

172センスの良い名無し募集中:2015/01/17(土) 08:09:57
まぁActiveRecordの挙動に振り回されないって意味では分かりやすいよね
いいと思う

173センスの良い名無し募集中:2015/01/17(土) 08:11:14
お出かけ?

174センスの良い名無し募集中:2015/01/17(土) 08:11:43
カウンターキャッシュに変更があったらキャッシュも更新して欲しいぜ
コスト高いんかな

175センスの良い名無し募集中:2015/01/17(土) 08:12:08
どんな服買うの

176センスの良い名無し募集中:2015/01/17(土) 08:13:59
Modelのオブジェクトの変更をトリガーにして
メモリに乗ってる変数を毎回全て走査するのはコスト高すぎると思う
無理じゃないだろうけどある程度以上のアプリケーションになると現実に則してないはず

177センスの良い名無し募集中:2015/01/17(土) 08:16:26
最近流行ってきてるFunctional Reactive Programmingでまたそういうのが話題になってるけど
あれも全変数を走査するんじゃなくてバインディングしておく変数を指定しておく感じだからな
そういうのが取り入れられるのはありえそうだけど

178センスの良い名無し募集中:2015/01/17(土) 08:18:36
あとでテスト書くのが大変ならテストファーストで実装するのも試してみたらいいと思うよ
先にテストを書いておいてそれが動くように実装していくやつ
TDDとかでぐぐれば色々出てくる

179センスの良い名無し募集中:2015/01/17(土) 08:18:58
テストが終わったらデータベース消すやつして

180センスの良い名無し募集中:2015/01/17(土) 08:20:01
仕様を決める>実装するじゃなくて
仕様を決める>テストを書く>テストが動くコードを実装する
ってやり方

181センスの良い名無し募集中:2015/01/17(土) 08:21:24
テストが書きやすいコードを最初からかけるってのがメリットなのはあるね
テストを考えずにコードを書くとテストが書き辛くてコードを書き直す事って結構あるし

182センスの良い名無し募集中:2015/01/17(土) 08:22:56
自分が今の思いつきで適当に書き殴るより
一昨日ドリコムの中の人がテストファースト勉強会ってので使ったプレゼンが上がってたから置いとく
http://www.slideshare.net/sue445/ss-43546341

183センスの良い名無し募集中:2015/01/17(土) 08:24:25
ソシャゲ作ってたりする会社
割と有名だと思う

184センスの良い名無し募集中:2015/01/17(土) 08:24:41
ボクはエラー通知を入れてユーザーにテストさせてます
もしかしたらエラーをはかずに誤動作してるかもしれません

185センスの良い名無し募集中:2015/01/17(土) 08:26:28
そう、メールが送られてくる

186センスの良い名無し募集中:2015/01/17(土) 08:26:46
頭の中で思いついた挙動をドキュメント書く代わりに仕様として定義しておけるのはいいかなー
全部テストファーストで実装するのはやってみると分かるけどかなり辛い

187センスの良い名無し募集中:2015/01/17(土) 08:28:46
テストの書き方1つ取っても境界値のテストをちゃんと書くとか
やり方が色々あるし難しい
大きめのリファクタするときは個人でもテストは役に立つよ

188センスの良い名無し募集中:2015/01/17(土) 08:29:02
rails updateするたびに全部手動で確認はダルいで

189センスの良い名無し募集中:2015/01/17(土) 08:31:08
30点以下の人を赤点と判断するプログラムがあったとして
29点の時の挙動と30点の時の挙動が正しく動いてるか確認するとかそういうの

railsはすぐにサポート終わって仕様が変わるから追従していかないと
脆弱性放置されて公開不可になるとかありそう

190センスの良い名無し募集中:2015/01/17(土) 08:32:46
きっちりしたものを作りたくなったときに
いきなりちゃんとしたテストが網羅的に書けるのかって問題はありそう

191センスの良い名無し募集中:2015/01/17(土) 08:33:06
最悪モデルだけ書いときゃええ
あとはユーザーにテストさせましょう

192センスの良い名無し募集中:2015/01/17(土) 08:33:59
あ、僕も基本的にテストはModelだけでいいと思ってます
ControllerとViewのテストは仕様変更に対するコストが高すぎる

193センスの良い名無し募集中:2015/01/17(土) 08:37:18
モックとスタブはテスト書くときはどの言語でもかなり使うから・・・

194センスの良い名無し募集中:2015/01/17(土) 08:37:36
カメラ屋君と楽しんできて

195センスの良い名無し募集中:2015/01/17(土) 08:37:50
服かったらファッションショーたのまいw

196センスの良い名無し募集中:2015/01/18(日) 21:59:03
配信してお願い

197センスの良い名無し募集中:2015/01/19(月) 19:30:47
蛇にならないでお願い

198センスの良い名無し募集中:2015/01/19(月) 20:44:35
今のにわとりって配信者に似てた

199センスの良い名無し募集中:2015/01/19(月) 20:52:38
最近性欲の調子どう?

200センスの良い名無し募集中:2015/01/19(月) 20:57:08
ありがとうございますを付け足して欲しかった

201センスの良い名無し募集中:2015/01/19(月) 21:16:14
自分で自分のサイトをスクレイプ的な

202センスの良い名無し募集中:2015/01/19(月) 21:21:00
どうも、こんばんわ
部屋壁のリノベーションはうまくいきましたか?

203センスの良い名無し募集中:2015/01/19(月) 21:21:47
真っ白やw

204センスの良い名無し募集中:2015/01/19(月) 21:27:47
マイクで宇多田の音拾ってますの?

205センスの良い名無し募集中:2015/01/19(月) 21:27:52
その適当なブログをだな

206センスの良い名無し募集中:2015/01/19(月) 21:29:32
ハートル先生とかqiitaあたりからひろった方が

207センスの良い名無し募集中:2015/01/19(月) 21:32:16
宇多田ひかるって、みのりんに似てね?

208センスの良い名無し募集中:2015/01/19(月) 21:34:08
勇次郎さんの作ったオムライスがたべたいのぉ

209センスの良い名無し募集中:2015/01/19(月) 21:56:52
何用?

210センスの良い名無し募集中:2015/01/19(月) 21:58:07
カメラ越しだからメッシュに見えて
スポーツ系かと思ったわ

211センスの良い名無し募集中:2015/01/19(月) 21:58:55
でもお高いんでしょう?

212センスの良い名無し募集中:2015/01/19(月) 21:59:21
裾上げタダ?

213センスの良い名無し募集中:2015/01/19(月) 21:59:31
きこりになろう

214センスの良い名無し募集中:2015/01/19(月) 22:00:24
高いけど超頑丈だわなぁ

215センスの良い名無し募集中:2015/01/19(月) 22:01:38
靴値切るとか初めて聞いたがww

216センスの良い名無し募集中:2015/01/19(月) 22:37:22
find("#ID") じゃ駄目なんか

217センスの良い名無し募集中:2015/01/19(月) 22:41:41
click_link "#ID" は?

218センスの良い名無し募集中:2015/01/19(月) 22:45:33
HTMLぶっ壊れてないよね?
ぶっ壊れてると動かないことあるらしいけど

219センスの良い名無し募集中:2015/01/19(月) 22:48:53
#付けないでみるとか
click_link "ID"

220センスの良い名無し募集中:2015/01/19(月) 23:00:40
こんばんわやま
今日朝まである?w

221センスの良い名無し募集中:2015/01/19(月) 23:01:11
終わらないでお願い

222センスの良い名無し募集中:2015/01/19(月) 23:02:05
ドットインストールのHTML終わったよ
今からCSSだよ

223センスの良い名無し募集中:2015/01/19(月) 23:11:49
ピーヒョロからのツクツクツンツン

224センスの良い名無し募集中:2015/01/19(月) 23:26:26
この曲1番好き

225センスの良い名無し募集中:2015/01/19(月) 23:52:35
なんなぁきとるやん?( ‘ω’ )?

226センスの良い名無し募集中:2015/01/19(月) 23:53:06
github有料いきますか




掲示板管理者へ連絡 無料レンタル掲示板