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

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

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

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

2回答

2049閲覧

Herokuでのdb:seedができない

begenner

総合スコア79

Heroku

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2018/06/11 23:59

編集2018/06/12 01:41

Railsにて一応のサンプルができあがりherokuにアップして初期データを投入しようとしたところ、エラーが発生し、詰まっています。
db:migrate自体は問題なく動作しました。
エラーの内容から自分の中で考えられるのは

  • 画像の初期データをアップしているところでエラーが発生している
  • S3を使っていることが原因
  • Herokuのregionがアメリカ、自分のregion(S3)は日本

であることが原因のように考えられますが対処の仕方がわかりません。
わかる方がいらっしゃれば教えていただきますようよろしくお願いいたします(m_ _m)

###エラー内容
エラーログ

rake aborted! Excon::Error::BadRequest: Expected(200) <=> Actual(400 Bad Request) excon.error.response :body => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>AuthorizationHeaderMalformed</Code><Message>The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'ap-northeast-1'</Message><Region>ap-northeast-1</Region><RequestId>2EC7E6D960D35DB4</RequestId><HostId>vVIJEaTWzD/fiC5U97KYd0QR6LsKmWAaKDINLa1yMrraVmVhK+Z/nE9R1DSw+ZcidyrkpyXh1Ss=</HostId></Error>" :cookies => [ ] :headers => { "Connection" => "close" "Content-Type" => "application/xml" "Date" => "Mon, 11 Jun 2018 23:45:04 GMT" "Server" => "AmazonS3" "x-amz-id-2" => "vVIJEaTWzD/fiC5U97KYd0QR6LsKmWAaKDINLa1yMrraVmVhK+Z/nE9R1DSw+ZcidyrkpyXh1Ss=" "x-amz-request-id" => "2EC7E6D960D35DB4" } :host => "xxx-production.s3.amazonaws.com" :local_address => "172.16.85.162" :local_port => 54390 :path => "/uploads/tmp/1528760700-4-0001-7336/1_1.jpg" :port => 443 :reason_phrase => "Bad Request" :remote_ip => "52.219.4.73" :status => 400 :status_line => "HTTP/1.1 400 Bad Request\r\n" /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/middlewares/expects.rb:7:in `response_call' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/middlewares/response_parser.rb:9:in `response_call' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/connection.rb:414:in `response' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/connection.rb:263:in `request' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/middlewares/idempotent.rb:33:in `error_call' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/middlewares/base.rb:11:in `error_call' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/middlewares/base.rb:11:in `error_call' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/connection.rb:283:in `rescue in request' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/connection.rb:226:in `request' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/middlewares/idempotent.rb:33:in `error_call' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/middlewares/base.rb:11:in `error_call' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/middlewares/base.rb:11:in `error_call' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/connection.rb:283:in `rescue in request' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/connection.rb:226:in `request' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/middlewares/idempotent.rb:33:in `error_call' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/middlewares/base.rb:11:in `error_call' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/middlewares/base.rb:11:in `error_call' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/connection.rb:283:in `rescue in request' /app/vendor/bundle/ruby/2.3.0/gems/excon-0.62.0/lib/excon/connection.rb:226:in `request' /app/vendor/bundle/ruby/2.3.0/gems/fog-core-2.1.0/lib/fog/core/connection.rb:81:in `request' /app/vendor/bundle/ruby/2.3.0/gems/fog-xml-0.1.3/lib/fog/xml/connection.rb:9:in `request' /app/vendor/bundle/ruby/2.3.0/gems/fog-aws-3.0.0/lib/fog/aws/storage.rb:613:in `_request' /app/vendor/bundle/ruby/2.3.0/gems/fog-aws-3.0.0/lib/fog/aws/storage.rb:608:in `request' /app/vendor/bundle/ruby/2.3.0/gems/fog-aws-3.0.0/lib/fog/aws/requests/storage/put_object.rb:46:in `put_object' /app/vendor/bundle/ruby/2.3.0/gems/fog-aws-3.0.0/lib/fog/aws/models/storage/file.rb:220:in `save' /app/vendor/bundle/ruby/2.3.0/gems/fog-core-2.1.0/lib/fog/core/collection.rb:50:in `create' /app/vendor/bundle/ruby/2.3.0/gems/carrierwave-1.2.2/lib/carrierwave/storage/fog.rb:315:in `store' /app/vendor/bundle/ruby/2.3.0/gems/carrierwave-1.2.2/lib/carrierwave/storage/fog.rb:110:in `cache!' /app/vendor/bundle/ruby/2.3.0/gems/carrierwave-1.2.2/lib/carrierwave/uploader/cache.rb:138:in `block in cache!' /app/vendor/bundle/ruby/2.3.0/gems/carrierwave-1.2.2/lib/carrierwave/uploader/callbacks.rb:15:in `with_callbacks' /app/vendor/bundle/ruby/2.3.0/gems/carrierwave-1.2.2/lib/carrierwave/uploader/cache.rb:137:in `cache!' /app/vendor/bundle/ruby/2.3.0/gems/carrierwave-1.2.2/lib/carrierwave/mounter.rb:44:in `block in cache' /app/vendor/bundle/ruby/2.3.0/gems/carrierwave-1.2.2/lib/carrierwave/mounter.rb:42:in `map' /app/vendor/bundle/ruby/2.3.0/gems/carrierwave-1.2.2/lib/carrierwave/mounter.rb:42:in `cache' /app/vendor/bundle/ruby/2.3.0/gems/carrierwave-1.2.2/lib/carrierwave/mount.rb:146:in `mainImage=' /app/vendor/bundle/ruby/2.3.0/gems/carrierwave-1.2.2/lib/carrierwave/orm/activerecord.rb:70:in `mainImage=' /app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.10/lib/active_record/attribute_assignment.rb:54:in `public_send' /app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.10/lib/active_record/attribute_assignment.rb:54:in `_assign_attribute' /app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.10/lib/active_record/attribute_assignment.rb:41:in `block in assign_attributes' /app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.10/lib/active_record/attribute_assignment.rb:35:in `each' /app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.10/lib/active_record/attribute_assignment.rb:35:in `assign_attributes' /app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.10/lib/active_record/core.rb:566:in `init_attributes' /app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.10/lib/active_record/core.rb:281:in `initialize' /app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.10/lib/active_record/inheritance.rb:61:in `new' /app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.10/lib/active_record/inheritance.rb:61:in `new' /app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.10/lib/active_record/persistence.rb:33:in `create' /app/db/seeds.rb:30:in `block in <top (required)>' /app/db/seeds.rb:27:in `times' /app/db/seeds.rb:27:in `<top (required)>' /app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:268:in `load' /app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:268:in `block in load' /app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:240:in `load_dependency' /app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:268:in `load' /app/vendor/bundle/ruby/2.3.0/gems/railties-4.2.10/lib/rails/engine.rb:547:in `load_seed' /app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.10/lib/active_record/tasks/database_tasks.rb:253:in `load_seed' /app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.10/lib/active_record/railties/databases.rake:173:in `block (2 levels) in <top (required)>'

