私の目標は、クラス間のコントラクトを定義することです。
私はダックタイピングとすべてが好きですが、アプリケーションの異なるレイヤー間のインターフェースを定義して、外部から呼び出すメソッドと、他のレイヤーで使用してはならないアクセサリメソッドを明確に定義したいです。
たとえば、Javaでは、get()やsave()などのメソッドを使用してPersistorインターフェースを定義してから、データベースで永続化する必要のあるすべてのメソッドを使用してJdbcPersistorクラスを定義できます。また、リモートレストサーバーに保存するための他の方法を備えた別のRestPersistorもあります。
Rubyでインターフェイスを要求するのではなく、この区別を維持するためのきちんとした方法があるかどうかを確認するだけです。私はRubyが好きですが、Rubyを使用する小規模なプロジェクトにのみ取り組みました。