因此在 Rails 3.2 中,ActiveSupport::Memoizes 已被弃用。
消息内容如下:
DEPRECATION WARNING: ActiveSupport::Memoizable is deprecated and
will be removed in future releases,simply use Ruby memoization
pattern instead.
它指的是“Ruby 记忆模式”(单数),就好像有一种模式我们都应该知道并参考......
我想他们的意思是这样的:
def my_method
@my_method ||= # ... go get the value
end
or
def my_method
return @my_method if defined?(@my_method)
@my_method = # ... go get the value
end
还有什么我错过的吗?
以下是 Memoized 被弃用的提交(以及后续讨论):https://github.com/rails/rails/commit/36253916b0b788d6ded56669d37c96ed05c92c5c https://github.com/rails/rails/commit/36253916b0b788d6ded56669d37c96ed05c92c5c
作者主张@foo ||= ...
方法和指向此提交 https://github.com/rails/rails/commit/36253916b0b788d6ded56669d37c96ed05c92c5c#commitcomment-433227作为迁移的示例:https://github.com/rails/rails/commit/f2c0fb32c0dce7f8da0ce446e2d2f0cba5fd44b3 https://github.com/rails/rails/commit/f2c0fb32c0dce7f8da0ce446e2d2f0cba5fd44b3.
编辑:
请注意,我不一定将此更改解释为意味着所有实例memoize
可以或应该用此模式替换。我认为这意味着 Rails 代码本身不再需要/不需要 Memoizable。正如评论所指出的,Memoizes 不仅仅是一个包装器@foo ||= ...
。如果您需要这些功能,请继续使用 Memoizes,您只需从 ActiveSupport 以外的其他地方获取它(我猜有人会分叉一个 gem 版本,如果他们还没有的话)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)