【rails】PostgreSQLを使った環境構築

PostgreSQL Accountの作成

仕事でPostgreSQLを使っていたので、Accountを作るところから。

$ sudo -u postgres psql
PASSWORD= <PCのパスワード>
postgres=# create role <username> with createdb login password '<password>';
  # usernameとpasswordはあとで使う
postgres=# \q

$ rails new <appname> -d postgresql # オプションでpostgresqlを指定
$ cd <appname>

これでPostgreSQLを使ったRailsができた。

dotenv-railsの追加

PostgreSQLのdatabse.ymlを編集する前にgemを追加しておく。

gem 'dotenv-rails'

追加したら bundle install でgemを適用させる。

$ bundle install
$ touch .env.local  #今回はローカル作業用にlocalファイルを作成

今回は .env.local を作ったが、これをコピーしたければ cp .env.local .env.<好きな名前> で作れる。

config/database.ymlの編集

default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  # この下に3行追加していく
  username: <%= ENV['USER'] %>
  password: <%= ENV['PASSWORD'] %>
  host: <%= ENV.fetch('HOST', 'localhost') %>

続いて先ほど作った .env.local に必要な情報を追加していく。

USER=<username>
PASSWORD=<password>
HOST=localhost  # 別環境で使うことがあればそれを指定

.gitignoreに追加

.env.local を作って環境変数を指定してあげているので、GitHub上にファイルを上げないように設定してあげる。

# dotenv
.env*

これで、.env から始まるファイルはGitHub上に上がらない。

リモートリポジトリの作成

ここまで出来たらGitHubにデータを転送していく。

$ git init  # GitHubと接続
$ git add -A  # 一回ファイルをコミットできる状態にしておく
$ git rm --cached .env.local  #さっき作った.env.localは上げないように削除
$ git commit -m"first commit"  # コメントはなんでも良い

GitHubでリポジトリを作ったら、SSHのURLをコピーしておく

$ git remote add origin <コピーしたURL>
$ git push -u origin master

これで、localで使ったPostgreSQLのusernameとpasswordをGitHub上に公開しないで住むようになった。