10.7. Weryfikacja atrybutów obiektu

Problem

Stworzyliśmy klasę (lub moduł), w której tworzenie niektórych zmiennych instancyjnych delegowane jest do metod przechwytujących. Chcemy upewnić się, że metody te prawidłowo definiują właściwe zmienne instancyjne.

Rozwiązanie

Listę zmiennych instancyjnych obiektu uzyskać można za pomocą metody Object#instance_ variables, upewniając się, że żądane zmienne istotnie zostały zdefiniowane. Poniższa metoda weryfikuje obecność w danym obiekcie wszystkich zmiennych instancyjnych o podanych nazwach:

class Object def must_have_instance_variables(*args) vars = instance_variables.inject({}) { |h,var| h[var] = true; h } args.each do |var| unless vars[var] raise ArgumentError, %{Nie zdefiniowano zmiennej ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.