質問編集履歴

8

1111

2015/05/29 01:14

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- clockworkを使って定期処理を実装したのですが、トランザクションロールバックしてしまいます。cronで実装した時と同じロジックなのですが、cronで処理ていた時はトランザクションロールバックしせんでした。どうすれば直るでしょうか
1
+ clockworkを使って定期処理を実装したのですが、トランザクションロールバックしてしまいます。処理自体はちゃんと動いていま。どうすれば直るでしょうか
2
2
 
3
3
 
4
4
 

7

11

2015/05/29 01:14

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -176,8 +176,6 @@
176
176
 
177
177
  every(60.second, 'trade_limit_end_item_check.job') do
178
178
 
179
- #Dir.chdir("../lib/tasks")
180
-
181
179
  puts `rake item:trade_limit_end_item_check`
182
180
 
183
181
  end
@@ -188,8 +186,6 @@
188
186
 
189
187
  every(300.second, 'limit_day_check.job') do
190
188
 
191
- #Dir.chdir("../lib/tasks")
192
-
193
189
  puts `rake item:limit_day_check`
194
190
 
195
191
  end

6

修正

2015/05/28 08:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -144,16 +144,6 @@
144
144
 
145
145
 
146
146
 
147
-
148
-
149
- #お知らせ一覧
150
-
151
- #Notification.create(exhibitor_id: item.user_id, proprietor_id: warrant.holder_id, item_id: item.id, navi_id: navi.id, body_num: 90000, status: false)
152
-
153
-
154
-
155
-
156
-
157
147
  #アイテムタイムリミットチェックフラグ
158
148
 
159
149
  item.update({limit_check: true, phase: 10010})

5

Rails 4.2 rollback transaction

