/rails_startup_template

A startup template new Ruby on Rails4 applications

Primary LanguageRuby

Rails Startup template

This is a template I use for my new Ruby on Rails 4 applications. Pull requests are welcome.

How to Use

rails new [app_name] -m rails_startup_template/template.rb

What it does

  1. Adds the following gems:
  • analytics-ruby: I use segment.io as an anaytics provider. Segment.io is easy to integrate, asynchronous, and forwards data to other providers like Mixpanel and Kissmetrics.
  • bcrypt-ruby: I usually implement authentication myself instead of using gems like Devise. This is needed for the has_secure_password functionality. See API Doc.
  • bourbon: Bourbon provides useful SASS mixins for cross-browser compatibility.
  • (Optional) haml-rails: HAML is a beautiful templating language. I prefer it over ERB.
  • simple_form: SimpleForm makes it easy to build complex form using simple markup.
  • uuidtools: To generate UUIDs, which is useful for various things.
  • rspec-rails: Rspec is a testing tool for test-driven and behavior-driven development. It makes writing specs more enjoyable.
  • guard-rspec: Guard for automatically launching your specs when files are modified.
  • (test environment) capybara: I use Capybara to write integration tests and simulate user behavior.
  • (test environment) factory_girl_rails: FactoryGirl provdes a flexible alternative to Rails fixtures.
  • (production environment) rails_12factor: This is needed for deploying Rails 4 applications on Heroku.
  1. Sets up foreman to deal with environment variables and background services. Instead of using rails s you should use foreman s. Add your own environment variables in the .env file.

  2. Cleans up assets by renaming application.css to application.css.scss and removing the include_tree directives. It's better design to import and require things manually. For example, @import 'bootstrap';

  3. Optionally installs Twitter bootstrap.

  4. Optionally installs Font Awesome.

  5. Initializes a new git repository with an initial commit.

TODO

Here are some things I'd like to add:

  • Optionally create a github repository. That sould be done by asking for username/password and issuing a curl API call.