ruby - कौन सा रूबी ज्ञापन पैटर्न ActiveSupport:: Memoizable संदर्भित करता है?




ruby-on-rails-3 memoization (3)

तो रेल 3.2 में, ActiveSupport :: Memoizable को बहिष्कृत कर दिया गया है।

संदेश पढ़ता है:

DEPRECATION WARNING: ActiveSupport::Memoizable is deprecated and
will be removed in future releases,simply use Ruby memoization
pattern instead.

यह "रूबी ज्ञापन पैटर्न" (एकवचन) को संदर्भित करता है जैसे कि एक पैटर्न है जिसे हम सभी जानते हैं और इसका संदर्भ लें ...

मुझे लगता है कि उनका मतलब कुछ है:

def my_method
  @my_method ||= # ... go get the value
end

या

def my_method
  return @my_method if defined?(@my_method)

  @my_method = # ... go get the value
end

क्या मुझे कुछ और याद आया है?


एक और विकल्प ज्ञापन मणि का उपयोग करना है:

यह ActiveSupport::Memoizable से प्रत्यक्ष निष्कर्षण है और इसे ड्रॉप-इन प्रतिस्थापन के रूप में उपयोग किया जा सकता है। बस require 'memoist' और परिवर्तन की require 'memoist'

extend ActiveSupport::Memoizable

सेवा मेरे

extend Memoist

एक वर्ग विधि को याद करने के लिए, शीर्ष उत्तर के लिए बस एक अतिरिक्त पैटर्न का उपयोग करें:

class Foo
  class << self
    def bar
      @bar ||= begin
        # ...
      end
    end
  end
end

Avaynshtok द्वारा ऊपर उल्लिखित https://github.com/rails/rails/commit/36253916b0b788d6ded56669d37c96ed05c92c5c पर टिप्पणियों के आधार पर, मैं इसके साथ जा रहा हूँ:

ActiveSupport::Deprecation.silence { extend ActiveSupport::Memoizable }

... क्योंकि मुझे लगता है कि मुझे पता चलेगा कि जब मेरे आरएसपीसी सूट से शुरुआती गेट से मर रहा है, तो ActiveSupport से Memoizable फिसल गया है।





memoization