Bootstrapper

A rather simple gem that executes a block to load seed/bootstrap data into a database.

Example

gem install bootstrapper

Run the bootstrapper generator:

Rails 3:

./script/rails g bootstrapper

Rails 2:

ruby script/generate bootstrapper

This will place a bootstrap.rb file in the db directory within your project.

The file will have something like this in it:

Bootstrapper.for :development do |b|
end

Bootstrapper.for :production do |b|
end

Bootstrapper.for :test do |b|
end

Bootstrapper.for :staging do |b|
end

Using things like Factory Girl and Forgery you can quickly and easily generate fake, random, and/or seed data.

An example using Factory Girl:

Bootstrapper.for :development do |b|
  b.truncate_tables :addresses
  b.run :users

  Factory(:us_address, :state => "ME")
  Factory(:us_address, :state => "IL")
  Factory(:us_address, :state => "CA")
end

Bootstrapper.for :production do |b|
end

Bootstrapper.for :test do |b|
end

Bootstrapper.for :staging do |b|
end

Bootstrapper.for :users do |b|
  3.times{ Factory(:user) }
  Factory(:user, :login => "admin",
                 :password => "sekret",
                 :password_confirmation => "sekret")
end

With that file, you could run:

rake db:bootstrap

Which will run the development (default) bootstrap. You can specify which bootstrap task to run by specifying:

rake db:bootstrap BOOTSTRAP=users

You can also run bootstrap for another environment:

rake db:bootstrap RAILS_ENV=production

You can even run a specific bootstrap for another environment:

rake db:bootstrap BOOTSTRAP=users RAILS_ENV=production

The variable passed into a Bootstrapper block is actually Bootstrapper itself, so you can use any methods it has.

You can delete all records from tables using 'truncate_tables':

b.truncate_tables :users
b.truncate_tables :users, :addresses

You can run other bootstrap tasks using 'run':

b.run :users
b.run :production

FactoryGirl http://github.com/thoughtbot/factory_girl/tree/master

Forgery http://github.com/sevenwire/forgery/tree/master

Copyright (c) 2008 Sevenwire, released under the MIT license Contributions from Jared Mehle (jrmehle), Joel Meador (janxious), Jan Schwenzien (jeanmartin), Ken Pratt (kenpratt)