Module: Utopia::Project

Defined in:
lib/utopia/project.rb,
lib/utopia/project/base.rb,
lib/utopia/project/guide.rb,
lib/utopia/project/guides.rb,
lib/utopia/project/linkify.rb,
lib/utopia/project/sidebar.rb,
lib/utopia/project/version.rb,
lib/utopia/project/document.rb,
lib/utopia/project/renderer.rb,
lib/utopia/project/import_map.rb,
lib/utopia/project/inheritance.rb,
lib/utopia/project/releases_document.rb

Overview

Provides project documentation generation and rendering.

Defined Under Namespace

Classes: Base, Document, Guide, Guides, Inheritance, Linkify, ReleasesDocument, Renderer, Sidebar

Constant Summary collapse

SITE_ROOT =

The root directory of the web application files.

File.expand_path("../..", __dir__)
PAGES_ROOT =

The root directory for the utopia middleware.

File.expand_path("pages", SITE_ROOT)
PUBLIC_ROOT =

The root directory for static assets.

File.expand_path("public", SITE_ROOT)
VERSION =
"0.45.1"
IMPORT_MAP =
Utopia::ImportMap.load_manifest(
  File.expand_path("../../../public/_components", __dir__)
)

Class Method Summary collapse

Class Method Details

.call(builder, root = Dir.pwd, locales: nil) ⇒ Object

Appends a project application to the protocol HTTP middleware builder.



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/utopia/project.rb', line 39

def self.call(builder, root = Dir.pwd, locales: nil)
  if UTOPIA.production?
    # Handle exceptions in production with a error page and send an email notification:
    builder.use Utopia::Exceptions::Handler
    builder.use Utopia::Exceptions::Mailer
  end
  
  # We serve static files from the project root:
  builder.use Utopia::Static, root: root
  
  builder.use Utopia::Static, root: PUBLIC_ROOT
  
  builder.use Utopia::Redirection::Rewrite, {
    "/" => "/index"
  }
  builder.use Utopia::Redirection::DirectoryIndex
  
  builder.use Utopia::Redirection::Errors, {
    404 => "/errors/file-not-found"
  }
  
  if locales
    builder.use Utopia::Localization,
      default_locale: locales.first,
      locales: locales
  end
  
  builder.use Utopia::Controller, root: PAGES_ROOT
  
  cache_root = File.expand_path("_gallery", root)
  
  builder.use Utopia::Content, root: PAGES_ROOT, namespaces: {
    # 'gallery' => Utopia::Gallery::Tags.new
  }
  
end