【Rails】rails newしてPostgreSQLでデータベース作成まで


はじめに

今年はWebにも少しづつ挑戦しようということで、参考文献の一番多そうなRailsをイジイジしています。取り敢えずローカルでの環境構築を終えてRails newして色々と試しているところです。
このあたりで一度頭の中を整理しつつテンプレ化しておきたいのと、間違いの指摘など頂けたら嬉しいなあと思って記事を書いています。
あとはRails newがうまくいかない人の参考になれば嬉しいです。

環境

terminal
Windows10
ruby 2.6.6
Rails 6.0.3.1
psql (PostgreSQL) 12.3

環境構築に関しては書きませんので必要に応じてお調べください。
データベースはPostgreSQLに変更します。
それとgemについては基本的にローカルに入れてます。どちらでもいいみたいなんですが、なんとなくそうしています。

アプリケーションのディレクトリ内にGemfileを作成する

ディレクトリは適当に作ってください。

terminal
C:\Users\user\sample_app> bundle init

Gemfileに追加するgemを記述する

作成したGemfileをエディタで開き、以下を追加する。

Gemfile
gem 'rails'//コメントアウト(#)を外すだけ
gem 'pg'//PostgreSQLに変更する場合

gemのバージョンを指定したほうがいいのか、よく分からなかったので一先ず指定しないでおく。

bundle installする

terminal
bundle install --path vendor/bundle

--path vendor/bundleはgemをローカルにインストールする場合に指定する。こうすることでvendor/bundle内にgemがインストールされるらしい。
--path vendor/bundleは最初の一回目だけ指定すれば、あとは省略できるみたい。

rails newする

terminal
bundle exec rails new . -d postgresql --skip-turbolinks --skip-test

bundle execはRailsをローカルにインストールした場合につける。以降全てのrailsコマンドにつけます。
-d postgresql --skip-turbolinks --skip-testはオプションでこれら以外にも色々あるみたいなので必要に応じてお調べてください。
いまいち分からないものが多いので取り敢えずみんな書いているものだけ書く。

SQL Shellでデータベースを作成する

SQLShell(psql)
create role APPLICATION_NAME with createdb login password 'PASSWORD';
select * from pg_user;

APPLICATION_NAMEにはユーザーネーム(アプリ名)、PASSWORDには任意のパスワードをいれます。
select * from pg_user;でロールが作成されているか確認します。

database.ymlを更新する

configフォルダ内のdatabase.ymlに以下を記述します。

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 } %>

  username: APPLICATION_NAME//追加(データベース作成時に決めたユーザーネーム)
  password: PASSWORD//追加(データベース作成時に決めたパスワード)
  host: localhost//追加


database.ymlを保存したらデータベースも更新します。

terminal
bundle exec rails db:migrate:reset

サーバーを起動する

terminal
bundle exec rails s

ブラウザでhttp://localhost:3000/
にアクセスして画像が表示されれば成功。