duckface

Duckface

A collection of tools to enforce duck typing based interfaces in Ruby.

Configure

RSpec

spec/spec_helper.rb

require 'duckface/rspec'

Usage

Define an interface

require 'duckface'

module MyInterface
  extend Duckface::ActsAsInterface

  exclude_methods_from_interface_enforcement :ignoreable_method_a, :ignoreable_method_b

  def say_my_name(_name)
    raise NotImplementedMethod
  end

  def ignoreable_method_a
    puts 'I can be ignored'
  end

  def ignoreable_method_b
    puts 'And so can I'
  end
end

Define an implementation

require 'duckface'

class MyImplementation
  implements_interface MyInterface

  def say_my_name(name)
    puts name
  end
end

Test that an implementation correctly implements an interface

require 'spec_helper'

describe MyImplementation
  it_behaves_like 'it implements', MyInterface
end