ハードはMacBook Air, 開発環境はVScodeを用いています。
前回の記事(rails new でデータベースをPostgreSQLにする)に付随するエラーの解決方法です。
前回の内容
$ rails _5.1.6_ new アプリ名 --database=postgresql
これをrails6で実行し、
$ rails server
でサーバーを立ち上げ、localhost:3000にアクセスすると、
ActiveRecord::NoDatabaseError というエラーが発生します。
これは、データベースが存在していないことが原因で起こるエラーです。
解決方法 データベースを作る
自動でやる方法
まず、rails new で生成したディレクトリに移動してください。
$ cd 作成したディレクトリ
次に
$ rails db:create
を実行してデータベースを生成します。
config/database.yml の内容に沿ってデータベースが自動で生成されます。
手動でやる方法
まず、rails new で生成したディレクトリに移動してください。
$ cd 作成したディレクトリ
次に、config/database.yml を書き換えます。
config/database.yml変更前~省略~ development: <<: *default database: アプリ名_development ~省略~
config/database.yml変更後~省略~ development: <<: *default database: アプリ名_db host: localhost encoding: utf8 reconnect: false username: 自分のユーザー名 ~省略~
※ database:はデータベース名なのでわかりやすくdevelopmentをdbに変更
その他(hots,encoding,recconect,username)に関しても、一応追記しなくても解決できるが、追記することを推奨。次に、SQLを立ち上げます。
$ psql -h localhost -p 5432 -U 自分のユーザー名 -d postgres psql (12.3) Type "help" for help. postgres=#
この辺のコマンドについては
https://www.postgresql.jp/document/9.3/html/app-psql.html
に詳しく載っています。($ psql -h localhost -d postgres ←これだけでも一応解決できました。)
このコマンドを実行すると、SQL文を入力できるようになります。
ここにデータベースを作成するSQL文を書いていきます。入力前postgres=#
入力後postgres=# create database アプリ名_db;
ここで、アプリ名_dbは、最初に config/database.yml で指定した database:アプリ名_dbを入力しています。
実行後postgres=# create database アプリ名_db; CREATE DATABASE postgres=# \q
最後に \q を入力すると、抜けることができます。
これでもう一度 $ rails server でサーバーを立ち上げて、localhost:3000 にアクセスしてみてください。エラーは解消されているはずです。
無事に解決しました!
役に立ったら是非LGTMボタンをポチッと押していただけると嬉しいです。
一緒に Rails学習 頑張りましょう!