Module: Roda::RodaPlugins

Defined in:
lib/roda/plugins.rb,
lib/roda.rb,
lib/roda/request.rb,
lib/roda/response.rb,
lib/roda/plugins/h.rb,
lib/roda/plugins/r.rb,
lib/roda/plugins/csrf.rb,
lib/roda/plugins/halt.rb,
lib/roda/plugins/head.rb,
lib/roda/plugins/hsts.rb,
lib/roda/plugins/json.rb,
lib/roda/plugins/pass.rb,
lib/roda/plugins/path.rb,
lib/roda/plugins/break.rb,
lib/roda/plugins/erb_h.rb,
lib/roda/plugins/flash.rb,
lib/roda/plugins/hooks.rb,
lib/roda/plugins/assets.rb,
lib/roda/plugins/mailer.rb,
lib/roda/plugins/public.rb,
lib/roda/plugins/render.rb,
lib/roda/plugins/static.rb,
lib/roda/plugins/_base64.rb,
lib/roda/plugins/caching.rb,
lib/roda/plugins/chunked.rb,
lib/roda/plugins/cookies.rb,
lib/roda/plugins/link_to.rb,
lib/roda/plugins/delegate.rb,
lib/roda/plugins/partials.rb,
lib/roda/plugins/sessions.rb,
lib/roda/plugins/all_verbs.rb,
lib/roda/plugins/drop_body.rb,
lib/roda/plugins/heartbeat.rb,
lib/roda/plugins/multi_run.rb,
lib/roda/plugins/not_found.rb,
lib/roda/plugins/streaming.rb,
lib/roda/plugins/assume_ssl.rb,
lib/roda/plugins/empty_root.rb,
lib/roda/plugins/error_mail.rb,
lib/roda/plugins/hash_paths.rb,
lib/roda/plugins/hmac_paths.rb,
lib/roda/plugins/inject_erb.rb,
lib/roda/plugins/match_hook.rb,
lib/roda/plugins/middleware.rb,
lib/roda/plugins/multi_view.rb,
lib/roda/plugins/route_csrf.rb,
lib/roda/plugins/status_303.rb,
lib/roda/plugins/_after_hook.rb,
lib/roda/plugins/capture_erb.rb,
lib/roda/plugins/content_for.rb,
lib/roda/plugins/delay_build.rb,
lib/roda/plugins/direct_call.rb,
lib/roda/plugins/early_hints.rb,
lib/roda/plugins/error_email.rb,
lib/roda/plugins/hash_routes.rb,
lib/roda/plugins/json_parser.rb,
lib/roda/plugins/match_affix.rb,
lib/roda/plugins/multi_route.rb,
lib/roda/plugins/not_allowed.rb,
lib/roda/plugins/render_each.rb,
lib/roda/plugins/run_handler.rb,
lib/roda/plugins/shared_vars.rb,
lib/roda/plugins/_before_hook.rb,
lib/roda/plugins/cookie_flags.rb,
lib/roda/plugins/environments.rb,
lib/roda/plugins/hash_matcher.rb,
lib/roda/plugins/multi_public.rb,
lib/roda/plugins/named_routes.rb,
lib/roda/plugins/request_aref.rb,
lib/roda/plugins/symbol_views.rb,
lib/roda/plugins/type_routing.rb,
lib/roda/plugins/view_options.rb,
lib/roda/plugins/branch_locals.rb,
lib/roda/plugins/common_logger.rb,
lib/roda/plugins/error_handler.rb,
lib/roda/plugins/hash_branches.rb,
lib/roda/plugins/path_matchers.rb,
lib/roda/plugins/path_rewriter.rb,
lib/roda/plugins/relative_path.rb,
lib/roda/plugins/render_locals.rb,
lib/roda/plugins/symbol_status.rb,
lib/roda/plugins/unescape_path.rb,
lib/roda/plugins/class_matchers.rb,
lib/roda/plugins/default_status.rb,
lib/roda/plugins/exception_page.rb,
lib/roda/plugins/mail_processor.rb,
lib/roda/plugins/module_include.rb,
lib/roda/plugins/padrino_render.rb,
lib/roda/plugins/param_matchers.rb,
lib/roda/plugins/static_routing.rb,
lib/roda/plugins/status_handler.rb,
lib/roda/plugins/custom_matchers.rb,
lib/roda/plugins/default_headers.rb,
lib/roda/plugins/header_matchers.rb,
lib/roda/plugins/match_hook_args.rb,
lib/roda/plugins/named_templates.rb,
lib/roda/plugins/render_coverage.rb,
lib/roda/plugins/request_headers.rb,
lib/roda/plugins/sinatra_helpers.rb,
lib/roda/plugins/symbol_matchers.rb,
lib/roda/plugins/typecast_params.rb,
lib/roda/plugins/middleware_stack.rb,
lib/roda/plugins/params_capturing.rb,
lib/roda/plugins/response_request.rb,
lib/roda/plugins/route_block_args.rb,
lib/roda/plugins/run_append_slash.rb,
lib/roda/plugins/slash_path_empty.rb,
lib/roda/plugins/timestamp_public.rb,
lib/roda/plugins/assets_preloading.rb,
lib/roda/plugins/run_require_slash.rb,
lib/roda/plugins/strip_path_prefix.rb,
lib/roda/plugins/backtracking_array.rb,
lib/roda/plugins/host_authorization.rb,
lib/roda/plugins/indifferent_params.rb,
lib/roda/plugins/permissions_policy.rb,
lib/roda/plugins/Integer_matcher_max.rb,
lib/roda/plugins/_optimized_matching.rb,
lib/roda/plugins/class_level_routing.rb,
lib/roda/plugins/conditional_sessions.rb,
lib/roda/plugins/custom_block_results.rb,
lib/roda/plugins/delete_empty_headers.rb,
lib/roda/plugins/filter_common_logger.rb,
lib/roda/plugins/invalid_request_body.rb,
lib/roda/plugins/precompile_templates.rb,
lib/roda/plugins/autoload_named_routes.rb,
lib/roda/plugins/disallow_file_uploads.rb,
lib/roda/plugins/_symbol_class_matchers.rb,
lib/roda/plugins/autoload_hash_branches.rb,
lib/roda/plugins/redirect_http_to_https.rb,
lib/roda/plugins/_symbol_regexp_matchers.rb,
lib/roda/plugins/content_security_policy.rb,
lib/roda/plugins/hash_branch_view_subdir.rb,
lib/roda/plugins/multibyte_string_matcher.rb,
lib/roda/plugins/additional_render_engines.rb,
lib/roda/plugins/optimized_string_matchers.rb,
lib/roda/plugins/optimized_segment_matchers.rb,
lib/roda/plugins/recheck_precompiled_assets.rb,
lib/roda/plugins/additional_view_directories.rb,
lib/roda/plugins/placeholder_string_matchers.rb,
lib/roda/plugins/plain_hash_response_headers.rb,
lib/roda/plugins/typecast_params_sized_integers.rb

