Module: Redisize::ClassMethods
- Defined in:
- lib/redisize.rb
Instance Method Summary collapse
- #polymorphic_base_name ⇒ Object
- #primary_key_with(key_name_in = nil) ⇒ Object
-
#redisize_array(key_name_in = nil, &block) ⇒ Object
self -> model class.
- #redisize_by_key(key, &block) ⇒ Object
-
#redisize_hash(key_name_in = nil, &block) ⇒ Object
self -> model class.
-
#redisize_model(value, options = {}, &block) ⇒ Object
self -> model class.
-
#redisize_sql(&block) ⇒ Object
self -> model class.
Instance Method Details
#polymorphic_base_name ⇒ Object
309 310 311 312 313 314 315 316 317 |
# File 'lib/redisize.rb', line 309 def polymorphic_base_name base_name = base_class.to_s if base_name == polymorphic_name polymorphic_name else (base_class.to_s.split("::")[0...-1] + [polymorphic_name]).join("::") end end |
#primary_key_with(key_name_in = nil) ⇒ Object
319 320 321 322 323 324 325 326 |
# File 'lib/redisize.rb', line 319 def primary_key_with key_name_in = nil key_name_in || self.respond_to?(:primary_key) && self.primary_key || case self when ActiveRecord self.map.first&.class&.primary_key when ActiveRecord::Scoping, ActiveRecord::Reflection, ActiveRecord::Associations self.values.map.first&.class&.primary_key end end |
#redisize_array(key_name_in = nil, &block) ⇒ Object
self -> model class
347 348 349 350 351 352 353 |
# File 'lib/redisize.rb', line 347 def redisize_array key_name_in = nil, &block key_name = primary_key_with(key_name_in) key = ["by_key", *self.map { |x| key_name ? x.send(key_name).to_s : x.to_s } ] redisize_by_key(key, &block) end |
#redisize_by_key(key, &block) ⇒ Object
355 356 357 358 359 360 361 362 363 364 |
# File 'lib/redisize.rb', line 355 def redisize_by_key key, &block # binding.pry redisize_cache_fetch(key, expires_in: 1.day) do value = block.call Redisize.enqueue(:redisize_array_metas, key, value) value end end |
#redisize_hash(key_name_in = nil, &block) ⇒ Object
self -> model class
336 337 338 339 340 341 342 343 344 |
# File 'lib/redisize.rb', line 336 def redisize_hash key_name_in = nil, &block key_name = primary_key_with(key_name_in) key = ["by_key", *self.values.map do |x| key_name && x.respond_to?(key_name) ? x.send(key_name).to_s : x.to_s end ] redisize_by_key(key, &block) end |
#redisize_model(value, options = {}, &block) ⇒ Object
self -> model class
367 368 369 370 371 372 373 374 375 376 377 378 379 380 |
# File 'lib/redisize.rb', line 367 def redisize_model value, = {}, &block primary_key = .fetch(:by_key, self.primary_key).to_s key = ["instance", name, primary_key, value] = ["meta", self.polymorphic_base_name, primary_key, value] # binding.pry redisize_cache_fetch(key, expires_in: 1.week) do if result = block.call Redisize.enqueue(:redisize_model_metas, , self.name, result.as_json, key) end result end end |
#redisize_sql(&block) ⇒ Object
self -> model class
329 330 331 332 333 |
# File 'lib/redisize.rb', line 329 def redisize_sql &block key = ["sql", self.name, self.primary_key, self.all.to_sql] redisize_by_key(key, &block) end |