Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
212 lines (193 sloc) 10.1 KB
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Checklist for a New Rails Application &#183; RailsApps</title>
<link href="https://plus.google.com/u/0/b/117374718581973393536/117374718581973393536/posts/" rel="publisher" />
<link rel="stylesheet" href="http://railsapps.github.com/css/bootstrap.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="http://railsapps.github.com/css/screen.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="http://railsapps.github.com/css/gollum.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="http://railsapps.github.com/css/site.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="http://railsapps.github.com/css/syntax.css" type="text/css" charset="utf-8" />
<script src="http://code.jquery.com/jquery-1.6.min.js" type="text/javascript"></script>
<script src="http://railsapps.github.com/javascript/jquery.text_selection-1.0.0.min.js" type="text/javascript"></script>
<script src="http://railsapps.github.com/javascript/jquery.previewable_comment_form.js" type="text/javascript"></script>
<script src="http://railsapps.github.com/javascript/jquery.tabs.js" type="text/javascript"></script>
<script src="http://railsapps.github.com/javascript/gollum.js" type="text/javascript"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-5109366-14']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a href="http://railsapps.github.com/" class="brand">RailsApps Project</a>
<ul class="pull-right nav">
<li><a href="http://blog.railsapps.org/" class="twitter">Blog</a></li>
<li><a href="http://twitter.com/rails_apps" class="twitter">Twitter</a></li>
<li><a href="https://plus.google.com/117374718581973393536" class="google">Google +</a></li>
<li><a href="https://github.com/RailsApps" class="github">GitHub Repository</a></li>
</ul>
</div>
</div>
</div>
<div class="container">
<div class="content wikistyle gollum textile">
<h1>Checklist for a New Rails Application</h1>
<h4>by Daniel Kehoe</h4>
<p>This is a checklist for developers starting a new Rails application.</p>
<p>It’s easy to create a new Rails application using <code>rails new myapp</code> or the starter apps from the <a href="http://railsapps.github.com/">Rails Apps</a> repository.</p>
<p>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?</p>
<p>Daniel Kehoe compiled this checklist with input from numerous contributors. The article is a work in progress. Got a correction or addition? Please comment.</p>
<p><a href="http://www.twitter.com/rails_apps"><img src="http://twitter-badges.s3.amazonaws.com/t_logo-a.png" title="Follow on Twitter" alt="Follow on Twitter"></a> Follow <a href="http://twitter.com/rails_apps">@rails_apps</a> on Twitter for updates and timely Rails tips.</p>
<h2>Platform</h2>
<h3>Is Rails the Right Platform?</h3>
<p>Do I really need to do this with Rails? Whether to use Rails at all and instead use something lighter weight like Sinatra?</p>
<h3>Javascript Framework</h3>
<p>jQuery?</p>
<h3>Datastore</h3>
<p><span class="caps">SQL</span> or NoSQL?</p>
<p><span class="caps">AWS</span></p>
<h3>Hosting</h3>
<p>Self-host? Heroku? Engine Yard? What host to use: heroku (quick and easy), engineyard, slicehost, etc.</p>
<h2>Architecture</h2>
<p>RESTful? Multitenancy?</p>
<p>Authentication: OAuth or application specific (Devise)?</p>
<p>Caching?</p>
<h2>Development Environment</h2>
<p>Mac, Windows or Ubuntu?</p>
<p>Text editor or <span class="caps">IDE</span></p>
<h3><span class="caps">RVM</span></h3>
<h3>Ruby</h3>
<h3>RubyGems</h3>
<h3>Rake</h3>
<h3>
<span class="caps">RVM</span> Gemset</h3>
<h3>Rails</h3>
<h3>JavaScript Runtime for Ubuntu</h3>
<h2>Generate a Rails App</h2>
<p>Example app or starter app?</p>
<h2>Project-Specific <span class="caps">RVM</span>
</h2>
<p>add .rvmrc</p>
<h2>Source Control</h2>
<p>modify .gitignore</p>
<h2>Javascript Framework</h2>
<p>jQuery, CoffeeScript</p>
<p>How to handle javascript in Rails 3: http://chadfowler.com/2011/2/9/h…</p>
<h2>Views Template Engine</h2>
<p><span class="caps">ERB</span> or Haml or Slim</p>
<p>Markup language? rdiscount for Markdown? Textile?</p>
<h2>Unit Testing</h2>
<p>What testing framework to use; rspec, shoulda, cucumber, etc</p>
<h2><span class="caps">BDD</span></h2>
<p>Cucumber</p>
<h2>Continuous Integration</h2>
<h2>Application Configuration</h2>
<p>amberbit-config gem (avaible at GH)</p>
<h2>Authentication</h2>
<p>What authentication gem to use; devise, authlogic, clearance</p>
<h2>Datastore</h2>
<p>Which database to use; mysql, postgresql, nosql, etc</p>
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 <span class="caps">SEO</span> 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.)
<strong>Views</strong>
haml to sass/coffee stack
<strong>Tests</strong>
capybara, factory_girl, spork, timecop
<strong>Development</strong>
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 =&gt; ‘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 <span class="caps">CSS</span> 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
</div><!-- class="content" -->
<div class="comments">
<div class="content wikistyle gollum">
<h2>Comments and Issues</h2>
</div>
<p>Is this helpful? Please add a comment below. Your encouragement fuels the project.</p>
<p>Did you find an error? Or couldn't get something to work? For the example apps and tutorials, please create a GitHub issue in the repository for the example app. Creating a GitHub issue is the best way to make sure a problem is investigated and fixed.</p>
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'railsapps'; // required: replace example with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div><!-- class="comments" -->
<div class="footer row">
<div class="span4">
<h3>Credits</h3>
<p><a href="http://danielkehoe.com/">Daniel Kehoe</a> initiated the <a href="http://railsapps.github.com/">RailsApps Project</a>. Thanks to all the users and contributors.</p>
</div>
<div class="span4">
<h3>Wiki</h3>
<p>Corrections? Additions? You can edit this page <a href="https://github.com/RailsApps/railsapps.github.com/wiki/_pages">on the wiki</a>.</p>
</div>
<div class="span4">
<h3>Last edit</h3>
<p>by <b>Daniel Kehoe</b>, 2012-07-20 23:08:42</p>
</div>
</div>
</div>
</body>
</html>