ruby-on-rails - 我如何应用 ruby​​ 内存模式来编写此代码

标签 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.

我知道什么是记忆化,违规代码如下所示:

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

我不太确定如何使用 ruby​​ 内存模式来内存它。之前的技术人员已经记住了api方法。有人有什么想法吗?

最佳答案

使用这个:

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

注意 thread safety .

关于ruby-on-rails - 我如何应用 ruby​​ 内存模式来编写此代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23412118/

相关文章:

Ruby:获取嵌套哈希值的总和

ruby-on-rails - 如何在索引操作中找到多态嵌套资源的父模型?

ubuntu - Rspec 在 Ubuntu 上非常慢,但在 Mac 上很快

ruby-on-rails - Braintree IOS + rails 错误 91564 不能多次使用 payment_method_nonce

Ruby bool 双重否定约定

ruby-on-rails - @rails_folks | '' http ://twitter. com/#!/user/followers"| 请解释

ruby - 在 OS X Mountain Lion 上通过 RVM 安装 Ruby 时运行 'make' 时出错

ruby-on-rails - 我可以使用 github-services hook 将我的提要发布到其他服务吗?

ruby-on-rails - 在 Rails 的子目录中包含所有样式表

ruby-on-rails - Ruby on Rails 开发流程/顺序