The JohnHenry Rails toolkit is meant to take care of all the menial tasks of
launching a Rails application, that are largely the same from application to
application. Using JohnHenry, you'll have the sample project live on a Heroku
subdomain of your choosing (e.g.
johnhenryrails.herokuapp.com) in under ten
minutes, even if you don't know anything about Ruby on Rails!
Once you've launched your application, you can easily customize it to be a landing page to collect emails for a new product. And when you've got a feature you want users to pay for, JohnHenry's payment form is ready for you to use.
If you're already a Ruby on Rails expert, JohnHenry still provides value. It's
step 2 after
rails new MyProject. Save 1-2 weeks of boilerplate development
setting up Bootstrap, Devise, Stripe, etc and concentrate on building the
product you want to build!
The following libraries and technologies are configured by JohnHenry and work out of the box:
- Devise for user authentication / management
- Stripe (JS, Gem) for handling payments
- Bootstrap 3
Screenshots and Demo
A brand new Rails 4 project with just JohnHenry is live at: http://www.johnhenryrails.com This is exactly what you will end up with after installing.
Installation on Mac OS X
.. and probably Linux
All commands are run via Terminal, which you can find in your
Applications folder. If you're already using Terminal, try switching to iTerm
and see if you like it any better. Other version controls may work, but it's
assumed the user is using
git. I build
git from source using
Note: this assumes that you've already got Ruby 2.0 and a Rails 4.0+ gem installed. If you haven't, head over to http://rvm.io and then come back. You can verify both with:
$ ruby -v ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.3.0] Adams-MacBook-Pro:~/src/johnhenry[master *+%] $ rails -v Rails 4.0.2
- Download and run the install script:
This assumes that you have the following commands available to you on your
export projectname="MyWebSiteName" curl https://raw.github.com/derwiki/johnhenry/master/install.sh | bash -
Congratulations, you've now made something on the internet! Be sure to tell your mom.
Extended / Optional Setup
- Set up Google Analytics. You can sign up at:
heroku config:set \ GOOGLE_ANALYTICS_DOMAIN=sampleproject.herokuapp.com \ GOOGLE_ANALYTICS_UA=UA-56346779-1
If you want to track signups as a goal in Analytics (a good baseline), set up
a goal where the goal URL is
/signup=1, because after going through a new
user flow will drop you at that URL.
Google Webmaster Tools After setting up Google Analytics, it's easy to link to Webmaster tools:
Set up Stripe keys
heroku config:set \ STRIPE_PUBLISHABLE_KEY=pk_zv4FnnuZ28LFHccVSajbQQaTxnaZl \ STRIPE_SECRET_KEY=lbVrAG8WhPb2cHG9ryBBi1psT4ZREpm8
- Add the free tier of SendGrid to enable user account emails:
heroku addons:add sendgrid:starter heroku config:add BCC_EMAILSfirstname.lastname@example.org
BCC_EMAILS will BCC the provided email with any email sent though
- Add pgbackups and take your first database backup:
heroku addons:add pgbackups heroku pgbackups:capture
You can additionally schedule daily backups with Heroku's Scheduler:
heroku addons:add scheduler heroku addons:open scheduler
Set up a monitoring service. UptimeRobot.com gives you 50 free monitors. On Heroku, this has the added benefit of keeping your site active, so that your dyno never hibernates and you never get a slow request because the dyno was waking back up.
Set up a staging instance
(optional) Add a custom domain
heroku domains:add www.johnhenryrails.comIn your Registrar's host record configuration, you must add
sampleproject.herokuapp.com.as a CNAME for your domain.
Set up NewRelic
heroku addons:add newrelic:stark echo "gem 'newrelic_rpm'" > Gemfile bundle curl https://gist.github.com/rwdaigle/2253296/raw/newrelic.yml > config/newrelic.yml git add config/newrelic.yml Gemfile* git commit -m "Set up NewRelic" heroku config:set NEW_RELIC_APP_NAME="SampleProject" git push heroku master
- Set up Google Adwords tracking:
AdWord's support topic:
https://support.google.com/adwords/answer/1722054?hl=enAt the end of the flow, you'll get a code snippet: The
google_conversion_labelare what we care about. We're going to use those values to set environment variables that let our app know what identifiers to send to AdWords:
heroku config:set GOOGLE_CONVERSION_ID=1234 GOOGLE_CONVERSION_LABEL='abc'
To verify that tracking is working properly, go through your sign up flow and
when you are dumped back on the homepage, view the page's source code. You
should see a
<!-- Google Code for signup Conversion Page --> HTML comment
followed by the conversion snippet.
Bug fixes are welcome as pull requests against master. If you have bigger ideas,
please get in contact with me at