Skip to content

Instantly share code, notes, and snippets.

# irb
SOME_CONSTANT = "SOME_CONSTANT%{value}"
puts SOME_CONSTANT % {value: "abcd.freshservice.com"}
> "SOME_CONSTANT:abcd.freshservice.com"
# irb
SOME_CONSTANT = "SOME_CONSTANT"
puts "#{SOME_CONSTANT}#{'abcd.freshservice.com'}"
> "SOME_CONSTANT:abcd.freshservice.com"
module Memcache
KEY_HASH = YAML.load_file(File.join(Rails.root, 'config', 'memcached_keys.yml')).symbolize_keys!
def self.key(key, value)
“#{KEY_HASH[key]}:#{value}”
end
def self.multi_key(key, value1, value2)
“#{KEY_HASH[key]}:#{value1}:#{value2}”
end
@ritikesh
ritikesh / memoize_until_1.rb
Last active May 18, 2020 15:48
blog gists
gem install memoize_until
> irb
irb:> require 'memoize_until'
irb:> MemoizeUntil.hour(:default) {
irb:> $redis.get("APP_CONFIGS")
irb:> }
irb:> # memoizes(until the end of the day) and returns the result of #PerformSomeComplexOperation
gem 'memoize_until'
class Middleware::CustomLogging
def initialize(app)
@app = app
end
def call(env)
if debug_logging?
Rails.logger.level = Logger::DEBUG
end
@ritikesh
ritikesh / memoize_until_4.rb
Last active May 24, 2020 14:25
blog gists
irb(main):024:0> MemoizeUntil.const_get(:TYPE_FACTORY)[:day]
=> #<MemoizeUntil::Store:0x00007f8a61415be8 @_store={:flags_from_redis=>{18=>1}, :default=>{}}, @_kind=:day>
irb(main):025:0> MemoizeUntil.day(:default) { nil }
=> nil
irb(main):026:0> MemoizeUntil.const_get(:TYPE_FACTORY)[:day]
=> #<MemoizeUntil::Store:0x00007f8a61415be8 @_store={:flags_from_redis=>{18=>1}, :default=>{18=>#<MemoizeUntil::NullObject:0x00007f8a640226c8>}}, @_kind=:day>
Benchmarks User System Total Real
Rehearsal
Existing 2.600000 0.240000 2.840000 (2.833792)
New 1.190000 0.010000 1.200000 (1.206466)
Actual
Existing 2.140000 0.050000 2.190000 (2.194628)
New 0.830000 0.010000 0.840000 (0.835711)
class Tenant < ActiveRecord::Base
...
# associations
has_one :tenant_configs
delegate :locale, :timezone, :date_format, ..., to: :tenant_configs
...
end
class Tenant < ActiveRecord::Base
...
# associations
has_one :tenant_configs
delegate :locale, :timezone, :date_format, ..., to: :tenant_configs_from_cache
def tenant_configs_from_cache
Rails.cache.fetch(“tenant_configs:#{self.id}:#{self.tenant_configs.updated_at.to_i}”) { self.tenant_configs }
end
...