Low commit activity in last 3 years
A long-lived project that still receives updates
ProtectedConstructor Gem
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies
 Project Readme

Ruby GitHub version Gem Version Documentation Report Issues License

ProtectedConstructor

Provides a module that may be included in a Ruby class, that protects the constructor; good for enforcing instantiation of classes using, for instance, a class factory. The code itself is not mine, I just wrapped it in a gem and provided the examples; sorry, I don't remember the origin of the code to give credit.

Installation

Add this line to your application's Gemfile:

gem 'ProtectedConstructor'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ProtectedConstructor

Usage

require 'protected_constructor'

class Klass
  include ProtectedConstructor

  def initialize
  end
end

module KlassFactory
  class << self
    public
    def create
      Klass.send(:new)
    end
  end
end

# Constructor is protected.
klass = Klass.new # NoMethodError

# Example using factory...
klass = KlassFactory::create # works
klass.nil?  # false
klass.is_a?(Klass) # true

# Example just using  #send...
klass = Klass.send(:new)  # works
klass.nil?  # false
klass.is_a?(Klass)  # true

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request