Meu objetivo é definir contratos entre classes.
Eu gosto de digitar duck e tudo, mas também gostaria de definir uma interface entre diferentes camadas do meu aplicativo para definir claramente qual é o método a ser chamado a partir do externo e quais são os métodos acessórios que não devem ser usados pela outra camada .
Por exemplo, em Java, posso definir uma interface Persistor com métodos como get () e save () e, em seguida, definir uma classe JdbcPersistor com todos os métodos necessários para persistir no banco de dados. E talvez outro RestPersistor com outros métodos para salvar em um restserver remoto.
Não estou pedindo interfaces em Ruby, apenas para saber se existe uma maneira elegante de manter essa distinção. Eu gosto de Ruby, mas trabalhei apenas em pequenos projetos.