Class: Adminsite::Page

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/adminsite/page.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.cacheableObject



16
17
18
# File 'app/models/adminsite/page.rb', line 16

def cacheable
  where(cacheable: true)
end

.cleanup_all_cachedObject



9
10
11
12
13
14
# File 'app/models/adminsite/page.rb', line 9

def cleanup_all_cached
  Adminsite::Page.all.each do |p|
    p.cleanup_cached
  end
  logger.info("Page cache has been wiped out: deleted all cached pages.")
end

.requires_loginObject



20
21
22
# File 'app/models/adminsite/page.rb', line 20

def 
  where(requires_login: true)
end

Instance Method Details

#cache_dirObject



26
27
28
# File 'app/models/adminsite/page.rb', line 26

def cache_dir
  @cache_dir ||= Adminsite::ContentsController.page_cache_directory # Adminsite::Engine.config.action_controller.page_cache_directory
end

#cleanup_cachedObject



30
31
32
33
34
35
36
37
# File 'app/models/adminsite/page.rb', line 30

def cleanup_cached
  return if self.url.blank?
  logger.info("Removing cached page for: #{self.url}")
  cache_file_path = "#{cache_dir}/#{self.url}"
  if !remove_cache_file(cache_file_path)
    remove_cache_file("#{cache_file_path}.html")
  end
end

#content_for_template(liquid_params) ⇒ Object



55
56
57
58
# File 'app/models/adminsite/page.rb', line 55

def content_for_template(liquid_params)
  liquid_template = Liquid::Template.parse(body)
  liquid_template.render(liquid_params.stringify_keys)
end

#layout_args(args) ⇒ Object



51
52
53
# File 'app/models/adminsite/page.rb', line 51

def layout_args(args)
  args.stringify_keys.merge(:content_for_template => content_for_template(args))
end

#remove_cache_file(file_path) ⇒ Object



39
40
41
42
43
44
45
# File 'app/models/adminsite/page.rb', line 39

def remove_cache_file(file_path)
  if File.exist?(file_path)
    logger.info("Removing cached page at: #{file_path}")
    FileUtils.rm(file_path)
    true
  end
end

#render(args) ⇒ Object



47
48
49
# File 'app/models/adminsite/page.rb', line 47

def render(args)
  page_layout.render(layout_args(args))
end