PostgreSQL Setup - thuy-econsys/rails_app GitHub Wiki
Setup environment variable for designating location of the PostgreSQL data directory. Note that the location of this directory is specific to MacOSX:
$ echo 'export PGDATA=/usr/local/var/postgres' >> ~/.bash_profileInitialize database. This needs to be performed only once to establish the database system. There will be an error stating that your data directory already "exists but is not empty" if you run this again:
$ initdbStart PostgreSQL server. Option -l designates the file path for the log file, which is optional. An option -D which designates location of data directory is normally required but since we have already established the PGDATA environment variable above, this is no longer necessary:
$ pg_ctl start -l /usr/local/var/log/postgres.logLogin to the PostgreSQL client and create a Postgres user role which has privileges of being able to create a database (CREATEDB), ensure user logs in (LOGIN), with a password (PASSWORD). Replace <user_name> and <password> with your own username and password, respectively. Be sure to remove the brackets but keep the single quotes for the password:
$ sudo -u postgres psql
postgres=# CREATE ROLE <user_name> WITH CREATEDB LOGIN PASSWORD '<password>';
CREATE ROLESetup environment variables that will be used in /config/database.yml as well as for logging into psql client. Replace <user_name> and <password> with the username and password setup in psql client.:
$ cat << EOF >> ~/.bash_profile
> export PG_USERNAME=<user_name>
> export PG_PASSWORD=<password>
> export PG_DBNAME=<db_name>
> export PG_HOST=localhost
> export PG_PORT=5432
> EOFInstall PostgreSQL gem to your Rails project. Inside the Rails directory:
$ gem install pg
...
$ bundle installSetup /config/database.yml to use the PostgreSQL environment variables
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: <%= ENV["PG_USERNAME"] %>
password: <%= ENV["PG_PASSWORD"] %>
host: <%= ENV["PG_HOST"] %>
port: <%= ENV["PG_PORT"] %>
development:
<<: *default
database: <%= ENV["PG_DBNAME"] || 'rails_app_development' %>
test:
<<: *default
database: rails_app_test
production:
<<: *default
database: rails_app_production
Login to the psql client with the PostgreSQL environment variables and run \conninfo inside the psql client to confirm your connection details:
$ psql -h $PG_HOST -U $PG_USERNAME -p $PG_PORT $PG_DBNAME
psql (12.4)
Type "help" for help.
rails_app_development=> \conninfo
You are connected to database "rails_app_development" as user "<user_name>" on host "localhost" (address "::1") at port "5432".##References