Mon objectif est de définir des contrats entre les classes.
J'aime le typage canard et tout mais j'aimerais aussi définir une interface entre les différentes couches de mon application pour définir clairement quelles sont les méthodes à appeler depuis l'extérieur, et quelles sont les méthodes accessoires qui ne devraient pas être utilisées par l'autre couche .
Par exemple, en Java, je peux définir une interface Persistor avec des méthodes comme get () et save (), puis définir une classe JdbcPersistor avec toutes les méthodes dont j'ai besoin pour persister dans la base de données. Et peut-être un autre RestPersistor avec d'autres méthodes pour économiser sur un serveur distant.
Je ne demande pas d'interfaces en Ruby, juste pour savoir s'il y a un moyen soigné de garder cette distinction. J'aime Ruby mais je n'ai travaillé que sur de petits projets avec.