2

我试图在 10 秒内使密钥过期,不知何故,但不适用于 rspec。在这个过程中,我注意到Rails 2.3.11 中的 return,而Rails.cache.writeRails 3.2.11 中的return ,这是一个问题吗?为什么不同的价值?为什么 Rails 2.3.11 返回和返回?falseRails.cache.writetruefalseRails 3.2.11true

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

我正在使用带有 Rails 2.3.11 的 jruby 1.6.5.1 和带有 Rails 3.2.11 的 jruby 1.7.3。

4

1 回答 1

6

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

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

于 2013-06-07T19:13:44.580 回答