Heroku
Manual deployment
This tutorial assumes that you have already managed to clone Consul Democracy on your machine and gotten it to work.
- First, create a Heroku account if it isn't already done. 
- Install the Heroku CLI and sign in using: 
heroku login- Go to your Consul Democracy repository and instantiate the process: 
cd consuldemocracy
heroku create your-app-nameYou can add the flag --region eu if you want to use their European servers instead of the US ones.
If your-app-name is not already taken, Heroku should now create your app.
- Create a database using: 
heroku addons:create heroku-postgresqlYou should now have access to an empty Postgres database whose address was automatically saved as an environment variable named DATABASE_URL. Consul Democracy will automatically connect to it when deployed.
- Now, generate a secret key and save it to an ENV variable named SECRET_KEY_BASE using: 
heroku config:set SECRET_KEY_BASE=$(rails secret)Also add your server address:
heroku config:set SERVER_NAME=myserver.address.comYou need to let the app know where the configuration variables are stored by adding a link to the ENV variables in config/secrets.yml
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  server_name: <%= ENV["SERVER_NAME"] %>and commit this file in the repo by commenting out the corresponding line in the .gitignore.
#/config/secrets.ymlRemember not to commit the file if you have any sensitive information in it!
- To ensure Heroku correctly detects and uses the node.js version defined in the project, we need to make the following changes: 
In package.json, add the node.js version:
"engines": {
  "node": "20.19.5"
}and apply:
heroku buildpacks:add heroku/nodejs- You can now push your app using: 
git push heroku your-branch:master- It won't work straight away because the database doesn't contain the tables needed. To create them, run: 
heroku run rake db:migrate
heroku run rake db:seed- Your app should now be ready to use. You can open it with: 
heroku openYou also can run the console on Heroku using:
heroku console --app your-app-name- Heroku doesn't allow saving images or documents in its servers, so it's necessary to setup a permanent storage space. 
See our S3 guide for more details about configuring ActiveStorage with S3.
Configure Twilio Sendgrid
Add the Twilio SendGrid add-on in Heroku. This will create a Twilio SendGrid account for the application with a username and allow you to create a password. This username and password can be stored in the application’s environment variables on Heroku:
heroku config:set SENDGRID_USERNAME=example-username SENDGRID_PASSWORD=xxxxxxxxxNow add this to config/secrets.yml, under the production: section:
  mailer_delivery_method: :smtp
  smtp_settings:
    :address: "smtp.sendgrid.net"
    :port: 587
    :domain: "heroku.com"
    :user_name: ENV["SENDGRID_USERNAME"]
    :password: ENV["SENDGRID_PASSWORD"]
    :authentication: "plain"
    :enable_starttls_auto: trueImportant: Turn on one worker dyno so that emails get sent.
Last updated
