Class: Para::SeoTools::Skeleton::Site

Inherits:
Object
  • Object
show all
Defined in:
lib/para/seo_tools/skeleton/site.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Site

Returns a new instance of Site.



8
9
10
11
# File 'lib/para/seo_tools/skeleton/site.rb', line 8

def initialize(options = {})
  @enable_logging = options.delete(:enable_logging)
  @default_page_options = options
end

Instance Attribute Details

#default_page_optionsObject (readonly)

Returns the value of attribute default_page_options.



6
7
8
# File 'lib/para/seo_tools/skeleton/site.rb', line 6

def default_page_options
  @default_page_options
end

#enable_loggingObject (readonly)

Returns the value of attribute enable_logging.



6
7
8
# File 'lib/para/seo_tools/skeleton/site.rb', line 6

def enable_logging
  @enable_logging
end

Instance Method Details

#log(message) ⇒ Object

Log messages when you’re not in rails



52
53
54
# File 'lib/para/seo_tools/skeleton/site.rb', line 52

def log(message)
  Rails.logger.info(message) if enable_logging || !$0.end_with?('rails')
end

#max_pages_before_saveObject



56
57
58
59
60
61
62
# File 'lib/para/seo_tools/skeleton/site.rb', line 56

def max_pages_before_save
  @max_pages_before_save ||= if (param = ENV['SEO_TOOLS_MAX_PAGES_BEFORE_SAVE']).present?
    para.to_i
  else
    500
  end
end

#page(name, options = {}, &block) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/para/seo_tools/skeleton/site.rb', line 13

def page(name, options = {} , &block)
  options.reverse_merge!(default_page_options)

  Skeleton::PageBuilder.new(name, options).tap do |page|
    pages << page
    save if pages.length == max_pages_before_save
  end
end

#pagesObject



29
30
31
# File 'lib/para/seo_tools/skeleton/site.rb', line 29

def pages
  @pages ||= []
end

#saveObject



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/para/seo_tools/skeleton/site.rb', line 33

def save
  log "   * Saving #{ pages.length } generated pages ..."

  ActiveRecord::Base.transaction do
    pages.each do |page|
      page.model.save!
      saved_pages_ids << page.model.id
    end
  end

  pages.clear
end

#saved_pages_idsObject



46
47
48
# File 'lib/para/seo_tools/skeleton/site.rb', line 46

def saved_pages_ids
  @saved_pages_ids ||= []
end

#with_params(params = {}, &block) ⇒ Object



22
23
24
25
26
27
# File 'lib/para/seo_tools/skeleton/site.rb', line 22

def with_params(params = {}, &block)
  previous_default_page_options = default_page_options
  @default_page_options = default_page_options.dup.merge(params)
  block.call
  @default_page_options = previous_default_page_options
end