Module: Utopia::Project

Defined in:
lib/utopia/project.rb,
lib/utopia/project/base.rb,
lib/utopia/project/guide.rb,
lib/utopia/project/linkify.rb,
lib/utopia/project/version.rb,
lib/utopia/project/document.rb,
lib/utopia/project/renderer.rb

Defined Under Namespace

Classes: Base, Document, Guide, Linkify, Renderer

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.23.0"

Class Method Summary collapse

Class Method Details

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

Appends a project application to the rack builder.



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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/utopia/project.rb', line 30

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
	else
		# We want to propate exceptions up when running tests:
		builder.use Rack::ShowExceptions unless UTOPIA.testing?
	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
	}
	
	builder.run lambda { |env| [404, {}, []] }
end