-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrails-checklist.html
214 lines (195 loc) · 9.91 KB
/
rails-checklist.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Checklist for a New Rails Application</title>
<link href="https://plus.google.com/u/0/b/117374718581973393536/117374718581973393536/posts/" rel="publisher" />
<link rel="stylesheet" href="/css/bootstrap.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="/css/screen.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="/css/gollum.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="/css/site.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="/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="/javascript/jquery.text_selection-1.0.0.min.js" type="text/javascript"></script>
<script src="/javascript/jquery.previewable_comment_form.js" type="text/javascript"></script>
<script src="/javascript/jquery.tabs.js" type="text/javascript"></script>
<script src="/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="/" 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="page-header">
<h1>Checklist for a New Rails Application</h1>
</div>
<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 => ‘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</h2>
</div>
<p>Is this helpful? Please "like" below. Question or suggestion? Please add a comment below. Got a correction or addition? You can edit this page <a href="https://github.com/RailsApps/railsapps.github.com/wiki/_pages">on the wiki</a> or create a <a href="https://github.com/RailsApps/railsapps.github.com/issues">GitHub issue</a> to alert me.</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 <a href="http://tigrish.com/">Christopher Dell</a> for design contributions.</p>
</div>
<div class="span4">
<h3>Contributions</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-05-19 20:21:06</p>
</div>
</div>
</div>
</body>
</html>