peterdavidhamilton / govuk-rails-boilerplate

A simple boilerplate built on Ruby on Rails to kick start new services

Home Page:https://govuk-rails-boilerplate.herokuapp.com/pages/home

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Deploy

GOV.UK Rails Boilerplate

Prerequisites

  • Ruby 2.7.1
  • PostgreSQL
  • NodeJS 12.13.x
  • Yarn 1.12.x

Setting up the app in development

  1. Run bundle install to install the gem dependencies
  2. Run yarn to install node dependencies
  3. Run bin/rails db:setup to set up the database development and test schemas, and seed with test data
  4. Run bundle exec rails server to launch the app on http://localhost:3000
  5. Run ./bin/webpack-dev-server in a separate shell for faster compilation of assets

Whats included in this boilerplate?

  • Rails 6.0 with Webpacker
  • GOV.UK Frontend
  • RSpec
  • Dotenv (managing environment variables)
  • Travis with Heroku deployment
  • Docker and docker compose

Running specs, linter(without auto correct) and annotate models and serializers

bundle exec rake

Running specs

bundle exec rspec

Linting

It's best to lint just your app directories and not those belonging to the framework, e.g.

bundle exec rubocop app config db lib spec Gemfile --format clang -a

or

bundle exec scss-lint app/webpacker/styles

Docker

Why use Docker?

  • Run the application locally without installing dependencies (postgres, system libraries...)
  • Run in a Linux environment similar to production
  • Simulate running in production with dependencies using docker-compose
  • Package the application so it can be versioned and deployed to multiple environments

Prerequisites

  • Docker >= 19.03.12

Build

make build-local-image

It relies heavily on caching. The first build may be slow and subsequent ones faster.

Single docker image

The docker image doesn't contain a default command. Any command can be appended:

% docker run -p 3001:3000 dfedigital/govuk-rails-boilerplate:latest rails -vT
rails about                              # List versions of all Rails frameworks and the environment
rails action_mailbox:ingress:exim        # Relay an inbound email from Exim to Action Mailbox (URL and INGRESS_PASSWORD required)
...

Run in production mode

Docker compose provides a default empty database to run rails in production mode.

docker-compose up

Open: http://localhost:3000

Deploying on GOV.UK PaaS

Prerequisites

  • Your department, agency or team has a GOV.UK PaaS account
  • You have a personal account granted by your organisation manager
  • You have downloaded and installed the Cloud Foundry CLI for your platform

Deploy

  1. Run cf login -a api.london.cloud.service.gov.uk -u USERNAME, USERNAME is your personal GOV.UK PaaS account email address
  2. Run bundle package --all to vendor ruby dependencies
  3. Run yarn to vendor node dependencies
  4. Run bundle exec rails webpacker:compile to compile assets
  5. Run cf push to push the app to Cloud Foundry Application Runtime

Check the file manifest.yml for customisation of name (you may need to change it as there could be a conflict on that name), buildpacks and eventual services (PostgreSQL needs to be set up).

The app should be available at https://govuk-rails-boilerplate.london.cloudapps.digital

About

A simple boilerplate built on Ruby on Rails to kick start new services

https://govuk-rails-boilerplate.herokuapp.com/pages/home

License:MIT License


Languages

Language:Ruby 76.0%Language:HTML 14.8%Language:JavaScript 4.7%Language:Dockerfile 3.4%Language:Makefile 0.7%Language:SCSS 0.5%