Skip to content

KirillKayumov/rails-base-api

 
 

Repository files navigation

Skeleton for new Rails 4 application for REST API

Code Climate Semaphore

This simple application includes ruby/rails technology which we use at FlatStack for new REST API projects.

Application currently based on Rails 4 stable branch and Ruby 2.1

API

Status of the API could be checked at http://localhost:5000/docs

What's included

Application gems:

Development gems

  • Foreman for managing development stack with Procfile
  • Letter Opener for preview mail in the browser instead of sending
  • Mail Safe keep ActionMailer emails from escaping into the wild during development
  • Bullet gem to kill N+1 queries and unused eager loading
  • Rails Best Practices code metric tool
  • Brakeman static analysis security vulnerability scanner
  • Bundler Audit Patch-level verification for Gems
  • Spring for fast Rails actions via pre-loading

Testing gems

Initializes

  • 01_config.rb - shortcut for getting application config with app_config
  • mailer.rb - setup default hosts for mailer from configuration
  • requires.rb - automatically requires everything in lib/ & lib/extensions
  • rack_cors.rb - setup whitelist of domains to allow cross-origin resource sharing

Scripts

  • bin/bootstrap - setup required gems and migrate db if needed
  • bin/quality - runs rubocop, brakeman, rails_best_practices and bundle-audit for the app
  • bin/ci - should be used in the CI or locally
  • bin/server - to run server locally

Serializers

PaginatedArraySerializer

Use that serializer if you want to add meta with pagination info on response

def index
  respond_with(
    posts,
    serializer: PaginatedArraySerializer
  )
end

The above usage of PaginatedArraySerializer will produce the following:

{
  "meta": {
    "pagination": {
      "total":46,
      "per_page":2,
      "page":1
    }
  },
  "posts": [
    { "title": "Post 1", "body": "Hello!" },
    { "title": "Post 2", "body": "Goodbye!" }
  ]
}

Quick start

Clone application as new project with original repository named "rails-base-api"

git clone git://github.com/fs/rails-base-api.git --origin rails-base-api [MY-NEW-PROJECT]

Create your new repo on GitHub and push master into it. Make sure master branch is tracking origin repo.

git remote add origin [email protected]:[MY-GITHUB-ACCOUNT]/[MY-NEW-PROJECT].git
git push -u origin master

Run bootstrap script

bin/bootstrap

Make sure all test are green

bin/ci

Run app

bin/server

Do not forget to update this file!

mv doc/README_TEMPLATE.md README.md
# update README.md
git commit -am "Update README.md"

Restrict access to documentation

You can enable restrict access to documentation by adding APITOME_USER and APITOME_PASSWORD environment variables. Can be useful on staging environment.

Examples

Please check how to build API endpoints and test them properly in the examples branch

About

Base Rails application for REST API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 95.2%
  • HTML 3.2%
  • Shell 1.6%