LoginSignup
1
0

More than 3 years have passed since last update.

Herokuの本番環境でseeds.rbの内容が反映されなった件

Last updated at Posted at 2021-05-04

目次

1.前提条件、やりたかったこと
2.エラーメッセージ
3.原因・対策
4.まとめ

1.前提条件、やりたかったこと

開発環境
Ruby 2.6.5 Rails 6.0
Heroku/MySQL/Visual Studio Code

railsでアプリ開発をしました。Herokuにデプロイしたところseedファイルの内容が反映されず表示されませんでした。(ローカル環境では表示されています)

修正前

seeds.rb
Category.create(name:'野菜')
Category.create(name:'果物')
Category.create(name:'きのこ類')
Product.create(name:'ねぎ', shelf_life:'7', frozen_life:'60', category_id:'1', info:'')
Product.create(name:'長ネギ', shelf_life:'7', frozen_life:'60', category_id:'1', info:'')
Product.create(name:'玉ねぎ', shelf_life:'60', frozen_life:'30', category_id:'1', info:'')
Product.create(name:'じゃがいも', shelf_life:'60', frozen_life:'30', category_id:'1', info:'常温の場合は3~4ヶ月')
Product.create(name:'さつまいも', shelf_life:'60', frozen_life:'60', category_id:'1', info:'')
#以下省略

2.エラーメッセージ

以下はターミナルのログです。Categoryは読みに行っているのですが、何故かProductではなく再びCategoryを読みに行っているように見えます。

Running rails db:seed on ⬢ fridge-app-35190... up, run.7217 (Free)
D, [2021-04-24T02:21:50.167441 #4] DEBUG -- :    (2.4ms)  SET NAMES utf8,  @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'),  @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
D, [2021-04-24T02:21:50.259743 #4] DEBUG -- :    (16.5ms)  SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC
D, [2021-04-24T02:21:50.329090 #4] DEBUG -- :    (2.2ms)  SET NAMES utf8,  @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'),  @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
D, [2021-04-24T02:21:50.367828 #4] DEBUG -- :    (4.8ms)  BEGIN
D, [2021-04-24T02:21:50.370664 #4] DEBUG -- :   Category Create (2.5ms)  INSERT INTO `categories` (`name`, `created_at`, `updated_at`) VALUES ('野菜', '2021-04-24 02:21:50.361412', '2021-04-24 02:21:50.361412')
D, [2021-04-24T02:21:50.379870 #4] DEBUG -- :    (8.6ms)  COMMIT
D, [2021-04-24T02:21:50.383787 #4] DEBUG -- :    (2.3ms)  BEGIN
D, [2021-04-24T02:21:50.387830 #4] DEBUG -- :   Category Create (3.8ms)  INSERT INTO `categories` (`name`, `created_at`, `updated_at`) VALUES ('果物', '2021-04-24 02:21:50.380587', '2021-04-24 02:21:50.380587')
D, [2021-04-24T02:21:50.403017 #4] DEBUG -- :    (14.0ms)  COMMIT
D, [2021-04-24T02:21:50.410235 #4] DEBUG -- :    (3.2ms)  BEGIN
D, [2021-04-24T02:21:50.413133 #4] DEBUG -- :   Category Create (2.6ms)  INSERT INTO `categories` (`name`, `created_at`, `updated_at`) VALUES ('きのこ類', '2021-04-24 02:21:50.403760', '2021-04-24 02:21:50.403760')
D, [2021-04-24T02:21:50.424287 #4] DEBUG -- :    (10.6ms)  COMMIT
D, [2021-04-24T02:21:50.482544 #4] DEBUG -- :    (2.4ms)  BEGIN
D, [2021-04-24T02:21:50.486608 #4] DEBUG -- :   Category Load (3.6ms)  SELECT `categories`.* FROM `categories` WHERE `categories`.`id` = 1 LIMIT 1
D, [2021-04-24T02:21:51.409149 #4] DEBUG -- :    (2.3ms)  ROLLBACK
D, [2021-04-24T02:21:51.412205 #4] DEBUG -- :    (1.9ms)  BEGIN
D, [2021-04-24T02:21:51.414466 #4] DEBUG -- :   Category Load (2.1ms)  SELECT `categories`.* FROM `categories` WHERE `categories`.`id` = 1 LIMIT 1
D, [2021-04-24T02:21:51.417633 #4] DEBUG -- :    (1.9ms)  ROLLBACK
D, [2021-04-24T02:21:51.420801 #4] DEBUG -- :    (1.9ms)  BEGIN
#以下省略

3.原因・対策

HerokuのDBを確認した所、Categoryのidが4.14.24となっていました。
idを1.2.3と連番で付与したところ解決しました。

修正後

seeds.rb
Category.create(id:'1', name:'野菜')
Category.create(id:'2', name:'果物')
Category.create(id:'3', name:'きのこ類')
Product.create(name:'ねぎ', shelf_life:'7', frozen_life:'60', category_id:'1', info:'')
Product.create(name:'長ネギ', shelf_life:'7', frozen_life:'60', category_id:'1', info:'')
Product.create(name:'玉ねぎ', shelf_life:'60', frozen_life:'30', category_id:'1', info:'')
Product.create(name:'じゃがいも', shelf_life:'60', frozen_life:'30', category_id:'1', info:'常温の場合は3~4ヶ月')
Product.create(name:'さつまいも', shelf_life:'60', frozen_life:'60', category_id:'1', info:'')
#以下省略

4.まとめ

詳しくはわかりませんが、Herokuの仕様上idを連番で付与してあげないときちんと読み込みが実行されないようです。原因が特定できず解決までに時間を要しましたので、共有したいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0