Skip to content

Instantly share code, notes, and snippets.

Forked from niquola/
Created September 3, 2011 03:01
Show Gist options
  • Save docwhat/1190475 to your computer and use it in GitHub Desktop.
Save docwhat/1190475 to your computer and use it in GitHub Desktop.
Rails 3.1 with Rspec, Factory Girl, Haml, Database Cleaner, Spork, and Guard

Install Rails 3.1

gem install rails

generate new app, skipping Test::Unit file generation

rails new my_app -T

Set up Gemfile

Add this to your Gemfile

gem 'haml-rails'
gem 'simple_form'

group :test, :development do
  gem "rspec-rails"
  gem 'rspec-instafail'
  gem 'rb-fsevent'
  gem 'growl'
  gem 'pry'
  gem 'factory_girl_rails'
  gem 'database_cleaner'
  gem "factory_girl_rails"
  gem "capybara"
  gem 'guard-spork'
  gem "guard-bundler"
  gem "guard-rspec"
  gem "guard-migrate"

Configure generators to use the gems we want, and skip view spec generation

# in config/application.rb

config.generators do |g|
  g.test_framework :rspec, :fixture => true
  g.fixture_replacement :factory_girl, :dir => 'spec/factories'
  g.template_engine :haml

turn on autoloading of lib directory and all its subdirectories

In Rails 3+, the lib directory is no longer autoloaded.

# in config/application.rb
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]

run install tasks for our gems

rails g rspec:install

Setup spork.

spork --bootstrap

Then edit spec/spec_helper.rb and move everything into the prefork section.

Setup database cleaner

Edit spec/spec_helper.rb.

Put this in the prefork section:

require 'database_cleaner'
DatabaseCleaner.strategy = :truncation

Put this in the each_run section:


Factory Girl

Comment out the config.fixture_path line in spec/spec_helper.rb...the comment above implies it shouldn't be used if we're not using ActiveRecord fixtures.

RSpec Instafail

echo '--colour
--require rspec/instafail
--format RSpec::Instafail' > .rspec

The --drb is needed for spork and --colour is for color, because it's pretty.


In your config/environments/development.rb, near the end before the YourAppName::Application.configure block, put this:

silence_warnings do
    require 'pry'
    IRB = Pry
  rescue LoadError

Now rails c will startup using pry. You can also add bindings.pry anyplace and your app will stop there with a pry prompt until you exit it.

See Also:


Run these commands:

guard init
guard init bundler
guard init spork
guard init migrate
guard init rspec

You may have to monkey withy our Guardfile some but the order should be right.

Copy link

I don't know whether you use rvm or not but you would have to use bundle exec before every command in terminal. Thanks!

Copy link

docwhat commented Oct 13, 2011

If you use rvm, you don't need the bundle exec part. But you are correct if you are not using bundle exec.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment