Sha256: 2d73a88f3673c272ed1112c74b74de850c357795ffcb314787f1d673ed006620
Contents?: true
Size: 1.66 KB
Versions: 3
Compression:
Stored size: 1.66 KB
Contents
![duckface](https://user-images.githubusercontent.com/2643026/40590182-811ac3bc-61f2-11e8-814a-b235c51fd52c.jpg) # Duckface [![CircleCI](https://circleci.com/gh/samuelgiles/duckface.svg?style=svg)](https://circleci.com/gh/samuelgiles/duckface) A collection of tools to enforce duck typing based interfaces in Ruby. ## Install From gem: ``` gem 'duckface-interfaces', require: 'duckface' ``` From source: ``` gem 'duckface-interfaces', require: 'duckface', git: 'git@github.com:samuelgiles/duckface.git' ``` ## Configure ### RSpec `spec/spec_helper.rb` ```ruby require 'duckface/rspec' ``` ## Usage ### Define an interface ```ruby 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 ```ruby require 'duckface' class MyImplementation implements_interface MyInterface def say_my_name(name) puts name end end ``` ### Test that an implementation correctly implements an interface ```ruby require 'spec_helper' describe MyImplementation it_behaves_like 'it implements', MyInterface end ``` If it fails you'll get messages pointing out where you've gone wrong: ```ruby Failures: 1) MyImplementation behaves like it implements MyInterface correctly Failure/Error: expect(check_session.successful?).to be(true), formatted_message(check_session) expected to correctly implement MyInterface: - say_my_name is not present ```
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
duckface-interfaces-0.0.5 | README.md |
duckface-interfaces-0.0.4 | README.md |
duckface-interfaces-0.0.3 | README.md |