General Assembly Logo

Rails API: Library API (Demo)

This is part of the Rails API sequence of talks. Each talk has its own repository with a reference README.

Each talk is designed to walk through the creation of a real Rails API, feature-by-feature, using "error driven development". Developers should have completed the introductory Rails API talk. This sequence ends with Rails API: Behavior-Driven Development, where error-driven-development is replaced by automated testing.

Each talk covers three domains, and therefore, three APIs. The demonstration API, developed by consultants, is followed by a code-along API, in which developers and consultants work together to build the API. Finally, developers are expected to build their own API as part of the laboratory portions of each talk.

These API repositories contain a few important branches:

  • master contains starter code.
  • solution contains a feature-complete reference API. History is not canonical.
  • tutorial contains detailed commit history, and tags for where each talk should end.

Preparation

  1. Fork and clone this repository.
  2. Create a new branch, training, for your work.
  3. Checkout to the training branch.
  4. Install dependencies with bundle install.
  5. Create a .env for sensitive settings (touch .env).
  6. Generate new development and test secrets (bin/rake secret).
  7. Store them in .env with keys SECRET_KEY_BASE_<DEVELOPMENT|TEST> respectively.
  8. Setup your database with bin/rake [db:drop] db:create db:migrate db:seed db:examples.
  9. Run the API server with bin/rails server.

Tasks

Developers should run these often!

  • bin/rake routes lists the endpoints available in your API.
  • bin/rake test runs automated tests.
  • bin/rails console opens a REPL that pre-loads the API.
  • bin/rails db opens your database client and loads the correct database.
  • bin/rails server starts the API.
  • scripts/*.sh run various curl commands to test the API. See below.
  1. All content is licensed under a CC­BY­NC­SA 4.0 license.
  2. All software code is licensed under GNU GPLv3. For commercial use or alternative licensing, please contact legal@ga.co.