質問編集履歴
5
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,29 +6,123 @@
|
|
6
6
|
|
7
7
|
```ruby
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
@e
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
e
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
@
|
30
|
-
|
31
|
-
|
9
|
+
def on
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
@article = Article.find(params[:article_id])
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
# 準備としてパーツのコピーを生成する。
|
18
|
+
|
19
|
+
@bodies = ArticleBody
|
20
|
+
|
21
|
+
.where(article_id: @article.id)
|
22
|
+
|
23
|
+
.order(list_num: :ASC)
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
# ボディパーツがない場合は、本番モードに戻す。
|
28
|
+
|
29
|
+
if @bodies.blank?
|
30
|
+
|
31
|
+
flash[:success] = "まだパーツがないので本番モードで記事作成をしてください。"
|
32
|
+
|
33
|
+
redirect_to controller: 'articles', action: 'edit', id: @article.id
|
34
|
+
|
35
|
+
return
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
# トランザクション付きで全てのedit_bodyを複製
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
EditBody.transaction do
|
48
|
+
|
49
|
+
@bodies.each do |body|
|
50
|
+
|
51
|
+
@edit_body = body.attributes
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
# 画像がないパーツの保存
|
56
|
+
|
57
|
+
if @edit_body["part_image"].blank?
|
58
|
+
|
59
|
+
@edit_body.delete("id")
|
60
|
+
|
61
|
+
EditBody.create!(@edit_body)
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
# 画像が含まれるパーツの保存
|
66
|
+
|
67
|
+
else
|
68
|
+
|
69
|
+
@image_id = @edit_body["id"]
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
if Rails.env.production?
|
74
|
+
|
75
|
+
@env = "https://○○○.s3.amazonaws.com"
|
76
|
+
|
77
|
+
else
|
78
|
+
|
79
|
+
@env = "http://0.0.0.0:3000"
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
@image = open(@env + "/uploads/article_body/part_image/"+ @image_id.to_s + "/" + @edit_body["part_image"],'rb')
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
@edit_body["part_image"] = @image
|
90
|
+
|
91
|
+
@edit_body.delete("id")
|
92
|
+
|
93
|
+
EditBody.create!(@edit_body)
|
94
|
+
|
95
|
+
@image.close
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
# 例外が発生していない場合の処理(編集モードに切り替えて元の画面に返す)
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
@article.update(edit_mode: true)
|
110
|
+
|
111
|
+
redirect_to controller: 'articles', action: 'edit', id: @article.id
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
rescue => e
|
116
|
+
|
117
|
+
# 例外が発生した場合の処理(エラー付きで元の画面に返すだけ)
|
118
|
+
|
119
|
+
respond_to do |format|
|
120
|
+
|
121
|
+
format.html { redirect_to(edit_managements_article_path(@article.id) , danger: '編集モードへの移行に失敗しました。お手数ですが、ブラウザを更新した上で再度お試しください。')}
|
122
|
+
|
123
|
+
# end
|
124
|
+
|
125
|
+
end
|
32
126
|
|
33
127
|
```
|
34
128
|
|
4
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -63,3 +63,71 @@
|
|
63
63
|
|
64
64
|
|
65
65
|
惜しいところまで行っている気がするのですが、何がダメなのでしょうか?10kg程度のファイルをopenする場合は何か他に特別な処理が必要なのでしょうか?
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
###追加情報
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
①エラー発生画面
|
74
|
+
|
75
|
+

