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.2
Status of the API could be checked at http://localhost:5000/docs
- Decent Exposure for DRY controllers
- Rollbar for exception notification
- Thin as rails web server
- Kaminari for pagination
- Rack CORS for CORS
- 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
- Factory Girl for easier creation of test data
- RSpec for awesome, readable isolation testing
- Shoulda Matchers for frequently needed Rails and RSpec matchers
- Email Spec Collection of rspec matchers and cucumber steps for testing emails
- Rspec Api Documentation Generate pretty API docs for your Rails APIs
01_config.rb
- shortcut for getting application config withapp_config
mailer.rb
- setup default hosts for mailer from configurationrequires.rb
- automatically requires everything in lib/ & lib/extensionsrack_cors.rb
- setup whitelist of domains to allow cross-origin resource sharing
bin/setup
- setup required gems and migrate db if neededbin/quality
- runs rubocop, brakeman, rails_best_practices and bundle-audit for the appbin/ci
- should be used in the CI or locallybin/server
- to run server locally
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!" }
]
}
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 git@github.com:[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"
You can enable restrict access to documentation by adding APITOME_USER
and APITOME_PASSWORD
environment variables. Can be useful on staging environment.
Please check how to build API endpoints and test them properly in the examples branch