Rails 升级到 rails3.2.0 后,显示 DEPRECATION WARNING

bindiry · 2012年01月21日 · 最后由 bindiry 回复于 2012年03月03日 · 3766 次阅读

升级到rails 3.2.0后,rails server后,显示 DEPRECATION WARNING: ActiveSupport::Memoizable is deprecated and will be removed in future releases,simply use Ruby memoization pattern instead. (called from <top (required)> at /var/workspace/yinse/config/application.rb:12)

google了一下,没搞明白Ruby memoization是个啥东东, 请教同学们这个问题应该怎样解决?

application.rb 12行的内容,对比了一下,和用rails3.2.0新建一个项目一样

Bundler.require(*Rails.groups(:assets => %w(development test)))
共收到 18 条回复

还没遇到你那个问题。第一个遇到的是 NoMethodError undefined method `include?' for nil:NilClass

http://api.rubyonrails.org/ 你代码里没用到的话, 这个没什么好解决的吧, 下个版本移除 不知哪位, 将 environments 里面的几个多余的空格删了, 齐齐整整的 :)

#2楼 @cless 啊,难道就没办法去掉这个WARNING提示了?

是不是应该把 application.rb:12 这一行内容贴出来看看?

#4楼 @zhangyuan 不好意思,现在帖出来了,不过这行内容和新建一个项目的内容一样,不知道为什么会这样

#4楼 @zhangyuan 但新建一个项目就没这个WARNING提示

ActiveSupport::Memoizable 应该是用来缓存方法结果的模块,源码见 activesupport/lib/active_support/memoizable.rb 这个文件。警告也是从这里出来的。

railties/guides/source/3_2_release_notes.textile 里有一句:

Deprecated ActiveSupport::Memoizable in favor of Ruby memoization pattern.

如果lz没有使用

extend ActiveSupport::Memoizable

的话,应该是某个gem里使用了Memoizable,所以有了警告。

update on Jan 22th:

昨晚写错了。应该是extend ActiveSupport::Memoizable 不是 include ActiveSupport::Memoizable

#7楼 @zhangyuan 谢谢解答,让你这样一说,还真有可能是某个Gem引起的,我挨个去掉测试一下

#8楼 @bindiry 测试了一下,果然是carrierwave-mongoid引起的,只能等待他更新了。

在捣腾ruby-china的源码也发现有这个警告提示

#9楼 @bindiry 可以给他提交个修正啊

等待更新期间,实在很烦的话,权宜之计是可以通过在配置文件里加行 ActiveSupport::Deprecation.silenced = true 来解决

郁闷了 现在 运行 rake assets:precompile

来这个了

DEPRECATION WARNING: ActiveSupport::Memoizable is deprecated and will be removed in future releases,simply use Ruby memoization pattern instead. (called from at /home/wasai/projects/ruby-china/config/application.rb:13)

有人尝试padrino吗,我有点受不了rails的越来越庞大,越来越慢。

#16楼 @hhuai 很多受不了的都直接转nodejs了

#15楼 @huobazi 多谢提醒,我来更新一下。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册