abstract_class

Abstract classes in ruby

Installation

gem install abstract_class

Usage

class ActiveRecord::Base
  abstract
end

class User < ActiveRecord::Base
end

# RuntimeError: abstract class ActiveRecord::Base can't be instantiated/allocated
ActiveRecord::Base.new
ActiveRecord::Base.allocate

# instantiates/allocates like normal
User.new
User.allocate

# returns true or false
ActiveRecord::Base.abstract?
User.abstract?

Testing abstract classes

Include AbstractClass::TestHelper in your test framework

Test::Unit::TestCase.send(:include, AbstractClass::TestHelper)

Then you can use assert_abstract_class or assert_not_abstract_class) in your tests

class AbstractClass
  abstract
end

class NormalClass < AbstractClass
end

class AbstractClassTest < Test::Unit::TestCase
  def test_should_be_abstract_class
    assert_abstract_class AbstractClass
  end

  def test_should_not_be_abstract_class
    assert_not_abstract_class NormalClass
  end
end

Patches and pull requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with Rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.