Jetfuel is the base Rails application used at flyoverworks.
Installation & New App Creation
First, install the gem:
gem install jetfuel
Then run:
jetfuel projectname
This will create a Rails app in projectname
using the latest version of Rails.
By default this script creates a new git repository. See below if you want to use it against an existing repo.
Set Up Existing App
Get the code.
git clone git@github.com:organization/app.git
Set up the app's dependencies.
cd project
./bin/setup
Use Heroku config to get ENV
variables.
heroku config:pull --remote staging
Delete extra lines in .env
, leaving only those needed for app to function
properly. For example: BRAINTREE_MERCHANT_ID
and S3_SECRET
.
Use Foreman to run the app locally.
foreman start
It uses your .env
file and Procfile
to run processes just like Heroku's
Cedar stack.
Gemfile
To see the latest and greatest gems, look at Jetfuel's Gemfile, which will be appended to the default generated projectname/Gemfile.
It includes application gems like:
- Airbrake for exception notification
- Bourbon for Sass mixins
- Twitter Bootstrap for scaffold application styles
- Leather for Devise with styled views, a bootstrap UI Kit page, and some useful bootstrap component helpers
- Sidekiq for background job processing
- Email Validator for email validation
-
Flutie for and
body_class
view helper - High Voltage for static pages
- jQuery Rails for jQuery
- Postgres for access to the Postgres database
- Rack Timeout to abort requests that are taking too long
- Recipient Interceptor to avoid accidentally sending emails to real people from staging
- Simple Form for form markup and style
- Title for storing titles in translations
- Unicorn to serve HTTP requests
And gems only for staging and production like:
- New Relic RPM for monitoring performance
- Rails 12 Factor to make running Rails 4 apps easier on Heroku
And development gems like:
- Dotenv for loading environment variables
- Pry Rails for debugging
- Spring for fast Rails actions via pre-loading
And testing gems like:
- Capybara and Poltergeist for integration testing
- Guard for automatically running your specs
- Factory Girl for test data
- Formulaic for integration testing HTML forms
- RSpec for unit testing
- RSpec Mocks for stubbing and spying
- Shoulda Matchers for common RSpec matchers
- Timecop for testing time
Other goodies
Jetfuel also comes with:
- The
./bin/setup
convention for new developer setup - Rails' flashes set up and in application layout
- A few nice time formats set up for localization
-
Rack::Deflater
to compress responses with Gzip - Fast-failing factories
- A low database connection pool limit
- Safe binstubs
- t() and l() in specs without prefixing with I18n
- An automatically-created
SECRET_KEY_BASE
environment variable in all environments. - Configuration for Travis Pro continuous integration.
- The analytics adapter Segment.io (and therefore config for Google Analytics, Intercom, Facebook Ads, Twitter Ads, etc.).
Heroku
You can optionally create Heroku staging and production apps:
jetfuel app --heroku true
This:
- Creates a staging and production Heroku app
- Sets them as
staging
andproduction
Git remotes - Configures staging with
RACK_ENV
andRAILS_ENV
environment variables set tostaging
Capistrano
You can optionally install capistrano if you are deploying to a VPS like Digital Ocean:
jetfuel app --capistrano true
This:
- Adds capistrano and capistrano-rails to your gemfile
- Adds capistrano configuration files that should work with rails-fed-chef
You will need to tell the generator what your github repository and the IP address for your server are. Otherwise, you'll need to update those values in config/deploy.rb
and config/deploy/production.rb
when you have everything set up.
Git
This will initialize a new git repository for your Rails app. You can
bypass this with the --skip-git
option:
jetfuel app --skip-git true
GitHub
You can optionally create a GitHub repository for the suspended Rails app. It requires that you have Hub on your system:
curl http://hub.github.com/standalone -sLo ~/bin/hub && chmod +x ~/bin/hub
jetfuel app --github organization/project
This has the same effect as running:
hub create organization/project
Dependencies
Jetfuel requires the latest version of Ruby.
Some gems included in Jetfuel have native extensions. You should have GCC installed on your machine before generating an app with Jetfuel.
Use OS X GCC Installer for Snow Leopard (OS X 10.6).
Use Command Line Tools for XCode for Lion (OS X 10.7) or Mountain Lion (OS X 10.8).
PostgreSQL needs to be installed and running for the db:create
rake task.
Issues
If you have problems, please create a GitHub Issue.
Contributing
To update Jetfuel's Ruby version, change .ruby-version
and .travis.yml
.
Please see CONTRIBUTING.md for further details.
Credits
Jetfuel is a for of thoughtbot's suspenders gem and is maintained by FlyoverWorks, inc.
License
Jetfuel is Copyright © 2014 FlyoverWorks. It is free software, and may be redistributed under the terms specified in the LICENSE file.