2015/05/28 08:21

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Rails4.2 activeadmin
1
+ Rails 4.2 rollback transaction
test CHANGED
@@ -1 +1,209 @@
1
- activeadminのカスタマイズすめを教えくださ
1
+ clockworkを使って定期処理を実装したのですが、トランザクションロールバックしてしまいます。cronで実装した時と同じロジックなのですが、cronで処理していた時はトランザクションロールバックしませんでした。どうすれば直るでしょうか
2
+
3
+
4
+
5
+ **ログ**
6
+
7
+ ```lang-<ruby>
8
+
9
+ (0.1ms) begin transaction
10
+
11
+ (0.1ms) rollback transaction
12
+
13
+ (0.3ms) SELECT COUNT(*) FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 17:10:36.818442') AND "items"."trade" = 't' AND "items"."limit_check" = 'f'
14
+
15
+ (0.1ms) begin transaction
16
+
17
+ (0.1ms) rollback transaction
18
+
19
+ (0.3ms) SELECT COUNT(*) FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 17:11:36.916917') AND "items"."trade" = 't' AND "items"."limit_check" = 'f'
20
+
21
+ (0.2ms) begin transaction
22
+
23
+ (0.1ms) rollback transaction
24
+
25
+ (0.2ms) SELECT COUNT(*) FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 17:12:36.602979') AND "items"."trade" = 't' AND "items"."limit_check" = 'f'
26
+
27
+ (0.1ms) begin transaction
28
+
29
+ (0.2ms) rollback transaction
30
+
31
+ (0.3ms) SELECT COUNT(*) FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 17:13:36.908669') AND "items"."trade" = 't' AND "items"."limit_check" = 'f'
32
+
33
+ (0.1ms) begin transaction
34
+
35
+ (0.1ms) rollback transaction
36
+
37
+ (0.4ms) SELECT COUNT(*) FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 17:13:44.742769') AND "items"."trade" = 'f' AND "items"."limit_check" = 'f'
38
+
39
+ (0.1ms) begin transaction
40
+
41
+ (0.1ms) rollback transaction
42
+
43
+ (0.2ms) SELECT COUNT(*) FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 17:14:36.719051') AND "items"."trade" = 't' AND "items"."limit_check" = 'f'
44
+
45
+ (0.2ms) begin transaction
46
+
47
+ (0.1ms) rollback transaction
48
+
49
+ (0.2ms) SELECT COUNT(*) FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 17:15:36.733665') AND "items"."trade" = 't' AND "items"."limit_check" = 'f'
50
+
51
+ (0.3ms) begin transaction
52
+
53
+ (0.1ms) rollback transaction
54
+
55
+ (0.3ms) SELECT COUNT(*) FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 17:16:36.400022') AND "items"."trade" = 't' AND "items"."limit_check" = 'f'
56
+
57
+ ```
58
+
59
+
60
+
61
+ **lib/tasks/item.rake**
62
+
63
+ ```lang-<ruby>
64
+
65
+
66
+
67
+
68
+
69
+ namespace :item do
70
+
71
+ desc "TODO"
72
+
73
+
74
+
75
+
76
+
77
+ #該当するアイテムの取引ナビ作成
78
+
79
+ task trade_limit_end_item_check: :environment do
80
+
81
+ #(limit_day: Time.now-120..Time.now)
82
+
83
+ no_check_item = Item.where(limit_day: Time.mktime(2014, 12, 24, 00, 00, 00).prev_year..Time.now, trade: true, limit_check: false)
84
+
85
+
86
+
87
+
88
+
89
+ if no_check_item.count > 0
90
+
91
+ Item.transaction do
92
+
93
+ no_check_item.find_each do |item|
94
+
95
+ #権利者
96
+
97
+ warrant = Warrant.find_by(item_id: item.id)
98
+
99
+
100
+
101
+ #取引ナビ生成
102
+
103
+ navi = Navi.create(exhibitor_id: item.user_id, proprietor_id: warrant.holder_id, item_id: item.id, status: false, score_judge: true, score_body:'')
104
+
105
+
106
+
107
+ #取引ナビお知らせ
108
+
109
+ Todo.create(exhibitor_id: item.user_id, proprietor_id: warrant.holder_id, item_id: item.id, navi_id: navi.id, body_num: 90000, status: false)
110
+
111
+
112
+
113
+ #アイテムタイムリミットチェックフラグ
114
+
115
+ item.update({limit_check: true, phase: 20000})
116
+
117
+ end
118
+
119
+ end
120
+
121
+ end
122
+
123
+ end
124
+
125
+
126
+
127
+
128
+
129
+ #アイテムタイムリミッチェック
130
+
131
+ task limit_day_check: :environment do
132
+
133
+ #(limit_day: Time.now-120..Time.now)
134
+
135
+ limit_day_end_item = Item.where(limit_day: Time.mktime(2014, 12, 24, 00, 00, 00).prev_year..Time.now, trade: false, limit_check: false)
136
+
137
+
138
+
139
+ if limit_day_end_item.count > 0
140
+
141
+ Item.transaction do
142
+
143
+ limit_day_end_item.find_each do |item|
144
+
145
+
146
+
147
+
148
+
149
+ #お知らせ一覧
150
+
151
+ #Notification.create(exhibitor_id: item.user_id, proprietor_id: warrant.holder_id, item_id: item.id, navi_id: navi.id, body_num: 90000, status: false)
152
+
153
+
154
+
155
+
156
+
157
+ #アイテムタイムリミットチェックフラグ
158
+
159
+ item.update({limit_check: true, phase: 10010})
160
+
161
+
162
+
163
+ end
164
+
165
+ end
166
+
167
+ end
168
+
169
+ end
170
+
171
+ end
172
+
173
+ ```
174
+
175
+
176
+
177
+ **lib/clock.rb**
178
+
179
+ ```lang-<ruby>
180
+
181
+ require 'clockwork'
182
+
183
+ include Clockwork
184
+
185
+
186
+
187
+ every(60.second, 'trade_limit_end_item_check.job') do
188
+
189
+ #Dir.chdir("../lib/tasks")
190
+
191
+ puts `rake item:trade_limit_end_item_check`
192
+
193
+ end
194
+
195
+
196
+
197
+
198
+
199
+ every(300.second, 'limit_day_check.job') do
200
+
201
+ #Dir.chdir("../lib/tasks")
202
+
203
+ puts `rake item:limit_day_check`
204
+
205
+ end
206
+
207
+
208
+
209
+ ```

4

変更

