Module: Utopia

Defined in:
lib/utopia/version.rb,
lib/utopia.rb,
lib/utopia/http.rb,
lib/utopia/path.rb,
lib/utopia/setup.rb,
lib/utopia/shell.rb,
lib/utopia/static.rb,
lib/utopia/content.rb,
lib/utopia/request.rb,
lib/utopia/session.rb,
lib/utopia/response.rb,
lib/utopia/controller.rb,
lib/utopia/exceptions.rb,
lib/utopia/import_map.rb,
lib/utopia/middleware.rb,
lib/utopia/application.rb,
lib/utopia/content/link.rb,
lib/utopia/content/node.rb,
lib/utopia/content/tags.rb,
lib/utopia/localization.rb,
lib/utopia/path/matcher.rb,
lib/utopia/content/links.rb,
lib/utopia/content/markup.rb,
lib/utopia/content/builder.rb,
lib/utopia/controller/base.rb,
lib/utopia/content/document.rb,
lib/utopia/content/response.rb,
lib/utopia/content/namespace.rb,
lib/utopia/controller/result.rb,
lib/utopia/exceptions/mailer.rb,
lib/utopia/redirection/moved.rb,
lib/utopia/session/lazy_hash.rb,
lib/utopia/static/local_file.rb,
lib/utopia/static/middleware.rb,
lib/utopia/static/mime_types.rb,
lib/utopia/content/middleware.rb,
lib/utopia/controller/actions.rb,
lib/utopia/controller/respond.rb,
lib/utopia/controller/rewrite.rb,
lib/utopia/exceptions/handler.rb,
lib/utopia/redirection/errors.rb,
lib/utopia/session/middleware.rb,
lib/utopia/redirection/rewrite.rb,
lib/utopia/controller/responder.rb,
lib/utopia/controller/variables.rb,
lib/utopia/localization/locales.rb,
lib/utopia/controller/middleware.rb,
lib/utopia/localization/resolver.rb,
lib/utopia/session/serialization.rb,
lib/utopia/extensions/array_split.rb,
lib/utopia/localization/middleware.rb,
lib/utopia/localization/preferences.rb,
lib/utopia/extensions/date_comparisons.rb,
lib/utopia/redirection/client_redirect.rb,
lib/utopia/redirection/directory_index.rb,
lib/utopia/redirection/request_failure.rb

Overview

Released under the MIT License. Copyright, 2026, by Samuel Williams.

Defined Under Namespace

Modules: Content, Controller, Exceptions, Extensions, HTTP, Localization, Redirection, Response, Session, Static Classes: Application, ImportMap, Path, Request, Setup, Shell

Constant Summary collapse

VERSION =
"3.0.0"
PAGES_PATH =

The default pages path for Content middleware.

"pages".freeze

Class Method Summary collapse

Class Method Details

.default_path(*arguments) ⇒ Path

The same as default_root but returns an instance of Path.

Returns:

  • (Path)

    The path as requested.



24
25
26
# File 'lib/utopia/middleware.rb', line 24

def self.default_path(*arguments)
	Path[default_root(*arguments)]
end

.default_root(subdirectory = PAGES_PATH, pwd = Dir.pwd) ⇒ Object

The default root directory for middleware to operate within, e.g. the web-site directory. Convention over configuration.

Parameters:

  • subdirectory (String) (defaults to: PAGES_PATH)

    Appended to the default root to make a more specific path.

  • pwd (String) (defaults to: Dir.pwd)

    The working directory for the current site.



18
19
20
# File 'lib/utopia/middleware.rb', line 18

def self.default_root(subdirectory = PAGES_PATH, pwd = Dir.pwd)
	File.expand_path(subdirectory, pwd)
end

.Path(path) ⇒ Object

Coerce a value into a Path.



539
540
541
# File 'lib/utopia/path.rb', line 539

def self.Path(path)
	Path.create(path)
end

.setup(root = nil, **options) ⇒ Object

You can call this method exactly once per process.



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/utopia/setup.rb', line 138

def self.setup(root = nil, **options)
	if @setup
		raise RuntimeError, "Utopia already setup!"
	end
	
	# We extract the root from the caller of this method:
	if root.nil?
		config_root = File.dirname(caller[0])
		root = File.dirname(config_root)
	end
	
	@setup = Setup.new(root, **options)
	
	@setup.apply!
	
	return @setup
end