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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Heroku

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

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

Q&A

解決済

1回答

679閲覧

herokuでエラーになる

popomarudasi

総合スコア20

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Heroku

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

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

0グッド

0クリップ

投稿2020/07/06 07:44

編集2020/07/06 09:16

ECサイトを作成しています。
モデルは以下の通りです。
ローカル環境ではうまくいっていたのですが、
herokuにデプロイするとcreateアクションでエラーが起こってしまいます。
/products/new → /products(createアクション) に画面遷移してエラーになります。
ローカル環境と本番環境の違いは本番環境ではアップロード先を、
AWS S3に指定してるところです。(下記コードのアップローダーの部分)
なぜnewアクションでエラーが起こるのか検討もつかないので、間違いがあれば指摘いただけると幸いです。
下記に該当コードを記載します。


商品モデル productモデルカラム

title(商品名)description(説明)price(値段)stock_quantity(在庫)images(複数写真)
string型text型integer型integer型json型

ユーザモデル userモデルカラム

name(名前)email(メアド)password(パスワード)address(住所)
string型string型string型string型

ruby

1↓gemファイル 2 3gem 'pg' 4gem 'devise' 5gem 'carrierwave' 6gem 'mini_magick' 7gem 'fog-aws'

ruby

1ルーティング↓ 2 3Rails.application.routes.draw do 4 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 5 root 'products#index' 6 resources :products 7 get '/products/:id/buy' => 'products#buy' 8 post '/products/:id/pay' => 'products#pay' 9 devise_for :users 10end 11

ruby

1↓プロダクトコントローラー 該当部分 2 3class ProductsController < ApplicationController 4 def new 5 @product = Product.new 6 end 7 8 def create 9 @product = Product.new(product_params) 10 if @product.save 11 redirect_to root_path, notice:'商品を登録しました' 12 else 13 render :new 14 end 15 end 16 17 private 18 def product_params 19 params.require(:product).permit(:title,:description,:price,:stock_quantity,{images: []}) 20 end 21 22end

ruby

1/views/products/new.html.erb newページ ビュー 2 3<p>商品登録</p> 4<div class="form-wrapper"> 5<%= form_with model: @product, local: true do |f| %> 6 <div class="form"> 7 <p>商品名(20文字以内)</p> 8 <%= f.text_field :title, :placeholder => "商品名(20文字以内)" %> 9 </div> 10 <div class="form"> 11 <p>商品説明(500文字以内)</p> 12 <%= f.text_area :description, :placeholder => "商品説明(500文字以内)", :cons => "20", :wrap => "hard" %> 13 </div> 14 <div class="form"> 15 <p>価格(税込)※数字のみ記述</p> 16 <%= f.number_field :price, :placeholder => "価格(税込)※数字のみ記述" %> 17 </div> 18 <div class="form"> 19 <p>在庫数 ※数字のみ記述</p> 20 <%= f.number_field :stock_quantity, :placeholder => "在庫数 ※数字のみ記述" %> 21 </div> 22 <div class="form img"> 23 <p>画像(1枚必須・5枚まで任意)</p> 24 <%= f.file_field :images, multiple: true %> 25 <%= f.file_field :images, multiple: true %> 26 <%= f.file_field :images, multiple: true %> 27 <%= f.file_field :images, multiple: true %> 28 <%= f.file_field :images, multiple: true %> 29 </div> 30 <div class="form"> 31 <%= f.submit value="登録" %> 32 </div> 33<% end %> 34</div>

ruby

1↓アップローダー 2 3class ImagesUploader < CarrierWave::Uploader::Base 4 5 include CarrierWave::MiniMagick 6 7 #本番環境ではS3へ画像アップロード 8 if Rails.env.development? 9 storage :file 10 elsif Rails.env.test? 11 storage :file 12 else 13 storage :fog 14 end 15 16 def store_dir 17 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 18 end 19 20 #画像リサイズ 21 version :thumb do 22 process resize_to_fill: [180, 180,"Center"] 23 end 24 version :thumb50 do 25 process resize_to_fill: [400, 400,"Center"] 26 end 27 28end 29

ruby

1/config/initializers/carrierwave.rb 2 3unless Rails.env.development? || Rails.env.test? 4 CarrierWave.configure do |config| 5 6 config.fog_credentials = { 7 provider: 'AWS', 8 aws_access_key_id: ENV['herokuに設定している環境変数'], 9 aws_secret_access_key: ENV['herokuに設定している環境変数'], 10 region: 'ap-northeast-1' 11 } 12 13 config.fog_directory = 'バケット名' 14 config.asset_host = 'https://バケット名.s3.amazonaws.com' 15 config.cache_storage = :fog 16 config.fog_provider = 'fog/aws' 17 18 end 19end 20

ruby

1↓database.yml 2 3default: &default 4 adapter: postgresql 5 encoding: unicode 6 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 7 8development: 9 <<: *default 10 database: LimeApp_development 11 12test: 13 <<: *default 14 database: LimeApp_test 15 16production: 17 <<: *default 18 adapter: postgresql 19 encoding: unicode 20 pool: 5

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

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

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

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

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

guest

回答1

0

自己解決

様々なサイトを周り解決できました。

# 下記の三行は入れていた方がいいらしい require 'carrierwave/storage/abstract' require 'carrierwave/storage/file' require 'carrierwave/storage/fog' if Rails.env.production? CarrierWave.configure do |config| config.storage :fog config.fog_provider = 'fog/aws' config.fog_credentials = { # Amazon S3用の設定 provider: 'AWS', region: 'ap-northeast-1', aws_access_key_id: ENV['AWS_ACCESS_KEY'], aws_secret_access_key: ENV['AWS_PRIVATE_KEY'], } config.fog_directory = 'limeapp-bucket' config.asset_host = 'https://s3.amazonaws.com/limeapp-bucket' config.fog_public = false config.fog_attributes = { cache_control: "public, max-age=#{365.days.to_i}" } end # 日本語ファイル名の設定 CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:].\-+]/ end

config.fog_public = false
↑この1文が重要みたいです。
参考になれば幸いです。

投稿2020/07/06 10:58

popomarudasi

総合スコア20

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問