Skip to content
Daniel Kehoe edited this page Nov 11, 2011 · 1 revision

Checklist for a New Rails Application

by Daniel Kehoe

This is a checklist for developers starting a new Rails application.

It’s easy to create a new Rails application using rails new myapp or the starter apps from the Rails Apps repository.

But after that, what do you do? What decisions do you make before beginning development? What gems do experienced developers often add? What important items are often overlooked before deploying an app?

Daniel Kehoe compiled this checklist with input from numerous contributors. The article is a work in progress. Got a correction or addition? Please comment.

Follow on Twitter Follow @rails_apps on Twitter for updates and timely Rails tips.

Platform

Is Rails the Right Platform?

Do I really need to do this with Rails? Whether to use Rails at all and instead use something lighter weight like Sinatra?

Javascript Framework

jQuery?

Datastore

SQL or NoSQL?

AWS

Hosting

Self-host? Heroku? Engine Yard? What host to use: heroku (quick and easy), engineyard, slicehost, etc.

Architecture

RESTful? Multitenancy?

Authentication: OAuth or application specific (Devise)?

Caching?

Development Environment

Mac, Windows or Ubuntu?

Text editor or IDE

RVM

Ruby

RubyGems

Rake

RVM Gemset

Rails

JavaScript Runtime for Ubuntu

Generate a Rails App

Example app or starter app?

Project-Specific RVM

add .rvmrc

Source Control

modify .gitignore

Javascript Framework

jQuery, CoffeeScript

How to handle javascript in Rails 3: http://chadfowler.com/2011/2/9/h…

Views Template Engine

ERB or Haml or Slim

Markup language? rdiscount for Markdown? Textile?

Unit Testing

What testing framework to use; rspec, shoulda, cucumber, etc

BDD

Cucumber

Continuous Integration

Application Configuration

amberbit-config gem (avaible at GH)

Authentication

What authentication gem to use; devise, authlogic, clearance

Datastore

Which database to use; mysql, postgresql, nosql, etc

What to use for caching: memcached, redis, etc. How to handle file uploads; paperclip, dragonfly, amazon S3, etc Whether to use automated deployment like capistrano What monitoring software to use; monit, god, etc. What error handling software to use: hoptoad, exceptional, or a free solution What uptime monitoring tools to use; pingdom, nagios, siteuptime, etc Figuring out a good SEO strategy like how titles and slugs should be represented Helpdesk software like zendesk or getsatisfaction How modular your app is going to be: will it make heavy use of rack applicaitons What version of Ruby to use (1.8., 1.9) What implementation of Ruby to use (Matz, JRuby, etc.) Views haml to sass/coffee stack Tests capybara, factory_girl, spork, timecop Development guard-livereload, with guard, libnotify etc. active_reload for faster development with assets pipeline annotate if relational db pry Switch to haml(https://github.com/nex3/haml) or slim(https://github.com/stonean/slim) templates. Switch to using jQuery (pre-3.1) Switch to using Sass (pre-3.1) Setup CI 1. You can also use the script to setup the environment on your laptop: https://github.com/thoughtbot/la… 2. You can utilize rails app composer -https://github.com/RailsApps/rai… to setup pretty much everything you need for your project including even heroku to host it. 3. You can use capistrano to automate deployment in case you are not using heroku. Add a humans.txt along side robots.txt create rvm gemset, create .rvmrc, modify .gitignore gem ‘pg’ gem ‘thin’ gem ‘ruby-debug19’, :require => ‘ruby-debug’ gem ‘rspec-rails’ gem ‘factory_girl_rails’ gem ‘capybara’ I always want to set up Factory Girl under /fixtures, and setup Cucumber along Rspec. Sometimes I use shoulda too. Initialize the project as a git repository and link it to github. Set up the app to use PostgreSQL instead of SQLite. And last I can think of is that I often make an entry, from the beginning, to load .rb files form /lib automatically. login, openid, forget password, role permissions, html5, requirejs, jquery, test aws3, paperclip, resque, will_paginate, haml Add CSS framework (grids, text, forms) Add Cells Add Slim (www.slim-lang.com) Remove Test::Unit for RSpec Add application config settings (config.yml) Add Cucumber Add FactoryGirl Add Spork Add Guard (guard-rspec, guard-cucumber, guard-sass, guard-livereload, guard-spork) Add Git, Github space, + amend .gitignore Add Heroku (stage + production) spaces google_analytics helpers sitemap_controller mix of html5 boilerplate for rails with twitter bootstrap
Clone this wiki locally