public
Last active

Rails 3.1 with Rspec, Cucumber, Factory Girl, Haml, and Simple Form

  • Download Gist
rails31init.md
Markdown

Install Rails 3.1 RC

gem install rails --pre

generate new app, skipping Test::Unit file generation

rails new my_app -T

Set up Gemfile

# in Gemfile

gem 'haml'
gem 'haml-rails', :group => :development
gem 'simple_form'

group :test do
  gem 'database_cleaner'
  gem 'rails3-generators' #mainly for factory_girl & simple_form at this point
  gem 'rspec-rails'
  gem 'factory_girl_rails'
  gem 'cucumber-rails'
  gem 'capybara'

end

Install our gems, and scope them to our app

bundle install --path vendor

Use this for all subsequent `bundle install commands. Why? http://ryan.mcgeary.org/2011/02/09/vendor-everything-still-applies/

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, :views => false, :fixture => true
  g.fixture_replacement :factory_girl, :dir => 'spec/factories'
  g.form_builder :simple_form
  g.template_engine :haml
end

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 cucumber:install
rails g rspec:install
rails g simple_form:install

Devise-specific configuration

thank you. this is helpful

Can't that go in config/initializers/generators.rb ?
Thanks a lot for this.

thank you! meanwhile, config line for views specs should be:
g.test_framework :rspec, :view_specs => false, :fixture => true

why it is necessary to have hanl-rails ? only in development

I just had an issue where RSpec wouldn't find the action view templates written in haml.

I solved it by adding the haml-rails gem to the test group.

Thus, if you have the same issue I recommend:

group :development, :test do
  gem 'rspec-rails'
...
  gem 'haml-rails'
end

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.