AWS Ruby on Rails

rails db:createで raise ArgumentError, "Missing secret_key_base for '#{Rails.env}'...と怒られる

rails db:createで raise ArgumentError, "Missing secret_key_base for '#{Rails.env}'...と怒られるの記事のサムネイル画像

awayuki

音大出身。学生時代はフリーランスでWEB制作しながら、2社でエンジニアインターンを経験しました。 23卒で、自社開発ベンチャー企業に入社しエンジニア・デザイナーとして働き、2024年2月、起業しました! このブログでは、ブログ開設方法・プログラミング・音大からエンジニアになれた方法など書いています。 お仕事依頼はお問い合わせフォームからお問い合わせお願いします。 Zenn

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のパスワードを作る時に、% などの文字が入っていると出るエラーぽいです…

% とかは使用しないようにした方が良いですね。。

  • この記事を書いた人

awayuki

音大出身。学生時代はフリーランスでWEB制作しながら、2社でエンジニアインターンを経験しました。 23卒で、自社開発ベンチャー企業に入社しエンジニア・デザイナーとして働き、2024年2月、起業しました! このブログでは、ブログ開設方法・プログラミング・音大からエンジニアになれた方法など書いています。 お仕事依頼はお問い合わせフォームからお問い合わせお願いします。 Zenn

-AWS, Ruby on Rails
-