teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

質問内容の修正

2019/03/25 11:43

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -60,4 +60,41 @@
60
60
  if @user.update(user_params)
61
61
  ```
62
62
 
63
- もうわけがわかりません
63
+ もうわけがわかりません
64
+
65
+
66
+ ### 追記
67
+
68
+ ```
69
+ class UserImageUploader < ImageUploader
70
+ # リサイズしたり画像形式を変更するのに必要
71
+ include CarrierWave::MiniMagick
72
+
73
+ process :store_dimensions
74
+
75
+ # サイズを半分にしたものを生成してそのサイズを保存する
76
+ version :half do
77
+ process :resize
78
+ end
79
+
80
+ def resize
81
+ Util.log 'resize'
82
+ resize_to_fit model.resize[0], model.resize[1]
83
+ end
84
+
85
+ def store_dimensions
86
+ if file && model
87
+ resize = MiniMagick::Image.open(file.file).dimensions
88
+ resize[0] = resize[0] / 2
89
+ resize[1] = resize[1] / 2
90
+ model.resize = resize
91
+ end
92
+ end
93
+ end
94
+
95
+ def url
96
+ "#{Settings.api.images}#{self.half.current_path}"
97
+ end
98
+ ```
99
+
100
+ このリサイズしたバージョンのイメージを作らなければ2回呼ばれるだけで正常に保存できるようです

1

質問内容の修正

2019/03/25 11:43

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -26,4 +26,38 @@
26
26
 
27
27
  なぜこういうことがおこるのでしょうか
28
28
  そもそも4回呼ばれる理由もわからないのですが
29
- Carrierwave はブラックボックスが多すぎて原因が全くわからずどこからデバッグすればいいのでしょうか…
29
+ Carrierwave はブラックボックスが多すぎて原因が全くわからずどこからデバッグすればいいのでしょうか…
30
+
31
+
32
+ ### 追記
33
+
34
+ ```
35
+ def filename
36
+ Util.log @f
37
+ if original_filename
38
+ @f ||= "#{SecureRandom.hex(5)}#{File.extname(original_filename)}"
39
+ end
40
+ Util.log @f
41
+ @f
42
+ end
43
+ ```
44
+
45
+ のようにログを増やしてみたのですが
46
+ 最後の1回だけ @f が nil になってしまいます
47
+ なので別にインスタンスが作られているとしか思えません…
48
+
49
+ ```
50
+ Util.log caller.select{|r| r.index('/home') == 0}.join("\n")
51
+ ```
52
+ トレースをはさんでみたのですが4回とも同じコントローラーの update から呼び出されていました
53
+
54
+ コントローラはほとんど手を付けていないデフォルトです
55
+ もちろんその update が実行されたのは1回だけです
56
+ ```
57
+ def update
58
+ Util.log 'update'
59
+ respond_to do |format|
60
+ if @user.update(user_params)
61
+ ```
62
+
63
+ もうわけがわかりません