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