Rails.cache.fetch * .to_s做了什么?

时间:2013-02-26 16:03:55

标签: ruby-on-rails

if Rails.cache
  Rails.cache.fetch(20.to_s) # ec2-50-17-225-XX.compute-1.amazonaws.com:11212
  Rails.cache.fetch(0.to_s)  # ec2-174-129-33-XX.compute-1.amazonaws.com:11212
  Rails.cache.fetch(10.to_s) # ec2-174-129-16-XX.compute-1.amazonaws.com:11212
  Rails.cache.fetch(30.to_s) # ec2-54-242-2-XX.compute-1.amazonaws.com:11212
end

我不完全确定这段代码的作用。它是否设置缓存变量?是以某种方式阅读?

1 个答案:

答案 0 :(得分:2)

to_s只是将数字(20,0等)转换为字符串(“20”,“0”等)。所以它与此相同:

if Rails.cache
  Rails.cache.fetch("20") # ec2-50-17-225-XX.compute-1.amazonaws.com:11212
  Rails.cache.fetch("0")  # ec2-174-129-33-XX.compute-1.amazonaws.com:11212
  Rails.cache.fetch("10") # ec2-174-129-16-XX.compute-1.amazonaws.com:11212
  Rails.cache.fetch("30") # ec2-54-242-2-XX.compute-1.amazonaws.com:11212
end

所以在某个地方,这些amazonaws URL使用键“20”,“0”等存储在缓存中,然后上面的代码从缓存中检索这些值。

(根据所使用的缓存存储,例如使用ActiveSupport :: Cache :: FileStore或Dalli,您可以使用整数值而不首先转换为字符串,因此to_s可能是不必要的)。