Skip to content

Instantly share code, notes, and snippets.

@martinisoft
Created October 24, 2010 04:35
Show Gist options
  • Save martinisoft/643102 to your computer and use it in GitHub Desktop.
Save martinisoft/643102 to your computer and use it in GitHub Desktop.
Rails 3, RSpec, Cucumber, Factory_Girl, HAML, SASS, Devise, Formtastic Template
## Rails App Template
## Updated for Rails 3.0.1
## Created on 10/23/10
## Updated on 11/4/10
## Run using $ rails new [appname] -JT -m tpl-cukeapp.rb
## Gems
# Warden and Devise for security
gem 'warden', '0.10.7'
gem 'devise', '1.1.3'
# Extra Plugins
gem 'formtastic', '~> 1.1.0'
gem 'escape_utils'
# HAML and SASS for Templating
gem 'haml'
gem 'haml-rails'
# Cucumber and Friends
gem "rspec-rails", ">= 2.0.1", :group => [:test, :cucumber]
gem "cucumber-rails", ">= 0.3.2", :group => [:test, :cucumber]
gem "capybara", :group => [:test, :cucumber]
gem "database_cleaner", :group => [:test, :cucumber]
gem "factory_girl_rails", :group => [:test, :cucumber]
gem "launchy", ">= 0.3.7", :group => [:test, :cucumber]
gem "spork", ">= 0.8.4", :group => [:test, :cucumber]
## Generators
inject_into_file('config/application.rb', :after => "config.i18n.default_locale = :de") do
%q{
# Generator Settings
config.generators do |g|
g.template_engine :haml
g.test_framework :rspec, :fixture => false, :views => false
end
# Global Sass Option
Sass::Plugin.options[:template_location] = { 'app/stylesheets' => 'public/stylesheets' }
}
end
# Latest jQuery UJS
# get "https://github.com/rails/jquery-ujs/raw/master/src/rails.js", "public/javascripts/rails.js"
# HACK: Since the get method hates https and redirects
jquery = open("https://github.com/rails/jquery-ujs/raw/master/src/rails.js").read
create_file "public/javascripts/rails.js", jquery
# Replace the blank one with jQuery served via Google CDN
gsub_file 'config/application.rb', 'config.action_view.javascript_expansions[:defaults] = %w()', 'config.action_view.javascript_expansions[:defaults] = %w(http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js rails.js)'
# Run all the generators
generate "rspec:install"
generate "cucumber:install --capybara --rspec --spork"
generate "formtastic:install"
generate "devise:install"
generate "devise User"
## Files
# Clear the default index
remove_file "public/index.html"
# Make a blank application javascript file
remove_file "public/javascripts/application.js"
create_file "public/javascripts/application.js"
# Make the SASS directory and base file
empty_directory "app/stylsheets"
create_file "app/stylesheets/application.scss"
## Layout
layout = <<-LAYOUT
!!!
%html
%head
%title #{app_name.humanize}
= stylesheet_link_tag :all
= javascript_include_tag :defaults
= csrf_meta_tag
%body
= yield
LAYOUT
remove_file "app/views/layouts/application.html.erb"
create_file "app/views/layouts/application.html.haml", layout
## Git
gitignore = <<-END
.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/stylesheets/*
END
# Re-Make gitignore
remove_file ".gitignore"
create_file ".gitignore", gitignore
# Setup Factory_Girl
empty_directory 'spec/support'
create_file 'spec/support/factories.rb'
run "bundle install"
git :init
git :add => "."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment