- postgresを使ってどうやってRailsアプリを立ち上げるかわからない
- エラーがたくさん出てきて対処方法がわからない
今回はこういった疑問について解説していきます。
実装の流れ
- rails アプリを立ち上げる
- postgresのdbを作る
- database.ymlファイルを修正する
- localhost:3001にアクセする
- おまけ
- postgres内の操作
- database一覧を見る
- databaseを作る
- databaseを削除する
それでは早速みていきます!
Rails アプリを立ち上げる
rails new api -d postgresql
メモ
コマンド解説
rails new api:railsアプリを立ち上げます。api部分はアプリ名になるので好きな名前を指定できます。rails new hogehoge ←hogehogeアプリというrails アプリを作成します。
-d postgresql :-d postgresql という操作がdatabase(以下db)をpostgresにすることを意味します。
をすることでアプリを作成できます。
rails のデフォルトのdbはsqlite3というdbが利用されていますがオプションキーの -d でdbを指定することで任意のdbを利用することができます。
これをした時点ではまだdatabaseが作られていないのでサーバを立ち上げてもエラーになります
rails s コマンドでサーバを起動してみると・・・
↓まだdbがないため怒られる
次にpostgresのdatabaseを作成します
vscodeのターミナルに移動します。
bin/rails db:create
このコマンドによりdatabaseが作られます。
このコマンドでは {アプリ名}_development, {アプリ名}_test という2つのdbが作成されます。
早速中身の確認をします。
ターミナル上で、psql api_development
を実行。
今作ったdatabaseにアクセスします
アクセスできたら無事に作られていますので、ここでは exit コマンドで db から抜けます。
できたdatabaseをrailsアプリに設定します
database.ymlファイルを修正
default: &default adapter: postgresql encoding: unicode # For details on connection pooling, see Rails configuration guide # https://guides.rubyonrails.org/configuring.html#database-pooling pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> development: <<: *default database: api_development ←ここを指定のdatabase名にする
この状態でサーバを起動します
rails s -p 3001
※ポート番号は任意
無事にRailsの初期画面が表示されたら成功です!
おまけ
既存のDBの確認方法
psql api_development でdbにアクセスします。
db操作でよく使うコマンドが下記になります。
- \l :dbの一覧表示
- CREATE DATABASE database_name;:新しいdbを作成する
- CREATE USER username WITH PASSWORD 'password';:ユーザーを作成する
- DROP USER username;:ユーザーを削除する
- GRANT ALL PRIVILEGES ON DATABASE database_name TO username;:ユーザーに権限を付与する
- DROP DATABASE database_name;:dbを削除する
- DROP TABLE table_name;:テーブルを削除する
- \dt:db内の情報の一覧表示
- テーブルを作成する↓↓
CREATE TABLE table_name ( column1_name data_type, column2_name data_type, ... );
エラーが出た時
こういうエラーが出た時
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: database "postgres" does not exist
まだデータベースが作られてないため createdb {database_name} でデータベースを作成してください。※{database_name}には任意の名前を入れてください。 createdb test_db など
いかがでしたでしょうか?railsを使うことで簡単にWebアプリが作れます。その時にdatabaseも自分好みにカスタマイズできたらなおアプリ開発が楽しいのかなと思います!
不明点あればお気軽にDMでお尋ねくださいm
X:taka_tyw