module Roda::RodaPlugins::Public

  1. lib/roda/plugins/public.rb

The public plugin adds a r.public routing method to serve static files from a directory.

The public plugin recognizes the application's :root option, and defaults to using the public subfolder of the application's :root option. If the application's :root option is not set, it defaults to the public folder in the working directory. Additionally, if a relative path is provided as the :root option to the plugin, it will be considered relative to the application's :root option.


opts[:root] = '/path/to/app'
plugin :public
plugin :public, root: 'static'


Public Class

  1. configure


SPLIT = Regexp.union(*[File::SEPARATOR, File::ALT_SEPARATOR].compact)  

Public Class methods

configure (app, opts={})

Use options given to setup a Rack::File instance for serving files. Options:


The default mime type to use if the mime type is not recognized.


Whether to serve already gzipped files with a .gz extension for clients supporting gzipped transfer encoding.


A hash of headers to use for statically served files


Use this option for the root of the public directory (default: “public”)

[show source]
# File lib/roda/plugins/public.rb, line 32
def self.configure(app, opts={})
  root =  app.expand_path(opts[:root]||"public")
  app.opts[:public_server] =, opts[:headers]||{}, opts[:default_mime] || 'text/plain')
  app.opts[:public_gzip] = opts[:gzip]