如何应用ruby memoization模式来编码此代码

时间:2014-05-01 16:36:27

标签: ruby-on-rails ruby ruby-on-rails-3.2 memoization

我正在将应用程序从Rails 3.2.11升级到3.2.17,我收到以下错误消息:

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

我知道什么是memoization,违规代码似乎如下:

def api
  @client.vm_by_name(name) if cluster
end
memoize :api

我不太确定如何使用ruby memoization模式来记忆这个。以前的技术人员已经记住了api方法。有人有任何想法吗?

1 个答案:

答案 0 :(得分:3)

使用此:

def api
  @api ||= @client.vm_by_name(name) if cluster
end

关于thread safety的注意事项。