2015/05/28 08:18

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Rails4.2 トランザクションロールバック
1
+ Rails4.2 activeadmin
test CHANGED
@@ -1,177 +1 @@
1
- clockworkを使って定期処理を実装したのですが、トランザクションロールバックしてしまいま。cronで実装した時と同じロジックなのですが、cronで処理していた時はトランザクションロールバックしませんでした。どうすれば直るでしょうか
2
-
3
-
4
-
5
- **ログ**
6
-
7
- ```lang-<ruby>
8
-
9
- (0.1ms) begin transaction
10
-
11
- (0.1ms) rollback transaction
12
-
13
- (0.1ms) begin transaction
14
-
15
- Scoped order and limit are ignored, it's forced to be batch order and batch size
16
-
17
- Item Load (0.4ms) SELECT "items".* FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 16:21:42.835595') AND "items"."trade" = 't' AND "items"."limit_check" = 'f' ORDER BY "items"."id" ASC LIMIT 1000
18
-
19
- (0.1ms) commit transaction
20
-
21
- (0.1ms) begin transaction
22
-
23
- (0.1ms) rollback transaction
24
-
25
- (0.1ms) begin transaction
26
-
27
- Scoped order and limit are ignored, it's forced to be batch order and batch size
28
-
29
- Item Load (0.3ms) SELECT "items".* FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 16:21:49.833162') AND "items"."trade" = 'f' AND "items"."limit_check" = 'f' ORDER BY "items"."id" ASC LIMIT 1000
30
-
31
- (0.1ms) commit transaction
32
-
33
- (0.1ms) begin transaction
34
-
35
- (0.1ms) rollback transaction
36
-
37
- (0.1ms) begin transaction
38
-
39
- Scoped order and limit are ignored, it's forced to be batch order and batch size
40
-
41
- Item Load (0.2ms) SELECT "items".* FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 16:22:42.957663') AND "items"."trade" = 't' AND "items"."limit_check" = 'f' ORDER BY "items"."id" ASC LIMIT 1000
42
-
43
- (0.1ms) commit transaction
44
-
45
-
46
-
47
- ```
48
-
49
-
50
-
51
- **lib/tasks/item.rake**
52
-
53
- ```lang-<ruby>
54
-
55
-
56
-
57
- namespace :item do
58
-
59
- desc "TODO"
60
-
61
- #アイテムのリミットチェックと取引ナビ作成
62
-
63
- task trade_limit_end_item_check: :environment do
64
-
65
- #(limit_day: Time.now-120..Time.now)
66
-
67
- no_check_item = Item.where(limit_day: Time.mktime(2014, 12, 24, 00, 00, 00).prev_year..Time.now, trade: true, limit_check: false)
68
-
69
-
70
-
71
- Item.transaction do
72
-
73
- no_check_item.find_each do |item|
74
-
75
- warrant = Warrant.find_by(item_id: item.id)
76
-
77
-
78
-
79
- #取引ナビ生成
80
-
81
- navi = Navi.create(exhibitor_id: item.user_id, proprietor_id: warrant.holder_id, item_id: item.id, status: false, score_judge: true, score_body:'')
82
-
83
-
84
-
85
- #お知らせ一覧 取引ナビお知らせ
86
-
87
- Todo.create(exhibitor_id: item.user_id, proprietor_id: warrant.holder_id, item_id: item.id, navi_id: navi.id, body_num: 90000, status: false)
88
-
89
-
90
-
91
- #ループ中のcreateのパフォーマンスも気になるようであれば、activerecord-importというgemを利用する
92
-
93
-
94
-
95
- #アイテムタイムリミットチェックフラグ
96
-
97
- item.update({limit_check: true, phase: 20000})
98
-
99
- end
100
-
101
- end
102
-
103
- end
104
-
105
-
106
-
107
-
108
-
109
- #アイテムタイムリミッチェック
110
-
111
- task limit_day_check: :environment do
112
-
113
- #(limit_day: Time.now-120..Time.now)
114
-
115
- limit_day_end_item = Item.where(limit_day: Time.mktime(2014, 12, 24, 00, 00, 00).prev_year..Time.now, trade: false, limit_check: false)
116
-
117
-
118
-
119
- Item.transaction do
120
-
121
- limit_day_end_item.find_each do |item|
122
-
123
- #お知らせ一覧
124
-
125
- #Notification.create(exhibitor_id: item.user_id, proprietor_id: warrant.holder_id, item_id: item.id, navi_id: navi.id, body_num: 90000, status: false)
126
-
127
- #アイテムタイムリミットチェックフラグ
128
-
129
- item.update({limit_check: true, phase: 10010})
130
-
131
-
132
-
133
- end
134
-
135
- end
136
-
137
- end
138
-
139
- end
140
-
141
- ```
142
-
143
-
144
-
145
- **lib/clock.rb**
146
-
147
- ```lang-<ruby>
148
-
149
- require 'clockwork'
150
-
151
- include Clockwork
152
-
153
-
154
-
155
- every(60.second, 'trade_limit_end_item_check.job') do
156
-
157
- #Dir.chdir("../lib/tasks")
158
-
159
- puts `rake item:trade_limit_end_item_check`
160
-
161
- end
162
-
163
-
164
-
165
-
166
-
167
- every(300.second, 'limit_day_check.job') do
168
-
169
- #Dir.chdir("../lib/tasks")
170
-
171
- puts `rake item:limit_day_check`
172
-
173
- end
174
-
175
-
176
-
177
- ```
1
+ activeadminカスタマイズすすめを教えくださ

