我试图在10秒内过期密钥,不知怎的,但是没有使用rspec。在这个过程中,我注意到Rails.cache.write
在Rails 2.3.11中返回false
,而Rails.cache.write
在Rails 3.2.11中返回true
,这是一个问题吗?为什么价值不同?为什么Rails 2.3.11返回false
和Rails 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
我使用带有Rails 2.3.11的jruby 1.6.5.1和带有Rails 3.2.11的jruby 1.7.3。
答案 0 :(得分:5)
Rails.cache.write
方法有时被称为命令方法,它的副作用被调用,而查询方法被调用返回值(更多信息请查看command-query separation)。
由于the Rails docs不保证返回值,因此最好不要依赖它,因为它可能(并且显然已经)在没有警告的情况下进行更改。