Rails / PostgreSQL

Warning

drie push is currently in beta and the APIs are subject to change as we stabilise the product. If something that was working stops working, please come back to the documentation to see if new behaviour is documented. If there’s no explanation, then please let us know.

This quick-start will go through the steps of:

  • Creating a Rails bookmarking app
  • Connecting it to ElephantSQL Postgres, a leading database-as-a-service provider
  • Deploying the app on the drie push platform

We will assume that you’ve fulfilled these prerequisites:

1. Create a new Rails app

We will be creating an app that stores your favourite bookmarks. Let’s create a project called drie-bookmarker-postgresql:

$ rails new drie-bookmarker-postgresql --database=postgresql
$ cd drie-bookmarker-postgresql
$ spring stop   # run this because sometimes it blocks rails g

2. Create your bookmark model

We will cheat a bit and generate the bookmark model with Rails scaffold:

$ rails g scaffold bookmark name:string url:string

3. Edit database.yml config file

$ vi config/database.yml

We need to modify database.yml to connect to the ElephantSQL PostgreSQL database. Please delete all the lines from database.yml and replace it with these lines:

production:
  url: <%= ENV['DATABASE_URI'] %>
  sslmode: "require"

This is a very basic config to connect to your ElephantSQL PostgreSQL database. We’ve set that the database connection between our drie push Rails bookmarker app and Elephant to use SSL.

For more information about ElephantSQL PostgreSQL database-as-a-service, please check out:

Notice that we load the DATABASE_URI from environment variables. We will set that in step 8.

4. Set the local DATABASE_URI environment variable

You will need to get the database URI from ElephantSQL. Log into your ElephantSQL account and go to: https://customer.elephantsql.com/instance

Click the “Details” button. On the following page, you should see your ElephantSQL Postgres database connection string there.

The URI pattern should be postgres://<dbuser>:<dbpassword>@someserver.elephantsql.com:portnum/<your_database_name>

To set the local DATABASE_URI environment variable, run the command below, replacing the placeholders for dbuser, dbpassword, someserver, portnum and dbname:

$ export DATABASE_URI=postgres://dbuser:dbpassword@someserver.elephantsql.com:portnum/dbname

5. Do a Rails database migration

$ rake db:migrate RAILS_ENV=production

This will create the tables for this app on ElephantSQL.

6. Create a local git repo and set it up to deploy to drie push

$ git init
$ git add -f *
$ git commit -m "Created drie bookmarker app and setting up to deploy to drie."

After you’ve created your local git repo, we now set up the remote drie push git repo where we push our code.:

$ app_name=$(curl -s http://m.rang.app.push.drieapp.co)   # generates a random app name for you
$ echo "Your app is called ${app_name}"               # you can see what app name was generated for you
$ git remote add drie ${app_name}.app@push.drieapp.co:code.git

7. Deploy you code to drie push

$ git push --set-upstream drie master

This pushes up your code to drie push where it builds it on the remote server.

8. Set the DATABASE_URI environment variable in drie push

To set the DATABASE_URI environment variable in drie push, run the command below, replacing the placeholders for dbuser, dbpassword, someserver, portnum and dbname:

$ ssh ${app_name}.app@push.drieapp.co configure environment -s DATABASE_URI=postgres://dbuser:dbpassword@someserver.elephantsql.com:portnum/dbname

9. Confirm that your bookmarking app works

$ curl http://master.${app_name}.app.push.drieapp.co/bookmarks

You should see an empty list where you can add new bookmarks. Congratulations! You’ve successfully deployed your Rails / ElephantSQL PostgreSQL app on drie push!