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

时间:2013-06-07 16:56:39

标签: ruby-on-rails ruby caching ruby-on-rails-3.2 ruby-on-rails-2

我试图在10秒内过期密钥,不知怎的,但是没有使用rspec。在这个过程中,我注意到Rails.cache.write在Rails 2.3.11中返回false,而Rails.cache.write在Rails 3.2.11中返回true,这是一个问题吗?为什么价值不同?为什么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

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

1 个答案:

答案 0 :(得分:5)

Rails.cache.write方法有时被称为命令方法,它的副作用被调用,而查询方法被调用返回值(更多信息请查看command-query separation)。

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