У меня есть класс Autodrop, который содержит несколько методов, a.o. 'метаданные', которые вызывают внешний API (dropbox). Они медленные.
Однако у меня уже часто есть эти метаданные при инициализации AutodropImage, поэтому я должен сделать методы умнее.
Я имею в виду следующее:
class Autodrop
include Dropbox
attr_reader :path
def initialize(path)
@path = path
end
def self.from_entry(drop_entry)
@drop_entry = drop_entry
self.initialize(@drop_entry.path)
end
def metadata
if @drop_entry = nil
return heavy_lifting_and_network_traffic
else
return @drop_entry.metadata
end
end
#...
end
Теперь я ожидал бы позвонить
entry = BarEntry.new()
foo = Autodrop.from_entry(entry)
foo.metadata
Чтобы избежать этого тяжелого подъема и вызова сетевого трафика.
Но это не работает. И каким-то образом, во всей моей новизне, я уверен, что я не прав в этом все неправильно.
Есть ли термин, который я должен искать и читать в первую очередь? Как бы вы пошли на это?
Обратите внимание, что примеры упрощены: в моем коде я наследую AutodropImage