Module in which all Roda plugins should be stored. Also contains logic for registering and loading plugins.
Methods
Public Class
Classes and Modules
- Roda::RodaPlugins::AddScriptName_
- Roda::RodaPlugins::AdditionalRenderEngines
- Roda::RodaPlugins::AdditionalViewDirectories
- Roda::RodaPlugins::AllVerbs
- Roda::RodaPlugins::Assets
- Roda::RodaPlugins::AssetsPreloading
- Roda::RodaPlugins::AssumeSSL
- Roda::RodaPlugins::AutoloadHashBranches
- Roda::RodaPlugins::AutoloadNamedRoutes
- Roda::RodaPlugins::BacktrackingArray
- Roda::RodaPlugins::Base
- Roda::RodaPlugins::Base64_
- Roda::RodaPlugins::BearerToken
- Roda::RodaPlugins::BeforeHook
- Roda::RodaPlugins::BranchLocals
- Roda::RodaPlugins::Break
- Roda::RodaPlugins::Caching
- Roda::RodaPlugins::CaptureERB
- Roda::RodaPlugins::Chunked
- Roda::RodaPlugins::ClassLevelRouting
- Roda::RodaPlugins::ClassMatchers
- Roda::RodaPlugins::CommonLogger
- Roda::RodaPlugins::ConditionalSessions
- Roda::RodaPlugins::ContentFor
- Roda::RodaPlugins::ContentSecurityPolicy
- Roda::RodaPlugins::CookieFlags
- Roda::RodaPlugins::Cookies
- Roda::RodaPlugins::Csrf
- Roda::RodaPlugins::CustomBlockResults
- Roda::RodaPlugins::CustomMatchers
- Roda::RodaPlugins::DefaultHeaders
- Roda::RodaPlugins::DefaultStatus
- Roda::RodaPlugins::DelayBuild
- Roda::RodaPlugins::Delegate
- Roda::RodaPlugins::DeleteEmptyHeaders
- Roda::RodaPlugins::DirectCall
- Roda::RodaPlugins::DisallowFileUploads
- Roda::RodaPlugins::DropBody
- Roda::RodaPlugins::EachPart
- Roda::RodaPlugins::EarlyHints
- Roda::RodaPlugins::EmptyRoot
- Roda::RodaPlugins::Environments
- Roda::RodaPlugins::ErbH
- Roda::RodaPlugins::ErrorEmail
- Roda::RodaPlugins::ErrorHandler
- Roda::RodaPlugins::ErrorMail
- Roda::RodaPlugins::ExceptionPage
- Roda::RodaPlugins::FilterCommonLogger
- Roda::RodaPlugins::Flash
- Roda::RodaPlugins::FreezeRequestResponse
- Roda::RodaPlugins::H
- Roda::RodaPlugins::Halt
- Roda::RodaPlugins::HashBranchViewSubdir
- Roda::RodaPlugins::HashBranches
- Roda::RodaPlugins::HashMatcher
- Roda::RodaPlugins::HashPaths
- Roda::RodaPlugins::HashPublic
- Roda::RodaPlugins::HashPublicCache
- Roda::RodaPlugins::HashRoutes
- Roda::RodaPlugins::Head
- Roda::RodaPlugins::HeaderMatchers
- Roda::RodaPlugins::Heartbeat
- Roda::RodaPlugins::HmacPaths
- Roda::RodaPlugins::Hooks
- Roda::RodaPlugins::HostAuthorization
- Roda::RodaPlugins::HostRouting
- Roda::RodaPlugins::Hsts
- Roda::RodaPlugins::IPFromHeader
- Roda::RodaPlugins::IndifferentParams
- Roda::RodaPlugins::InjectERB
- Roda::RodaPlugins::IntegerMatcherMax
- Roda::RodaPlugins::InvalidRequestBody
- Roda::RodaPlugins::JSON_
- Roda::RodaPlugins::Json
- Roda::RodaPlugins::JsonParser
- Roda::RodaPlugins::LinkTo
- Roda::RodaPlugins::MailProcessor
- Roda::RodaPlugins::Mailer
- Roda::RodaPlugins::MapMatcher
- Roda::RodaPlugins::MatchAffix
- Roda::RodaPlugins::MatchHook
- Roda::RodaPlugins::MatchHookArgs
- Roda::RodaPlugins::Middleware
- Roda::RodaPlugins::MiddlewareStack
- Roda::RodaPlugins::ModuleInclude
- Roda::RodaPlugins::MultiPublic
- Roda::RodaPlugins::MultiRoute
- Roda::RodaPlugins::MultiRun
- Roda::RodaPlugins::MultiView
- Roda::RodaPlugins::MultibyteStringMatcher
- Roda::RodaPlugins::NamedRoutes
- Roda::RodaPlugins::NamedTemplates
- Roda::RodaPlugins::NotAllowed
- Roda::RodaPlugins::NotFound
- Roda::RodaPlugins::OptimizedMatching
- Roda::RodaPlugins::OptimizedSegmentMatchers
- Roda::RodaPlugins::OptimizedStringMatchers
- Roda::RodaPlugins::PadrinoRender
- Roda::RodaPlugins::ParamMatchers
- Roda::RodaPlugins::ParamsCapturing
- Roda::RodaPlugins::ParamsCapturingRestore
- Roda::RodaPlugins::Part
- Roda::RodaPlugins::Partials
- Roda::RodaPlugins::Pass
- Roda::RodaPlugins::Path
- Roda::RodaPlugins::PathMatchers
- Roda::RodaPlugins::PathRewriter
- Roda::RodaPlugins::PermissionsPolicy
- Roda::RodaPlugins::PlaceholderStringMatchers
- Roda::RodaPlugins::PlainHashResponseHeaders
- Roda::RodaPlugins::PrecompileTemplates
- Roda::RodaPlugins::Public
- Roda::RodaPlugins::R
- Roda::RodaPlugins::RecheckPrecompiledAssets
- Roda::RodaPlugins::RedirectHttpToHttps
- Roda::RodaPlugins::RedirectPath
- Roda::RodaPlugins::RelativePath
- Roda::RodaPlugins::Render
- Roda::RodaPlugins::RenderCoverage
- Roda::RodaPlugins::RenderEach
- Roda::RodaPlugins::RenderLocals
- Roda::RodaPlugins::RequestAref
- Roda::RodaPlugins::RequestHeaders
- Roda::RodaPlugins::ResponseAttachment
- Roda::RodaPlugins::ResponseContentType
- Roda::RodaPlugins::ResponseRequest
- Roda::RodaPlugins::RouteBlockArgs
- Roda::RodaPlugins::RouteCsrf
- Roda::RodaPlugins::RunAppendSlash
- Roda::RodaPlugins::RunHandler
- Roda::RodaPlugins::RunRequireSlash
- Roda::RodaPlugins::SecFetchSiteCsrf
- Roda::RodaPlugins::SendFile
- Roda::RodaPlugins::Sessions
- Roda::RodaPlugins::ShapeFriendly
- Roda::RodaPlugins::SharedVars
- Roda::RodaPlugins::SinatraHelpers
- Roda::RodaPlugins::SlashPathEmpty
- Roda::RodaPlugins::Static
- Roda::RodaPlugins::StaticRouting
- Roda::RodaPlugins::Status303
- Roda::RodaPlugins::StatusHandler
- Roda::RodaPlugins::Streaming
- Roda::RodaPlugins::StripPathPrefix
- Roda::RodaPlugins::SymbolClassMatchers_
- Roda::RodaPlugins::SymbolMatchers
- Roda::RodaPlugins::SymbolRegexpMatchers
- Roda::RodaPlugins::SymbolStatus
- Roda::RodaPlugins::SymbolViews
- Roda::RodaPlugins::TimestampPublic
- Roda::RodaPlugins::TypeRouting
- Roda::RodaPlugins::TypecastParams
- Roda::RodaPlugins::TypecastParamsSizedIntegers
- Roda::RodaPlugins::UnescapePath
- Roda::RodaPlugins::UrlEscape
- Roda::RodaPlugins::ViewOptions
- Roda::RodaPlugins::ViewSubdirLeadingSlash
Constants
| EMPTY_ARRAY | = | [].freeze | ||
| OPTS | = | {}.freeze |
Public Class methods
Handle positional argument to keyword argument conversion warnings in plugins.
# File lib/roda/plugins.rb 57 def self.check_keywords(method, no_positional_opts, opts, kw) 58 unless no_positional_opts 59 warn("A positional options hash is now deprecated for #{method}. Support for this will be removed in Roda 4. Switch to passing keywords arguments. Keys given in positional options hash: #{opts.keys.map(&:inspect).join(", ")}", uplevel: 2) 60 end 61 62 unless kw.empty? 63 warn("Unrecognized keywords given to #{method}: #{kw.keys.join(", ")}. Backwards compatibility for this will be removed in Roda 4.", uplevel: 2) 64 end 65 66 nil 67 end
Warn if the opts given contain unsupported keys.
# File lib/roda/plugins.rb 46 def self.check_supported_opts(desc, opts, supported_keys) 47 extra_keys = opts.keys - supported_keys 48 49 unless extra_keys.empty? 50 warn("Unsupported options given to #{desc}: #{extra_keys.map(&:inspect).join(", ")}", uplevel: 2) 51 end 52 53 nil 54 end
Deprecate the constant with the given name in the given module, if the ruby version supports it.
# File lib/roda/plugins.rb 79 def self.deprecate_constant(mod, name) 80 # simplecov:disable 81 if RUBY_VERSION >= '2.3' 82 mod.deprecate_constant(name) 83 end 84 # simplecov:enable 85 end
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.
# File lib/roda/plugins.rb 26 def self.load_plugin(name) 27 h = @plugins 28 unless plugin = h[name] 29 require "roda/plugins/#{name}" 30 raise RodaError, "Plugin #{name} did not register itself correctly in Roda::RodaPlugins" unless plugin = h[name] 31 end 32 plugin 33 end
Define an attr_reader method for name that uses the instance variable @opt_*. Designed to be used with instance variables set via RodaOpts#[]=.
# File lib/roda/plugins.rb 37 def self.opt_attr_reader(mod, key, name: key) 38 opt_name = :"opt_#{key}" 39 mod.send(:attr_reader, opt_name) 40 mod.send(:alias_method, name, opt_name) 41 mod.send(:remove_method, opt_name) 42 nil 43 end
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)
# File lib/roda/plugins.rb 73 def self.register_plugin(name, mod) 74 @plugins[name] = mod 75 end
Create a new module using the block, and set the temporary name on it using the given a containing module and name.
# File lib/roda/plugins.rb 90 def self.set_temp_name(mod) 91 mod.set_temporary_name(yield) 92 mod 93 end