为什么Rails.cache.write在Rails 2.3.11和Rails 3.2.11控制台中返回不同的值?

AMI*_*ING 2 ruby caching ruby-on-rails ruby-on-rails-2 ruby-on-rails-3.2

我试图在10秒内到期密钥,不知怎的,但是没有使用rspec.在这个过程中,我注意到Rails.cache.write回报falseRails中2.3.11,而Rails.cache.write回报true在Rails的3.2.11,这是一个问题?为什么价值不同?为什么Rails 2.3.11返回falseRails 3.2.11返回true

Rails 2.3.11

irb(main):001:0> Rails.cache.write("test", "java", :expires_in => 10.seconds)
=> false

Rails 3.2.11

irb(main):001:0> Rails.cache.write("test", "java", :expires_in => 10.seconds)
=> true
Run Code Online (Sandbox Code Playgroud)

我使用带有Rails 2.3.11的jruby 1.6.5.1和带有Rails 3.2.11的jruby 1.7.3.

Wal*_*man 5

Rails.cache.write方法有时被称为命令方法,它被调用其副作用,而不是查询方法,为其返回值调用(更多信息,请查看命令查询分离).

由于Rails文档不保证返回值,因此最好不要依赖它,因为它可能(并且显然)在没有警告的情况下进行更改.