sevenwire / forgery

Easy and customizable generation of forged data.

This URL has Read+Write access

commit  31421222e3a50a7d0bdbb11fe88f6ae97e5652cd
tree    b0d085c7ebfc5a41ce28e7637dd38474b7ae10d2
parent  c86d042c7164ca70bfa35d0c11503dbe0bd4cf78
name age message
file .gitignore Loading commit data...
file MIT-LICENSE Thu Oct 15 07:27:39 -0700 2009 Renaming the license. [brandonarbini]
file README.markdown Wed Jul 15 09:24:43 -0700 2009 Adding notes about where documentation can be f... [nate]
file Rakefile
file VERSION.yml
file forgery.gemspec
directory generators/ Thu Apr 03 18:19:30 -0700 2008 Adding rails support. [nate]
file init.rb Thu Nov 27 20:54:00 -0800 2008 Moving rails requires to inside forgery so it w... [nate]
directory lib/
directory spec/
README.markdown

Forgery

The Problem: Making meaningful development data for your application.

The Solution: A fake data generator that does more than just lorem ipsum and random text (well, it does those too, but also does much more).

Forgery generates fake data from dictionaries, formats, and recipes. The plugin includes a generator providing directories to make your own forgeries.

Install

config.gem "sevenwire-forgery", :lib => "forgery", :source => "http://gems.github.com"

Generator

./script/generate forgery

In a rails project this generator creates:

  • RAILS_ROOT/lib/forgery
  • RAILS_ROOT/lib/forgery/dictionaries
  • RAILS_ROOT/lib/forgery/extensions
  • RAILS_ROOT/lib/forgery/forgeries
  • RAILS_ROOT/lib/forgery/formats

You can then use these directories to write your own dictionaries, class extensions, forgeries, and formats.

Forgery will look first here for dictionaries and formats, so you can override the ones used in the plugin.

See the forgeries in the plugin for examples of how to write your own.

See which dictionaries each forgery uses to override them with your own.

Examples

Here I'll supply a few examples of how it works, in general. See each forgery for individual examples.

# Traditional syntax
BasicForgery.password # => "wYMYvq"
BasicForgery.password :allow_special => true # => ";Qo^N[T"
BasicForgery.hex_color # => "#f4d841"

MonetaryForgery.money # => "8.21"
MonetaryForgery.formatted_money # => "$3.25"
MonetaryForgery.money :min => 100, :max => 1000 # => "848.97"

# Alternate syntax
Forgery(:basic).password # => "b6qZTQEH"
Forgery(:basic).password :allow_special => true # => "XlrhV%An"
Forgery(:basic).hex_color # => "#46b73f"

Forgery(:monetary).money # => "1.58"
Forgery(:monetary).formatted_money # => "$3.48"
Forgery(:monetary).money :min => 100, :max => 1000 # => "923.36"

DOCUMENTATION

Documentation can be found at http://docs.github.com/sevenwire/forgery

TODO

  • Add instanced forgeries for more relative information generation.
  • Add markov chains.
  • Add a way to use probability in forgeries.

Thanks

Thanks to the authors and contributors:

  • Nate Sutton (nate aka fowlduck)
  • Brandon Arbini (brandonarbini)
  • Josh Nichols (technicalpickles)
  • Jeremy Stephens (viking aka crookshanks)

Notes

This is a work in progress. If you find bugs or have forgeries to contribute, we'll gladly take them and give credit.

Enjoy.

Nate Sutton (nate@sevenwire.com)