Rails とEC2 PumaでWEBアプリケーションをデプロイしています。
Ruby on Railsのアプリ開発や、デザインのご依頼大歓迎です…🥺
お問い合わせページからお気軽にご連絡ください。
目次
エラー内容
RailsアプリケーションをEC2にデプロイ時に起きたエラーです。
ArgumentError: Missing secret_key_base for 'production' environment, set this string with bin/rails credentials:edit (ArgumentError)
raise ArgumentError, "Missing `secret_key_base` for '#{Rails.env}' environment, set this string with `bin/rails credentials:edit`"
rails db:create
を実行した際に表示されるこのエラーは、Railsアプリケーションの production
環境において secret_key_base
が設定されていないことを示しています。
secret_key_base
は、Railsアプリケーションのセッションやクッキーの暗号化に使用される重要な設定です。
解決方法
シークレットキーの生成
ターミナルで以下のコマンドを実行して、新しいシークレットキーを生成します
bin/rails secret
credentialsの編集
以下コマンドを実行してcredentialsを開きます。
EDITOR='vim' rails credentials:edit -e production
以下を追加してください。
secret_key_base: your_generated_secret
これらの手項を完了した後、再度 rails db:create
を実行してみてください。
これで production
環境の secret_key_base
が設定され、エラーが解消されるはずです。
rails db:create RAILS_ENV=production
その他のエラー
Can't connect to local MySQL server through socket '/tmp/mysql.sock'
その後、rails db:create
すると、MySQLのエラーも出ます。
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
この点いついては、以下の記事でまとめてあります。
Psych::SyntaxError: (<unknown>): found character that cannot start any token while scanning for the next token at line 55 column 13 (Psych::SyntaxError)
このエラーは、MySQLのパスワードを作る時に、%
などの文字が入っていると出るエラーぽいです…
%
とかは使用しないようにした方が良いですね。。