Dummier is a rails generator for automating the creation and customization of rails testing applications.
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
lib
test
.gitignore
.travis.yml
Gemfile
LICENSE
README.md
Rakefile
dummier.gemspec

README.md

Dummier Build Status

A smart gem with a dumb name; Dummier is a rails generator for automating the creation of rails testing applications.

Dummier was inspired by José Valim's enginex which creates a standard gem structure for you. Enginex creates a test/dummy app for you, but what if we want to re-create it? Or leave it out of git?

The idea behind Dummier is that we don't check test/dummy into git, but rather generate it on the fly for the gems we're developing. It just seems DRY'er that way.

Dummier is simple; just run the binary from your gem's root directory and it will generate a stripped-down & gem-dev-ready rails app in test/dummy. While it's doing it's thing, Dummer triggers a few hooks along the way for easy customization.

To catch the hooks, just create appropriately named files in test/dummy_hooks inside your gem. See Hooks below for more info.


Installation

To install from RubyGems:

gem install dummier

To install with bundler:

gem 'dummier', '>= 0.3.2'

To package for development in your gemspec:

s.add_development_dependency('dummier', '>= 0.3.2')

Usage

After you've installed Dummier, just cd into the gem your developing and run the binary:

bundle exec dummier

Hooks

Dummier calls the following hooks along the way, in this order:

  1. before_delete
  2. before_app_generator
  3. after_app_generator
  4. before_migrate
  5. after_migrate

Place appropriately named files in test/dummy_hooks and dummier will find and execute them automatically!

You can use Rails::Generators::Actions as well as Thor::Actions in your hooks. Also, since hooks are just eval'd into the Dummer::AppGenerator, you have access to all of those methods as well.

If a hook throws an error, Dummier will raise a Dummier::HookException and exit immediately.

Simple Example

Here's a before_migrate.rb hook that will install Spree Commerce by running a generator before migrating the test/dummy database.

# test/dummy_hooks/before_migrate.rb
run "rails g spree:install"

More Complex Example

Here's an example taken from has_magick_title:

# test/dummy_hooks/after_app_generator.rb
run "rails g scaffold post title:string"

gsub_file "app/models/post.rb", "end", %(
  has_magick_title

end)

gsub_file "config/routes.rb", "resources :posts", %(
  resources :posts
  root :to => "posts#index")

gsub_file "app/views/posts/show.html.erb", "<%= @post.title %>", %(
  <%= magick_title_for @post %>)

Testing

To get setup for testing, clone this repo, bundle up and run rake.

git clone git://github.com/citrus/dummier.git
cd dummier
bundle install
bundle exec rake

Enjoy!


Change Log

0.3.2 - 2012/3/12

  • revert to using rake "db:migrate", :env => "test" for running migrations

0.3.1 - 2012/3/12

  • use bundle exec when running rake db:migrate
  • better gem dependency defintions
  • use rescue StandardError vs rescue Exception

0.3.0 - 2012/1/26

  • exit and raise a Dummier::HookException when a hook raises an exception

0.2.4 - 2011/9/7

  • fixed travis ci build image path (thanks @fritzek)

0.2.3 - 2011/9/6

  • refactored AppGenerator#run!
  • new app generator tests

0.2.2 - 2011/8/31

  • added to travis-ci.org
  • fixed ruby 1.8.7, rbx and ree compatibility

0.2.1 - 2011/8/31

  • merged GH#1 - Thanks @holdensmagicalunicorn
  • revised readme

0.2.0 - 2011/6/18

  • moved the dummy_hooks to your test folder rather than in lib. makes more sense that way.

0.1.1 - 2011/6/1

  • added your gem's test/dummy_hooks/templates folder into the generator's source_paths

0.1.0 - 2011/5/20

  • removed spork and wrote a basic hook test
  • improved documentation

0.1.0.rc1 - 2011/5/11

  • added spork and some tests

2011/5/10

  • it exists!

Contributors


License

Copyright (c) 2011 - 2012 Spencer Steffen and Citrus, released under the New BSD License All rights reserved.