|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
②エラー発生時にターミナルに表示される履歴
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
```ruby
|
84
|
+
|
85
|
+
Started POST "/managements/articles/56/edit_bodies/on" for 10.0.2.2 at 2017-12-02 17:26:48 +0900
|
86
|
+
|
87
|
+
Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
|
88
|
+
|
89
|
+
Processing by Managements::EditBodiesController#on as HTML
|
90
|
+
|
91
|
+
Parameters: {"authenticity_token"=>"QTxt99bCtvSt1rQCKRUzcBAu0S0w6HduXbrxhfRD8/tD8ts5j5KiBBFC41CosGMJLvivUH+r9SC9vo//KADKXw==", "article_id"=>"56"}
|
92
|
+
|
93
|
+
Admin Load (0.4ms) SELECT `admins`.* FROM `admins` WHERE `admins`.`id` = 1 ORDER BY `admins`.`id` ASC LIMIT 1
|
94
|
+
|
95
|
+
Article Load (0.2ms) SELECT `articles`.* FROM `articles` WHERE `articles`.`id` = 56 LIMIT 1
|
96
|
+
|
97
|
+
ArticleBody Load (0.6ms) SELECT `article_bodies`.* FROM `article_bodies` WHERE `article_bodies`.`article_id` = 56 ORDER BY `article_bodies`.`list_num` ASC
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
Completed 500 Internal Server Error in 36ms (ActiveRecord: 4.8ms)
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
TypeError (no implicit conversion of nil into String):
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
app/controllers/managements/edit_bodies_controller.rb:51:in `block in on'
|
114
|
+
|
115
|
+
app/controllers/managements/edit_bodies_controller.rb:25:in `on'
|
116
|
+
|
117
|
+
Rendering /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout
|
118
|
+
|
119
|
+
Rendering /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb
|
120
|
+
|
121
|
+
Rendered /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (3.6ms)
|
122
|
+
|
123
|
+
Rendering /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb
|
124
|
+
|
125
|
+
Rendered /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (2.1ms)
|
126
|
+
|
127
|
+
Rendering /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
|
128
|
+
|
129
|
+
Rendered /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.2ms)
|
130
|
+
|
131
|
+
Rendered /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (32.6ms)
|
132
|
+
|
133
|
+
```
|
3
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,27 +8,27 @@
|
|
8
8
|
|
9
9
|
@image_id = @edit_body["id"]
|
10
10
|
|
11
|
-
|
11
|
+
if Rails.env.production?
|
12
12
|
|
13
|
-
|
13
|
+
@env = "https://○○○.s3.amazonaws.com"
|
14
14
|
|
15
|
-
|
15
|
+
else
|
16
16
|
|
17
|
-
|
17
|
+
@env = "http://0.0.0.0:3000"
|
18
18
|
|
19
|
-
|
19
|
+
end
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
|
23
|
+
@image = open(@env + "/uploads/article_body/part_image/"+ @image_id.to_s + "/" + @edit_body["part_image"])
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
|
27
|
+
@edit_body["part_image"] = @image
|
28
28
|
|
29
|
-
|
29
|
+
@edit_body.delete("id")
|
30
30
|
|
31
|
-
|
31
|
+
EditBody.create!(@edit_body)
|
32
32
|
|
33
33
|
```
|
34
34
|
|
2
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
if Rails.env.production?
|
12
12
|
|
13
|
-
@env = "https://
|
13
|
+
@env = "https://○○○.s3.amazonaws.com"
|
14
14
|
|
15
15
|
else
|
16
16
|
|
1
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,36 +1,6 @@
|
|
1
1
|
###発生している問題
|
2
2
|
|
3
3
|
下記のプログラムを動かした時に`no implicit conversion of nil into String`というエラーが表示されるケースがあって困っています。
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
具体的には`@image = open(@env + "/uploads/article_body/part_image/"+ @image_id.to_s + "/" + @edit_body["part_image"])`の部分です。
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
①問題ない時は@imageの中身
|
12
|
-
|
13
|
-
> <Tempfile:/tmp/open-uri20171202-3561-eabc01>
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
②エラーになる時の@imageの中身
|
18
|
-
|
19
|
-
> <StringIO:0x007f98c57effa8 @base_uri=#<URI::HTTP http://0.0.0.0:3000/uploads/article_body/part_image/850/7d306eb5-b26a-4fdb-a900-377fc0883860.jpg>, @meta={"last-modified"=>"Sat, 02 Dec 2017 06:54:10 GMT", "content-type"=>"image/jpeg", "content-length"=>"10087"}, @metas={"last-modified"=>["Sat, 02 Dec 2017 06:54:10 GMT"], "content-type"=>["image/jpeg"], "content-length"=>["10087"]}, @status=["200", "OK"]>
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
###なんとなくわかっている事
|
24
|
-
|
25
|
-
10kb程度の小さな画像ファイルをopenする場合に発生している模様。どうやら容量が小さいとひらけない?
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
###やってみた事
|
30
|
-
|
31
|
-
[こちらの記事](http://www.geocities.jp/m_hiroi/light/abcruby04.html)を参考に、第二引数に`"rb"`を追加し`@image = open(@env + "/uploads/article_body/part_image/"+ @image_id.to_s + "/" + @edit_body["part_image"],"rb")`としてみましたが、結果は同じでした。
|
32
|
-
|
33
|
-
|
34
4
|
|
35
5
|
|
36
6
|
|
@@ -64,4 +34,32 @@
|
|
64
34
|
|
65
35
|
|
66
36
|
|
37
|
+
具体的には`@image = open(@env + "/uploads/article_body/part_image/"+ @image_id.to_s + "/" + @edit_body["part_image"])`の部分です。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
①問題ない時は@imageの中身
|
42
|
+
|
43
|
+
> <Tempfile:/tmp/open-uri20171202-3561-eabc01>
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
②エラーになる時の@imageの中身
|
48
|
+
|
49
|
+
> <StringIO:0x007f98c57effa8 @base_uri=#<URI::HTTP http://0.0.0.0:3000/uploads/article_body/part_image/850/7d306eb5-b26a-4fdb-a900-377fc0883860.jpg>, @meta={"last-modified"=>"Sat, 02 Dec 2017 06:54:10 GMT", "content-type"=>"image/jpeg", "content-length"=>"10087"}, @metas={"last-modified"=>["Sat, 02 Dec 2017 06:54:10 GMT"], "content-type"=>["image/jpeg"], "content-length"=>["10087"]}, @status=["200", "OK"]>
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
###なんとなくわかっている事
|
54
|
+
|
55
|
+
10kb程度の小さな画像ファイルをopenする場合に発生している模様。どうやら容量が小さいとひらけない?
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
###やってみた事
|
60
|
+
|
61
|
+
[こちらの記事](http://www.geocities.jp/m_hiroi/light/abcruby04.html)を参考に、第二引数に`"rb"`を追加し`@image = open(@env + "/uploads/article_body/part_image/"+ @image_id.to_s + "/" + @edit_body["part_image"],"rb")`としてみましたが、結果は同じでした。
|
62
|
+
|
63
|
+
|
64
|
+
|
67
65
|
惜しいところまで行っている気がするのですが、何がダメなのでしょうか?10kg程度のファイルをopenする場合は何か他に特別な処理が必要なのでしょうか?
|