class ActiveSupport::Cache::DalliStore

Public Instance Methods

"__exist?__"(name, options = {})
Alias for: exist?
__delete__(name, options = {})
Alias for: delete
__read__(name, options = {})

monkey patch

Alias for: read
__write__(name, value, options = {})
Alias for: write
delete(name, options = {}) click to toggle source
# File lib/millas.rb, line 60
def delete(name, options = {})
  dispersed = options.delete(:dispersed)
  if dispersing?(dispersed)
    dispersions.map do |n|
      __delete__(decorated_name(name, n), options)
    end.sample
  else
    __delete__(name, options)
  end
end
Also aliased as: __delete__
exist?(name, options = {}) click to toggle source
# File lib/millas.rb, line 54
def exist?(name, options = {})
  dispersed = options.delete(:dispersed)
  name = decorated_name(name) if dispersing?(dispersed)
  send("__exist?__", name, options)
end
Also aliased as: "__exist?__"
read(name, options = {}) click to toggle source
# File lib/millas.rb, line 35
def read(name, options = {})
  dispersed = options.delete(:dispersed)
  name = decorated_name(name) if dispersing?(dispersed)
  __read__(name, options)
end
Also aliased as: __read__
write(name, value, options = {}) click to toggle source
# File lib/millas.rb, line 41
def write(name, value, options = {})
  dispersed = options.delete(:dispersed)
  if dispersing?(dispersed)
    expires_in = options[:expires_in]
    dispersions.map do |n|
      options.merge!({ expires_in: advanced_expires_in(expires_in, n) }) if expires_in
      __write__(decorated_name(name, n), value, options)
    end.sample
  else
    __write__(name, value, options)
  end
end
Also aliased as: __write__

Private Instance Methods

advanced_expires_in(expires_in, n) click to toggle source
# File lib/millas.rb, line 96
def advanced_expires_in(expires_in, n)
  expires_in + second_intervals*(n-1)
end
decorated_name(name, num = nil) click to toggle source
# File lib/millas.rb, line 92
def decorated_name(name, num = nil)
  "#{name}-#{num || magic_number}"
end
dispersing?(dispersed) click to toggle source
# File lib/millas.rb, line 82
def dispersing?(dispersed)
  b = Millas.config.perform_dispersing
  b = !!dispersed unless dispersed.nil?
  b
end
dispersion_number() click to toggle source
# File lib/millas.rb, line 72
def dispersion_number
  number = Millas.config.dispersion_number.try(:to_i)
  number = 1 if !number || number <= 0
  number
end
dispersions() click to toggle source
# File lib/millas.rb, line 78
def dispersions
  [*1..dispersion_number]
end
magic_number() click to toggle source
# File lib/millas.rb, line 100
def magic_number
  number = dispersion_number
  # quadratic function
  result = number**rand
  # feel good factor (max = 0.35)
  alpha = number/40.to_f
  max_alpha = 0.35
  result += if alpha < max_alpha
    alpha
  else
    max_alpha
  end
  # return opposite number of the maximum value
  number - result.floor + 1
end
second_intervals() click to toggle source
# File lib/millas.rb, line 88
def second_intervals
  (Millas.config.second_intervals || 0).seconds
end