質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

2374閲覧

【助けてください】herokuとS3とcarrierwaveのアップロードが一部のモデルだけでurlを正しく返しません。

qwer

総合スコア7

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2016/06/12 15:15

編集2016/06/16 18:26

###前提・実現したいこと
現在、localで作ったアプリをデプロイしようと、herokuを使いました。
その際、画像保存として使ったs3とcarrierwaveの連携させました。
dev環境や他のモデルだと問題ないのですが、あるモデルだけ、本番環境では
きちんとurlを返してくれません。
###発生している問題・エラーメッセージ

s3には無事保存できていることが確認できています。しかし、
例えば、3f984e6d-50c9-4478-9c17-93c1ae3394c3.pngという名前の画像でも
ブラウザ上では
/image/4/3" alt="3"
という風に頭の数字しか読み込もうとしてくれません。

developmentでのデータ型はstringなのですが、
productionのpgのDBではデータ型がintegerになっているのでしょうか?

( schema.rbでは t.string "image" となっています )

###該当のソースコード

<問題のモデル> class Article < ActiveRecord::Base belongs_to :user belongs_to :admin has_many :comments has_many :joins, dependent: :destroy has_many :joining_users, through: :joins, source: :user has_many :article_photos accepts_nested_attributes_for :article_photos, allow_destroy: true mount_uploader :image, PhotoUploader is_impressionable before_save do self.wanted_skill.gsub!(/[\[\]\"]/, "") if attribute_present?("wanted_skill",) self.wanted_jobkind.gsub!(/[\[\]\"]/, "") if attribute_present?("wanted_jobkind") end end <uploader> # encoding: utf-8 class PhotoUploader < CarrierWave::Uploader::Base # Include RMagick or MiniMagick support: include CarrierWave::RMagick # include CarrierWave::MiniMagick # 画像の上限を700pxにする process :resize_to_limit => [700, 700] # 保存形式をJPGにする process :convert => 'jpg' # サムネイルを生成する設定 version :thumb do process :resize_to_fit => [150, 150] end # jpg,jpeg,gif,pngしか受け付けない def extension_white_list %w(jpg jpeg gif png) end def filename "#{secure_token}.png" if original_filename.present? end def default_url 'no_photo.png' end protected def secure_token var = :"@#{mounted_as}_secure_token" model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid) end # Choose what kind of storage to use for this uploader: storage :fog # Override the directory where uploaded files will be stored. # This is a sensible default for uploaders that are meant to be mounted: if Rails.env.development? def store_dir "uploads/dev/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end end if Rails.env.production? def store_dir "uploads/pro/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end end end <carrierwave.rb> CarrierWave.configure do |config| config.fog_credentials = { :provider => 'AWS', :aws_access_key_id => 'aws_access_key_id ', :aws_secret_access_key => 'aws_secret_access_key', :region => 'ap-northeast-1', # Tokyo :path_style => true } config.fog_public = true # public-read config.fog_attributes = {'Cache-Control' => 'public, max-age=86400'} config.cache_storage = :fog #キャッシュの場所をS3に変更 # テストとかで同じとこにUPLOADされたくないのでバケットを分けます config.fog_directory = 'musubino-s3' if Rails.env.production? config.fog_directory = 'musubino-s3' if Rails.env.development? CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/ end <view> <!-- 問題の部分 --> <div class="top-img-wrapper"> <%= image_tag @article.image.url %> </div>

###試したこと
別のuploaderを使いましたがうまくいきませんでした。

###お願い
railsを始めたばかりで、初めてのデプロイです。
お力を貸してもらえれば幸いです!!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

再度 stringで定義したカラムを追加してそれに保存すると解決しました。

投稿2016/06/16 18:54

qwer

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問