3

追加

2015/05/28 07:44

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -6,9 +6,43 @@
6
6
 
7
7
  ```lang-<ruby>
8
8
 
9
- (0.1ms) begin transaction
9
+ (0.1ms) begin transaction
10
10
 
11
- (0.1ms) rollback transaction
11
+ (0.1ms) rollback transaction
12
+
13
+ (0.1ms) begin transaction
14
+
15
+ Scoped order and limit are ignored, it's forced to be batch order and batch size
16
+
17
+ Item Load (0.4ms) SELECT "items".* FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 16:21:42.835595') AND "items"."trade" = 't' AND "items"."limit_check" = 'f' ORDER BY "items"."id" ASC LIMIT 1000
18
+
19
+ (0.1ms) commit transaction
20
+
21
+ (0.1ms) begin transaction
22
+
23
+ (0.1ms) rollback transaction
24
+
25
+ (0.1ms) begin transaction
26
+
27
+ Scoped order and limit are ignored, it's forced to be batch order and batch size
28
+
29
+ Item Load (0.3ms) SELECT "items".* FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 16:21:49.833162') AND "items"."trade" = 'f' AND "items"."limit_check" = 'f' ORDER BY "items"."id" ASC LIMIT 1000
30
+
31
+ (0.1ms) commit transaction
32
+
33
+ (0.1ms) begin transaction
34
+
35
+ (0.1ms) rollback transaction
36
+
37
+ (0.1ms) begin transaction
38
+
39
+ Scoped order and limit are ignored, it's forced to be batch order and batch size
40
+
41
+ Item Load (0.2ms) SELECT "items".* FROM "items" WHERE "items"."deleted_at" IS NULL AND ("items"."limit_day" BETWEEN '2013-12-24 00:00:00.000000' AND '2015-05-28 16:22:42.957663') AND "items"."trade" = 't' AND "items"."limit_check" = 'f' ORDER BY "items"."id" ASC LIMIT 1000
42
+
43
+ (0.1ms) commit transaction
44
+
45
+
12
46
 
13
47
  ```
14
48
 

2

あああ

2015/05/28 07:23

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  desc "TODO"
26
26
 
27
- #アイテムのリミットとトレードチェック取引ナビ作成
27
+ #アイテムのリミットチェック取引ナビ作成
28
28
 
29
29
  task trade_limit_end_item_check: :environment do
30
30
 

1

修正

2015/05/28 06:46

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -14,17 +14,7 @@
14
14
 
15
15
 
16
16
 
17
-
18
-
19
-
20
-
21
- lib/tasks/item.rake
17
+ **lib/tasks/item.rake**
22
-
23
-
24
-
25
-
26
-
27
-
28
18
 
29
19
  ```lang-<ruby>
30
20
 
@@ -114,17 +104,7 @@
114
104
 
115
105
  end
116
106
 
117
-
118
-
119
-
120
-
121
107
  ```
122
-
123
-
124
-
125
-
126
-
127
-
128
108
 
129
109
 
130
110