now the caching initialized with engine

Conflicts:
	Gemfile
This commit is contained in:
Harry Bomrah 2015-03-25 20:56:50 +08:00
parent 3262359911
commit 8b2281ca17
6 changed files with 42 additions and 6 deletions

View File

@ -84,7 +84,7 @@ end
#ask #ask
gem 'gotcha' gem 'gotcha'
#caching #caching observers
gem 'mongoid-observers' gem 'mongoid-observers'
#desktop #desktop

View File

@ -15,6 +15,7 @@ class ModuleApp
field :desktop_enabled, type: Boolean, default: false field :desktop_enabled, type: Boolean, default: false
field :widget_settings field :widget_settings
field :store_permission_granted, type: Boolean, default: false field :store_permission_granted, type: Boolean, default: false
field :cache_models, type: Array, default: []
has_many :categories, dependent: :destroy, :autosave => true has_many :categories, dependent: :destroy, :autosave => true
has_and_belongs_to_many :tags, dependent: :destroy, :autosave => true has_and_belongs_to_many :tags, dependent: :destroy, :autosave => true
@ -34,6 +35,7 @@ class ModuleApp
self[:widget_methods] = reg.get_widget_methods self[:widget_methods] = reg.get_widget_methods
self[:widget_settings] = reg.get_widget_settings self[:widget_settings] = reg.get_widget_settings
self[:desktop_enabled] = reg.is_desktop_enabled self[:desktop_enabled] = reg.is_desktop_enabled
self[:cache_models] = reg.get_models_to_cache
end end
def sub_managers def sub_managers

View File

@ -1,6 +1,6 @@
class OrbitObserver < Mongoid::Observer class OrbitObserver < Mongoid::Observer
# observe OrbitApp.get_models models_to_cache = OrbitApp.get_models_for_caching
observe :tag, :category observe models_to_cache.keys
def after_save(document) def after_save(document)
clear_cache(document) clear_cache(document)
@ -11,7 +11,7 @@ class OrbitObserver < Mongoid::Observer
end end
def clear_cache(document) def clear_cache(document)
# model_module_hash = OrbitApp.get_model_module_hash model_module_hash = OrbitApp.get_model_hash_for_caching
case document.class.to_s case document.class.to_s
when 'Tag' when 'Tag'
document.module_app.each do |module_app| document.module_app.each do |module_app|
@ -20,7 +20,7 @@ class OrbitObserver < Mongoid::Observer
when 'Category' when 'Category'
Rails.cache.delete_matched( /#{ document.module_app.key }/ ) Rails.cache.delete_matched( /#{ document.module_app.key }/ )
else else
# Rails.cache.delete_matched( /#{model_module_hash[document.class.to_s]}/ ) Rails.cache.delete_matched( /#{model_module_hash[document.name.underscore.to_sym]}/ )
end end
end end
end end

View File

@ -0,0 +1,7 @@
GEM
specs:
PLATFORMS
ruby
DEPENDENCIES

View File

@ -40,7 +40,7 @@ module OrbitApp
end end
class RegisteredModule class RegisteredModule
attr_reader :name,:key,:base_path, :module_label,:widget_methods,:authorizable_models,:is_authorizable, :data_count, :widget_settings, :icon_class_no_sidebar,:desktop_enabled attr_reader :name,:key,:base_path, :module_label,:widget_methods,:authorizable_models,:is_authorizable, :data_count, :widget_settings, :icon_class_no_sidebar,:desktop_enabled, :models_to_cache
def initialize(name,&block) def initialize(name,&block)
@name = name @name = name
@ -48,6 +48,7 @@ module OrbitApp
@side_bar = nil @side_bar = nil
@module_label = @name @module_label = @name
@widget_methods = [] @widget_methods = []
@models_to_cache = []
@widget_settings = {} @widget_settings = {}
@is_taggable = false @is_taggable = false
@authorizable_models = [] @authorizable_models = []
@ -93,6 +94,14 @@ module OrbitApp
@widget_settings = settings.first @widget_settings = settings.first
end end
def models_to_cache(models)
@models_to_cache = models
end
def get_models_to_cache
@models_to_cache
end
def get_widget_settings def get_widget_settings
@widget_settings @widget_settings
end end

View File

@ -21,6 +21,24 @@ module OrbitApp
end end
end end
def get_models_for_caching
@models_for_caching = {}
ModuleApp.all.each do |ma|
# models.concat(ma.cache_models)
ma.cache_models.each do |cm|
@models_for_caching[cm] = ma.key
end
end
@models_for_caching[:tag] = "Tag"
@models_for_caching[:category] = "Category"
puts @models_for_caching.to_s
return @models_for_caching
end
def get_model_hash_for_caching
@models_for_caching
end
def check_module_permissions def check_module_permissions
store_token = Site.first.store_token rescue nil store_token = Site.first.store_token rescue nil
module_apps = ModuleApp.all module_apps = ModuleApp.all