Ruby gem class_interface

Extends Ruby to support class interfaces.

That can be very handy in teams to declare requirements for specific types of classes.

Installation

Add this line to your application's Gemfile:

gem 'class_interface'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install class_interface

Examples

Defining an interface

It is a good idea, to start an interface name by convention with an I, following by a capitalized camel case constant name, i.e.: IMyInterface, IHouse, IClassName, ...

class IExample
  MIN_AGE = Integer
  DEFAULT_ENV = String
  SOME_CONSTANT = nil

  def self.some_static_method
  end

  def some_instance_method
  end
end

Implementing an interface

class MyImplementation
  MIN_AGE = 21
  DEFAULT_ENV = 'dev' 
  SOME_CONSTANT = 'some_value'

  def specific_method
    puts "very specific"
  end

  def self.some_static_method
    puts "static method is implemented!"
  end

  def some_instance_method
    # implementation
  end

  def self.another_methods
    # implementation
  end

  implements IExample
end

Documentation

#implements(InterfaceClassConstant)

InterfaceClassConstant must be a valid InterfaceClassConstant or a String, containing a valid InterfaceClassConstant, i.e.: IMyInterface / "IMyInterface"

Methods

All defined methods in the interface class must be implemented in the implementing class. The parameter count must be the same.

Constant Types

All CONSTANTS defined in the interface class must be implemented in the implementing class. CONSTANTS of interfaces may be defined = nil, to allow all types of definitions in the implementing class.

To specify a type, assign its class constant, e.g. String, Array, ... If a specified type is defined, it is mandatory for the implementation to use that type.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/magynhard/class_interface. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.