Class: Perron::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/perron/configuration.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/perron/configuration.rb', line 13

def initialize
  @config = ActiveSupport::OrderedOptions.new

  @config.output = "output"

  @config.output_server_strict = true

  @config.mode = :standalone

  @config.live_reload = false
  @config.live_reload_watch_paths = %w[app/content app/views app/assets]
  @config.live_reload_skip_paths = %w[app/assets/builds]

  @config.exclude_from_public = %w[assets storage]
  @config.excluded_assets = %w[action_cable actioncable actiontext activestorage rails-ujs trix turbo]
  @config.allowed_extensions = %w[erb md]

  @config.view_unpublished = Rails.env.development?

  @config.default_url_options = {
    host: ENV.fetch("PERRON_HOST", "localhost:3000"),
    protocol: ENV.fetch("PERRON_PROTOCOL", "http"),
    trailing_slash: ENV.fetch("PERRON_TRAILING_SLASH", "true") == "true"
  }

  @config.markdown_options = {}

  @config.search_scope = []

  @config.cache_data_sources = false

  @config.sitemap = ActiveSupport::OrderedOptions.new
  @config.sitemap.enabled = false
  @config.sitemap.priority = 0.5
  @config.sitemap.change_frequency = :monthly

  @config.site_name = nil
  @config.site_description = nil

  @config. = ActiveSupport::OrderedOptions.new
  @config..title_separator = ""
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/perron/configuration.rb', line 77

def method_missing(method_name, ...)
  if @config.respond_to?(method_name)
    @config.send(method_name, ...)
  else
    super
  end
end

Instance Attribute Details

#additional_routesObject



64
65
66
# File 'lib/perron/configuration.rb', line 64

def additional_routes
  @additional_routes || (mode.integrated? ? [] : %w[root_path])
end

Instance Method Details

#inputObject



56
# File 'lib/perron/configuration.rb', line 56

def input = Rails.root.join("app", "content")

#modeObject



62
# File 'lib/perron/configuration.rb', line 62

def mode = @config.mode.to_s.inquiry

#outputObject



58
59
60
# File 'lib/perron/configuration.rb', line 58

def output
  mode.integrated? ? "public" : @config.output
end

#respond_to_missing?(method_name) ⇒ Boolean

Returns:

  • (Boolean)


85
86
87
# File 'lib/perron/configuration.rb', line 85

def respond_to_missing?(method_name)
  @config.respond_to?(method_name) || super
end

#urlObject



70
71
72
73
74
75
# File 'lib/perron/configuration.rb', line 70

def url
  options = Perron.configuration.default_url_options
  path = options[:trailing_slash] ? "/" : ""

  URI.join("#{options[:protocol]}://#{options[:host]}", path).to_s
end