Overview

Module in which all Roda plugins should be stored. Also contains logic for registering and loading plugins.

Defined Under Namespace

Modules: AdditionalRenderEngines, AdditionalViewDirectories, AllVerbs, Assets, AssetsPreloading, AssumeSSL, AutoloadHashBranches, AutoloadNamedRoutes, BacktrackingArray, Base, Base64_, BeforeHook, BranchLocals, Break, Caching, CaptureERB, Chunked, ClassLevelRouting, ClassMatchers, CommonLogger, ConditionalSessions, ContentFor, ContentSecurityPolicy, CookieFlags, Cookies, Csrf, CustomBlockResults, CustomMatchers, DefaultHeaders, DefaultStatus, DelayBuild, Delegate, DeleteEmptyHeaders, DirectCall, DisallowFileUploads, DropBody, EarlyHints, EmptyRoot, Environments, ErbH, ErrorEmail, ErrorHandler, ErrorMail, ExceptionPage, FilterCommonLogger, Flash, H, Halt, HashBranchViewSubdir, HashBranches, HashMatcher, HashPaths, HashRoutes, Head, HeaderMatchers, Heartbeat, HmacPaths, Hooks, HostAuthorization, Hsts, IndifferentParams, InjectERB, IntegerMatcherMax, InvalidRequestBody, Json, JsonParser, LinkTo, MailProcessor, Mailer, MatchAffix, MatchHook, MatchHookArgs, Middleware, MiddlewareStack, ModuleInclude, MultiPublic, MultiRoute, MultiRun, MultiView, MultibyteStringMatcher, NamedRoutes, NamedTemplates, NotAllowed, NotFound, OptimizedMatching, OptimizedSegmentMatchers, OptimizedStringMatchers, PadrinoRender, ParamMatchers, ParamsCapturing, Partials, Pass, Path, PathMatchers, PathRewriter, PermissionsPolicy, PlaceholderStringMatchers, PlainHashResponseHeaders, PrecompileTemplates, Public, R, RecheckPrecompiledAssets, RedirectHttpToHttps, RelativePath, Render, RenderCoverage, RenderEach, RenderLocals, RequestAref, RequestHeaders, ResponseRequest, RouteBlockArgs, RouteCsrf, RunAppendSlash, RunHandler, RunRequireSlash, Sessions, SharedVars, SinatraHelpers, SlashPathEmpty, Static, StaticRouting, Status303, StatusHandler, Streaming, StripPathPrefix, SymbolClassMatchers_, SymbolMatchers, SymbolRegexpMatchers, SymbolStatus, SymbolViews, TimestampPublic, TypeRouting, TypecastParams, TypecastParamsSizedIntegers, UnescapePath, ViewOptions

Constant Summary collapse

OPTS =
{}.freeze
EMPTY_ARRAY =
[].freeze

Class Method Summary collapse

Class Method Details

.deprecate_constant(mod, name) ⇒ Object

Deprecate the constant with the given name in the given module, if the ruby version supports it.



45
46
47
48
49
50
51
# File 'lib/roda/plugins.rb', line 45

def self.deprecate_constant(mod, name)
  # :nocov:
  if RUBY_VERSION >= '2.3'
    mod.deprecate_constant(name)
  end
  # :nocov:
end

.load_plugin(name) ⇒ Object

If the registered plugin already exists, use it. Otherwise, require it and return it. This raises a LoadError if such a plugin doesn’t exist, or a RodaError if it exists but it does not register itself correctly.



26
27
28
29
30
31
32
33
# File 'lib/roda/plugins.rb', line 26

def self.load_plugin(name)
  h = @plugins
  unless plugin = h[name]
    require "roda/plugins/#{name}"
    raise RodaError, "Plugin #{name} did not register itself correctly in Roda::RodaPlugins" unless plugin = h[name]
  end
  plugin
end

.register_plugin(name, mod) ⇒ Object

Register the given plugin with Roda, so that it can be loaded using #plugin with a symbol. Should be used by plugin files. Example:

Roda::RodaPlugins.register_plugin(:plugin_name, PluginModule)


39
40
41
# File 'lib/roda/plugins.rb', line 39

def self.register_plugin(name, mod)
  @plugins[name] = mod
end