В Rails мы можем определить класс как:
class Test < ActiveRecord::Base
before_initialize :method
end
и при вызове Test.new
на экземпляр будет вызываться method()
. Я пытаюсь узнать больше о Ruby и методах классов, подобных этому, но у меня возникают проблемы при попытке реализовать это на простом Ruby.
Вот что у меня есть:
class LameAR
def self.before_initialize(*args, &block)
# somehow store the symbols or block to be called on init
end
def new(*args)
## Call methods/blocks here
super(*args)
end
end
class Tester < LameAR
before_initialize :do_stuff
def do_stuff
puts "DOING STUFF!!"
end
end
Я пытаюсь выяснить, где хранить блоки в self.before_initialize
. Первоначально я попробовал переменную экземпляра, такую как @before_init_methods
, но в тот момент эта переменная экземпляра не существовала в памяти, поэтому я не мог сохранить или извлечь ее. Я не уверен, как / где я могу хранить эти блоки / символы / символы во время определения класса, чтобы потом вызывать их внутри new
.
Как я мог это реализовать? (Либо имея before_initialize
взять блок / proc / список символов, на данный момент я не против, просто пытаюсь понять концепцию)