Begetter is a teeny tiny little gem that creates a class constant from a string based name. It is inspired by ActiveSupport's constantize but with-out the ActiveSupport girth.
Installation
Add this line to your application's Gemfile:
gem 'begetter'And then execute:
$ bundle install
Or install it yourself as:
$ gem install begetter
Usage
Require Begetter:
require 'begetter'Call Begetter.get with the name of the class you wish to reference:
class FooBar; end
klass_name = 'FooBar'
klass = Begetter.get(klass_name)
foo_bar = klass.new
#=> FooBarClasses with-in modules work as well:
module Foo
class Bar; end
end
klass_name = 'Foo::Bar'
klass = Begetter.get(klass_name)
bar = klass.new
#=> Foo::BarThat's it!
Why?
Do we really need an entire gem to do this? After no less than 3 projects that had heavily dynamic architecture, I found myself building this functionality as a module into each one. There have to be others who will find this moderately useful.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/jzahnd/begetter.