No commit activity in last 3 years
No release in over 3 years
has_named_bootstraps is a simple way to load bootstrapped records into class-level constants, and generate a list in another constant of all such bootstraps. This is handy for generating <select>s and writing certain kinds of tests.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

 Project Readme
= HasNamedBootstraps

This is alpha code.  The API is subject (and almost certain) to change.  It shouldn't hurt your computer or data, but if it does, I am not obligated to do anything, even feel sorry for you.

has_named_bootstraps is a simple way to load bootstrapped records into class-level constants, making application-level data integrity easier.  You can also generate a list in another constant of all such bootstraps, which is handy for generating <select>s and writing certain kinds of tests.

Getting the bootstrapped data in beforehand is up to you.  I like seed_fu (http://github.com/mbleigh/seed-fu) for this personally.  If has_named_bootstraps can't find a bootstrap, by default it'll raise an error.  It's also possible to have it log a warning and continue, or continue silently.

= Example

    class Department < ActiveRecord::Base
      has_named_bootstraps(
        :R_AND_D         => 'R&D',
        :MARKETING       => 'Marketing', 
        :HANDSOME_DEVILS => 'Web Development' 
      )
    end

    >> Department.find(:all)
    => [#<Department id: 1, name: "R&D">, #<Department id: 2, name: "Marketing">, #<Department id: 3, name: "Web Development">]
    >> Department::R_AND_D
    => #<Department id: 1, name: "R&D">
    >> Department::MARKETING
    => #<Department id: 2, name: "Marketing">
    >> Department::HANDSOME_DEVILS
    => #<Department id: 3, name: "Web Development">

With a master list:

    class Dog < ActiveRecord::Base
      has_named_bootstraps(
        {:FIDO => 'Fido', :ROVER => 'Rover', :SPOT  => 'Spot'},
        :master_list => :GOOD_DOGS
      )
    end

    >> Dog.find(:all)
    => [#<Dog id: 1, name: "Spot">, #<Dog id: 2, name: "Fido">, #<Dog id: 3, name: "Rover">]
    >> Dog::GOOD_DOGS
    => [#<Dog id: 1, name: "Spot">, #<Dog id: 2, name: "Fido">, #<Dog id: 3, name: "Rover">]

See HasNamedBootstraps::ClassMethods for other options.

= TODO

make should_have_named_bootstraps detect multiple missing bootstraps (not just the first)

write tests for shoulda macros, document same

Markdown README for GitHub

= License and copyright

Copyright (c) 2010 Children's Hospital Boston, released under the GNU Lesser General Public License.

= Acknowledgements

Thanks to Wyatt Greene for feedback, Dan Croak for patches and Harold Gimenez for Markdown advice.  Boston.rb can beat up your Ruby group.