as_readonly

Wprawdzie nie projekt lecz gem ale myślę, że podpada pod tą kategorię.

w jakich przypadkach taki gem znajdzie zastosowanie ?

Jeśli udostępniasz jakąś kolekcję z obiektu na zewnątrz a myślisz o niej w ten sposób, że tylko ten obiekt ma prawo ją edytować, to możesz to zaznaczyć poprzez użycie tego gema. Oczywiście to tylko informacja dla Ciebie, żebyś jak gdzieś spróbujesz ją modyfikować, żeby poleciał Ci exception w testach zanim to pójdzie na produkcję. Wtedy możesz zweryfikować swoje założenia: albo to wcale nie jest readonly kolekcja i powinieneś być na to gotowy w tym obiekcie albo klient tego obiektu używa czegoś niewłaściwie. Tak czy siak masz informację zwrotną, że gdzieś się wtedy rozminąłeś w założeniach. Zastosowanie podobne jak private. Nikogo nie powstrzyma przed wywołaniem metody ale informujesz kogoś, że to prywatne api i nie należy na nim polegać bo może się zmienić. Tutaj informujesz, że nie powinno się próbować modyfikować tej kolekcji.

spoko, dzięki za wyjaśnienie