###期待する動作
heroku上で問題なくdb:seedによる初期データ投入を完了したい
###動作環境
Ruby:2.3.5
Ruby on Rails: 4.2.5

db/seeds.rb

Ruby

1# 商品テーブルのデータ 275.times do |num| 3 genre_id = rand(1..3) 4 subgenre_id_range = (genre_id * 5 - 4)..(genre_id * 5) 5 item = Item.create( 6 itemCodeNo: num+1, 7 partNumber: "ITEM-#{num+1}", 8 itemName:"商品-#{num+1}", 9 genre_id: genre_id, 10 subgenre_id: rand(subgenre_id_range), 11 price: rand(1..100000), 12 mainImage: File.open("#{Rails.root}/db/fixtures/#{num+1}_1.jpg"), 13 image2: File.open("#{Rails.root}/db/fixtures/#{num+1}_2.jpg"), 14 image3: File.open("#{Rails.root}/db/fixtures/#{num+1}_3.jpg"), 15 created_at: (Time.local(2018, 4, 1, 0, 0, 0) + (num * 60)), 16 ) 17 item.save! 18end

app/uploaders/image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick if Rails.env.production? storage :fog else storage :file end def size_range 0.kilobytes..5.megabytes end process resize_to_fit: [300, 300] def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end def extension_whitelist %w(jpg jpeg gif png) end end

config/initializers/carrier_wave.rb

Ruby

1# http://vdeep.net/rubyonrails-carrierwave-s3 2if Rails.env.production? 3 CarrierWave.configure do |config| 4 config.fog_provider = 'fog/aws' 5 config.fog_credentials = { 6 provider: 'AWS', 7 # アクセスキー 8 aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'], 9 # シークレットキー 10 aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], 11 # Tokyo 12 region: ENV['AWS_REGION'] 13 } 14 # 公開・非公開の切り替え 15 config.fog_public = true 16 # キャッシュの保存期間 17 config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" } 18 config.fog_directory = ENV['PRODUCTION_FOG_DIRECTORY'] 19 config.asset_host = ENV['PRODUCTION_ASSETS_HOST'] 20 # キャッシュをS3に保存 21 config.cache_storage = :fog 22 end 23end 24 25 # 公開・非公開の切り替え 26 # config.fog_public = true 27 # キャッシュの保存期間 28 # config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" } 29 30 # キャッシュをS3に保存 31 # config.cache_storage = :fog 32 33 # 環境ごとにS3のバケットを指定 34 case Rails.env 35 when 'development' 36 config.fog_directory = ENV['DEVELOPMENT_FOG_DIRECTORY'] 37 config.asset_host = ENV['DEVELOPMENT_ASSETS_HOST'] 38 when 'test' 39 config.fog_directory = ENV['TEST_FOG_DIRECTORY'] 40 config.asset_host = ENV['TEST_ASSETS_HOST'] 41 end 42 43# 日本語ファイル名の設定 44CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:].\-+]/

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

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

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

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

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

mather

2018/06/12 01:08

ソースコード (seed.rb) も記載してください
mather

2018/06/12 01:32 編集

記載された seeds.rb はDBへの初期データ作成しかしてないですよね。S3へのファイルアップロード部分はどこに記載したんですか?そちらを記載しないと解決されないと思います。
begenner

2018/06/12 01:38

initializerに記述したファイルを追記しました。uploaderの設定ファイルもすぐに追加します。
begenner

2018/06/12 01:42

わかる範囲で関連ファイルを追記しました。よろしくお願いいたします(m_ _m)
guest

回答2

0

リージョンは ENV['AWS_REGION'] で指定されているので、 Heroku上の環境変数を指定すればリージョンは変更可能だと思うのですが、それではうまくいかないんですか?

投稿2018/06/12 01:49

mather

総合スコア6753

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

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

0

Cloudinaryならもっと簡単に実現出来そうな気がします...

投稿2018/06/12 01:04

kenny_sayama

総合スコア1036

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問