herokuでcarrierwaveを使った画像のアップロードだけでなく、文字だけの投稿でもエラーが出てしまう
- 評価
- クリップ 0
- VIEW 113
ローカル環境ではきちんとアップロードできるのですが、herokuにて画像をアップロードしようとすると、エラーが出てしまいます。
※追記
画像アップロードは無しで、文字だけの投稿をしようとしても同様のエラーが出てしまいます。
ログ情報は以下の通りです。
2017-12-13T05:41:37.503141+00:00 app[web.1]: Processing by TweetsController#create as HTML
2017-12-13T05:41:37.503184+00:00 app[web.1]: Parameters: {"utf8"=>"✓", "authenticity_token"=>"E83/owPz3KwRi34N+89NuykjCi6tmVHPZwM1DcPALx6ZJP6IljBYEUmRVwSR39ep7EqVBlpuFjt+/le7/3KuQg==", "tweet"=>{"text"=>"投稿したテキスト情報。"}, "commit"=>"投稿する"}
2017-12-13T05:41:37.506656+00:00 app[web.1]: [1m[36mUser Load (2.3ms)[0m [1mSELECT `users`.* FROM `users` WHERE `users`.`id` = 21 ORDER BY `users`.`id` ASC LIMIT 1[0m
2017-12-13T05:41:37.509520+00:00 app[web.1]: [1m[35m (1.8ms)[0m BEGIN
2017-12-13T05:41:37.512904+00:00 app[web.1]: [1m[36mSQL (2.0ms)[0m [1mINSERT INTO `tweets` (`text`, `user_id`, `created_at`, `updated_at`) VALUES ('投稿したテキスト情報。', 21, '2017-12-13 05:41:37', '2017-12-13 05:41:37')[0m
2017-12-13T05:41:37.515321+00:00 app[web.1]: [1m[35m (1.8ms)[0m COMMIT
2017-12-13T05:41:37.516854+00:00 app[web.1]: Rendered tweets/create.html.erb within layouts/application (0.5ms)
2017-12-13T05:41:37.518173+00:00 app[web.1]: Rendered common/_header.html.erb (0.8ms)
2017-12-13T05:41:37.518403+00:00 app[web.1]: Completed 200 OK in 15ms (Views: 2.7ms | ActiveRecord: 7.9ms)
2017-12-13T05:41:37.773991+00:00 heroku[router]: at=info method=GET path="/css/bootstrap.min.css" host=thawing-wildwood-67353.herokuapp.com request_id=38e01828-64b8-40b0-8a4f-935e381448e2 fwd="221.113.38.150" dyno=web.1 connect=1ms service=9ms status=404 bytes=1829 protocol=https
2017-12-13T05:41:42.044501+00:00 heroku[router]: at=info method=GET path="/" host=thawing-wildwood-67353.herokuapp.com request_id=510359d9-352d-4f33-8441-ccf0bd3d22a3 fwd="221.113.38.150" dyno=web.1 connect=1ms service=92ms status=500 bytes=1754 protocol=https
※追記
ローカル環境下では、AWS S3のバケットに画像は保存されています。
herokuでは、エラーが出てしまう状況です。
この現象には、どのような原因が考えられますでしょうか。
index.html.erb
<% @tweets.each do |tweet| %>
<div class="waku">
<div class="tweet col-xs-3 col-md-3 block">
<!-- <div class="row row-eq-height"> -->
<div class="trim">
<div class="tweet_image">
<%= image_tag tweet.image.url %>
</div>
</div>
<div class="tweet_text">
<%= tweet.text %>
</div>
<div class="user">
<p>投稿者: <%= tweet.user.family_name %> <%= tweet.user.first_name %></p>
</div>
<!-- ユーザー自身が投稿した作品の場合に編集・削除・編集ができる-->
<% if user_signed_in? && current_user.id == tweet.user_id %>
<div class="dropdown">
<button class="btn btn-link btn-xs btn-block dropdown-toggle" type="button" data-toggle="dropdown">
編集・削除
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li role="presentation"><%= link_to '編集', "/tweets/#{tweet.id}/edit", method: :get %></li>
<li role="presentation"><%= link_to '削除', "/tweets/#{tweet.id}", method: :delete %></li>
</ul>
</div>
<% end %>
<!-- </div> -->
</div>
</div>
<% end %>
new.html.erb
<div class="form">
<div class="col-lg-12">
<%= form_for(@tweet) do |f| %>
<h3>
作品を投稿してみましょう
</h3>
<div class="form-group">
<%= f.text_area :text, placeholder: "作品について入力してください", cols:"30", rows:"10", autofocus:"true", class:"form-control" %>
</div>
<div class="form-group file">
<%= f.file_field :image, class: "form-control floating-label", placeholder: "画像アップロード" %>
</div>
<div class="form-group">
<%= f.submit "投稿する", class:"btn btn-default" %>
</div>
<% end %>
</div>
</div>
image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick
include CarrierWave::MiniMagick
# Choose what kind of storage to use for this uploader:
storage :fog
# storage :fog
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
# Provide a default URL as a default if there hasn't been a file uploaded:
# def default_url(*args)
# # For Rails 3.1+ asset pipeline compatibility:
# # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
#
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
# end
# Process files as they are uploaded:
# process scale: [200, 300]
process :resize_to_fill => [260, 520]
#
# def scale(width, height)
# # do something
# end
# Create different versions of your uploaded files:
version :thumb do
process resize_to_limit: [260, 260]
end
# Add a white list of extensions which are allowed to be uploaded.
# For images you might use something like this:
# def extension_whitelist
# %w(jpg jpeg gif png)
# end
# Override the filename of the uploaded files:
# Avoid using model.id or version_name here, see uploader/store.rb for details.
# def filename
# "something.jpg" if original_filename
# end
# 画像の横回転を防ぐ
# process :fix_rotate
# def fix_rotate
# manipulate! do |img|
# img = img.auto_orient
# img = yield(img) if block_given?
# img
# end
# end
end
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
check解決した方法
0
原因は「iros_count」というlike機能のカラムでエラーが出ていたことでした。
私が別で質問していたこちらで、解決いたしました。
https://teratail.com/questions/104624
お騒がせいたしました。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
Herokuのディスクはすべて/tmp
のようなもので、適当なタイミング(1日1回以上)で消されるものなので、アップロードしたファイルを置くには全く適しません(リファレンス)。
S3などを借りて、そちらに置くようにCarrierWaveの設定を変更しましょう。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 91.06%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる