Skip to content

chb/has_named_bootstraps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

= 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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages