Używam Spree, a Spree ma klasę o nazwie Order
to wygląda jak:
module Spree
class Order
# class definition.
end
end
W mojej aplikacji dostosowywałem Order
jak na przykład:
Spree::Order.class_eval do
# customisations
end
Moje pytanie brzmi: czy mogę to po prostu zrobić:
module Spree
class Order
# My own customisations.
end
end
Jakieś wady tego? Zasadniczo chcę uniknąć używania class_eval
.
Odpowiedzi:
2 dla odpowiedzi № 1Benjamin, ponownie otwórz klasę nie poinformuje cię (ale class_eval
zgłosi błąd), jeśli istniejąca klasa nie istnieje lub nie została załadowana.
Ale jeśli masz zasięg testowy, myślę, że ponowne otwarcie klasy powinno być bezpieczne?
3 dla odpowiedzi № 2
nie możesz zmienić klasy bez class_eval. po prostu spróbuj zastąpić jedną metodę, a wszystkie inne metody zniknęły. z class_eval możesz tego uniknąć. to rubinowy sposób.