2015-07-11 3 views
0

Как вы обнаруживаете, был ли экземпляр Ruby изменен после создания?Как вы обнаруживаете, был ли экземпляр Ruby изменен после создания?

Я стараюсь держаться подальше от известных драгоценных камней, таких как ActiveModel :: Dirty и писать легкое решение, которое вернет простой true или false, если переменные экземпляра объекта были изменены после некоторого момента.

Это также для обычного объекта Ruby, а не для Rails-объекта, поэтому специальные инструменты Rails не работают.

Я видел несколько сообщений о захвате attr_writer, но я не знал, было ли это всеобъемлющим, и я не мог понять, как это сделать.

Может кто-нибудь мне помочь? Благодарю.

+0

Возможно, вы можете получить некоторые идеи от чтения исходного кода вышеупомянутого 'ActiveModel :: Dirty'. –

+0

Кроме того, решение является либо легким, либо всеобъемлющим. Если бы это было возможно сделать, то ActiveModel :: Dirty было бы сделано именно так. –

ответ

0

AFAIK для этого нет легкого решения. Возможным взломом может быть запись расширения C, которое подключается к GC и проверяет, была ли изменена какая-либо переменная экземпляра.

+0

GC? Он не отслеживает изменения, не так ли? –

+0

Нет, он не отслеживает изменения, как есть, я думаю. – Roman

Смежные вопросы