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

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

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

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

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

Q&A

0回答

302閲覧

(Psych::SyntaxErrorがでてHerokuにデプロイできない

senseIY

総合スコア281

Heroku

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

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

0グッド

0クリップ

投稿2022/08/19 23:38

編集2022/08/20 04:52

前提

dockerで開発したポートフォリオをHerokuにデプロイしようとしているのですが、エラーが発生してしまい、上手くデプロイできません。また、開発は、バックエンド側とフロントエンド側に分けて行っています。

発生している問題・エラーメッセージ

: /usr/local/lib/ruby/3.1.0/psych.rb:455:in `parse': (<unknown>): did not find expected key while parsing a block mapping at line 20 column 7 (Psych::SyntaxError)

database.yml

yml

1# MySQL. Versions 5.5.8 and up are supported. 2# 3# Install the MySQL driver 4# gem install mysql2 5# 6# Ensure the MySQL gem is defined in your Gemfile 7# gem "mysql2" 8# 9# And be sure to use new-style password hashing: 10# https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html 11# 12default: &default 13 adapter: mysql2 14 encoding: utf8mb4 15 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 16 username: root 17 password: password 18 host: db 19 20development: 21 <<: *default 22 database: myapp_development 23 24# Warning: The database defined as "test" will be erased and 25# re-generated from your development database when you run "rake". 26# Do not set this db to the same as development or production. 27test: 28 <<: *default 29 database: myapp_test 30 31# As with config/credentials.yml, you never want to store sensitive information, 32# like your database password, in your source code. If your source code is 33# ever seen by anyone, they now have access to your database. 34# 35# Instead, provide the password or a full connection URL as an environment 36# variable when you boot the app. For example: 37# 38# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" 39# 40# If the connection URL is provided in the special DATABASE_URL environment 41# variable, Rails will automatically merge its configuration values on top of 42# the values provided in this file. Alternatively, you can specify a connection 43# URL environment variable explicitly: 44# 45# production: 46# url: <%= ENV["MY_APP_DATABASE_URL"] %> 47# 48# Read https://guides.rubyonrails.org/configuring.html#configuring-a-database 49# for a full overview on how database connection configuration can be specified. 50# 51# production: 52# <<: *default 調整 53# database: myapp_production 54# username: myapp 55# password: <%= ENV["MYAPP_DATABASE_PASSWORD"] %> 56production: 57 <<: *default 58 database: <%= ENV['APP_DATABASE'] %> 59 username: <%= ENV['APP_DATABASE_USERNAME'] %> 60 password: <%= ENV['APP_DATABASE_PASSWORD'] %> 61 host: <%= ENV['APP_DATABASE_HOST'] %> 62 url: <%= ENV['JAWSDB_DATABASE_URL']&.sub(/\Amysql/, 'mysql2') %> 63

試したことと自身の考察

・このエラーが発生する時は、多くの場合、ymlファイルのインデントが誤っていることが原因だとわかりました。しかし、恐らく私の場合は当てはまらないように思えます。理由は1 ローカル環境では正常に動く2以下のようにheroku側でmigrateが出来る

s

1/backend$ heroku run rake db:migrate 2Running rake db:migrate on ⬢ dictum-app-ver-3... up, run.4759 (Free) 3== 20220816085742 DeviseTokenAuthCreateUsers: migrating ======================= 4-- create_table(:users) 5 -> 0.0247s 6-- add_index(:users, :email, {:unique=>true}) 7 -> 0.0218s 8-- add_index(:users, [:uid, :provider], {:unique=>true}) 9 -> 0.0260s 10-- add_index(:users, :reset_password_token, {:unique=>true}) 11 -> 0.0226s 12-- add_index(:users, :confirmation_token, {:unique=>true}) 13 -> 0.0198s 14== 20220816085742 DeviseTokenAuthCreateUsers: migrated (0.1163s) ============== 15 16== 20220816090705 CreateLearningMaterials: migrating ========================== 17-- create_table(:learning_materials) 18 -> 0.0354s 19-- add_index(:learning_materials, [:user_id, :created_at]) 20 -> 0.0294s 21== 20220816090705 CreateLearningMaterials: migrated (0.0650s) ================= 22 23== 20220816091236 CreateActiveStorageTables: migrating ======================== 24-- create_table(:active_storage_blobs, {:id=>:primary_key}) 25 -> 0.0511s 26-- create_table(:active_storage_attachments, {:id=>:primary_key}) 27 -> 0.0331s 28-- create_table(:active_storage_variant_records, {:id=>:primary_key}) 29 -> 0.0312s 30== 20220816091236 CreateActiveStorageTables: migrated (0.115

Heroku側でマイグレーションがはしるならymlファイルのインデントはあっているのではないかというのが私の見解です。
・私はローカルではdocker-composeを使用してコンテナ管理をしていましたが、herokuにデプロイする場合は、バックエンド側とフロントエンド側に分けてデプロイしなければならないようです。私の認識では、herokuではdocker-composeを使用できないため、バックエンド側とフロントエンド側それぞれを別のアプリとしてデプロイし、双方で通信を行うという認識をしています。そのため、まだフロントエンド側をデプロイしていなくてもバックエンド側にアクセス可能だと認識しているので、恐らく今回のエラーはフロントエンド側は関係がないと予想しています。
・ログを確認しましたが、この他にエラーは発生していないと思います。
・初めはyoutubeの動画を参考にしていたのですが、バックエンド側とフロントエンド側に分けてデプロイする際にはこのやり方では上手くいかないと考え、途中からこの記事を参考にして進めていました。
・不備などがあれば追記いたします。何かしらアドバイスがあればよろしくお願いいたします。

追記

私が何かしら編集をしたymlファイルを一応載せておきます

docker-compose.yml

yml

1version: "3" 2 3services: 4 db: 5 image: mysql:8.0 6 environment: 7 MYSQL_ROOT_PASSWORD: password 8 command: --default-authentication-plugin=mysql_native_password 9 volumes: 10 - mysql-data:/var/lib/mysql 11 - /tmp/dockerdir:/etc/mysql/conf.d/ 12 ports: 13 - "3306:3306" 14 cap_add: 15 - SYS_NICE 16 api: 17 build: 18 context: ./backend/ 19 dockerfile: Dockerfile 20 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 21 volumes: 22 - ./backend:/myapp 23 - ./backend/vendor/bundle:/myapp/vendor/bundle 24 environment: 25 TZ: Asia/Tokyo 26 RAILS_ENV: development 27 ports: 28 - "3001:3000" 29 depends_on: 30 - db 31 stdin_open: true 32 tty: true 33 front: 34 build: 35 context: ./frontend/ 36 dockerfile: Dockerfile 37 volumes: 38 - ./frontend/app:/usr/src/app 39 command: sh -c "yarn && yarn start" 40 ports: 41 - "4000:3000" 42 environment: 43 - WDS_SOCKET_PORT=0 44volumes: 45 mysql-data: 46

heroku.yml

yml

1build: 2 docker: 3 web: Dockerfile 4run: 5 web: bundle exec puma -C config/puma.rb 6

*マルチポストをしています。不快に思われたら申し訳ございません。
https://ja.stackoverflow.com/questions/90642/psychsyntaxerror-yml%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e6%9b%b8%e5%bc%8f%e3%82%a8%e3%83%a9%e3%83%bc-%e3%81%8c%e3%81%a7%e3%81%a6heroku%e3%81%ab%e3%83%87%e3%83%97%e3%83%ad%e3%82%a4%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問