class Marten::Conf::GlobalSettings

Overview

Defines the global settings of a Marten web application.

Defined in:

marten/conf/global_settings.cr
marten/conf/global_settings/assets.cr
marten/conf/global_settings/content_security_policy.cr
marten/conf/global_settings/csrf.cr
marten/conf/global_settings/database.cr
marten/conf/global_settings/emailing.cr
marten/conf/global_settings/http_method_not_allowed_strategy.cr
marten/conf/global_settings/i18n.cr
marten/conf/global_settings/media_files.cr
marten/conf/global_settings/method_override.cr
marten/conf/global_settings/sessions.cr
marten/conf/global_settings/ssl_redirect.cr
marten/conf/global_settings/strict_stransport_security.cr
marten/conf/global_settings/templates.cr
marten/conf/global_settings/trailing_slash.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new #

[View source]

Instance Method Detail

def allowed_hosts : Array(String) #

Returns the explicit list of allowed hosts for the application.


[View source]
def allowed_hosts=(allowed_hosts : Array(String)) #

Allows to set the explicit list of allowed hosts for the application.

The application has to be explictely configured to serve a list of allowed hosts. This is to mitigate HTTP Host header attacks.


[View source]
def assets #

Provides access to assets settings.


[View source]
def cache_store : Marten::Cache::Store::Base #

Returns the global cache store.


[View source]
def cache_store=(cache_store : Marten::Cache::Store::Base) #

Allows to set the global cache store.


[View source]
def content_security_policy #

Provides access to the content security policy settings.

These setting values will be used by the Marten::Middleware::ContentSecurityPolicy middleware when inserting the Content-Security-Policy header in HTTP responses.


[View source]
def content_security_policy(&) #

Provides access to the content security policy settings.

These setting values will be used by the Marten::Middleware::ContentSecurityPolicy middleware when inserting the Content-Security-Policy header in HTTP responses.


[View source]
def csrf #

Provides access to request forgery protection settings.


[View source]
def database(id = DB::Connection::DEFAULT_CONNECTION_NAME, url : String | Nil = nil) #

Allows to configure a specific database connection for the application using a connection URL.


[View source]
def database(id = DB::Connection::DEFAULT_CONNECTION_NAME, url : String | Nil = nil, &) #

Allows to configure a specific database connection for the application using a connection URL or a block.


[View source]

Returns the application database configurations.


[View source]
def date_input_formats : Array(String) #

Returns the list of default date input formats.

The list of default date input formats is used by the Marten::Schema::Field::Date schema field to parse date values from strings. Note that the date input formats coming from locales will be used with priority over this default list.


[View source]
def date_input_formats=(date_input_formats : Array(String)) #

Allows to set the list of default date input formats.


[View source]
def date_time_input_formats : Array(String) #

Returns the list of default date time input formats.

The list of default date time input formats is used by the Marten::Schema::Field::DateTime schema field to parse date time values from strings. Note that the date time input formats coming from locales will be used with priority over this default list.


[View source]
def date_time_input_formats=(date_time_input_formats : Array(String)) #

Allows to set the list of default date time input formats.


[View source]
def debug : Bool #

Returns a boolean indicating whether the application runs in debug mode.


[View source]
def debug=(debug : Bool) #

Allows to activate or deactive debug mode.


[View source]
def debug? : Bool #

Returns a boolean indicating whether the application runs in debug mode.


[View source]
def emailing #

Provides access to emailing settings.


[View source]
def handler400 : Marten::Handlers::Base.class #

Returns the configured handler class that should generate responses for Bad Request responses (HTTP 400).


[View source]
def handler400=(handler400 : ::Marten::Handlers::Base.class) #

Allows to set the handler class that should generate responses for Bad Request responses (HTTP 400).


[View source]
def handler403 : Marten::Handlers::Base.class #

Returns the configured handler class that should generate responses for Permission Denied responses (HTTP 403).


[View source]
def handler403=(handler403 : ::Marten::Handlers::Base.class) #

Allows to set the handler class that should generate responses for Permission Denied responses (HTTP 403).


[View source]
def handler404 : Marten::Handlers::Base.class #

Returns the configured handler class that should generate responses for Not Found responses (HTTP 404).


[View source]
def handler404=(handler404 : ::Marten::Handlers::Base.class) #

Allows to set the handler class that should generate responses for Not Found responses (HTTP 404).


[View source]
def handler500 : Marten::Handlers::Base.class #

Returns the configured handler class that should generate responses for Internal Error responses (HTTP 500).


[View source]
def handler500=(handler500 : ::Marten::Handlers::Base.class) #

Allows to set the handler class that should generate responses for Internal Error responses (HTTP 500).


[View source]
def host : String #

Returns the host the HTTP server running the application will be listening on.


[View source]
def host=(host : String) #

Allows to set the host the HTTP server running the application will be listening on.


[View source]
def i18n #

Provides access to internationalization settings.


[View source]
def installed_apps : Array(Marten::Apps::Config.class) #

Returns the third-party applications used by the project.


[View source]
def installed_apps=(v) #

Allows to define the third-party applications used by the project.


[View source]
def log_backend #

Returns the log backend used by the application.


[View source]
def log_backend=(log_backend : ::Log::Backend) #

Allows to set the log backend used by the application.


[View source]
def log_level : Log::Severity #

The default log level used by the application.


[View source]
def log_level=(log_level : ::Log::Severity) #

Allows to set the default log level that will be used by the application (defaults to info).


[View source]
def media_files #

Provides access to media files settings.


[View source]
def method_override #

Provides access to method overriding settings.


[View source]

Returns the list of middlewares used by the application.


[View source]
def middleware=(v) #

Allows to define the list of middlewares used by the application.


[View source]
def port : Int32 #

Returns the port the HTTP server running the application will be listening on.


[View source]
def port=(port : Int32) #

Allows to set the port the HTTP server running the application will be listening on.


[View source]
def port_reuse : Bool #

Returns a boolean indicating whether multiple processes can bind to the same HTTP server port.


[View source]
def port_reuse=(port_reuse : Bool) #

Allows to indicate whether multiple processes can bind to the same HTTP server port.


[View source]
def port_reuse? : Bool #

Returns a boolean indicating whether multiple processes can bind to the same HTTP server port.


[View source]
def referrer_policy : String #

Returns the default value to use for the Referrer-Policy header.

The value of this setting will be used by the Marten::Middleware::ReferrerPolicy middleware when inserting the Referrer-Policy header in HTTP responses.


[View source]
def referrer_policy=(referrer_policy : String) #

Allows to set the default value to use for the Referrer-Policy header.

This value will be used by the Marten::Middleware::ReferrerPolicy middleware when inserting the Referrer-Policy header in HTTP responses.


[View source]
def request_max_parameters : Int32? #

Returns the maximum number of allowed parameters per request (such as GET or POST parameters).


[View source]
def request_max_parameters=(request_max_parameters : Int32 | Nil) #

Allows to set the maximum number of allowed parameters per request (such as GET or POST parameters).

This maximum limit is used to prevent large requests that could be used in the context of DOS attacks. Setting this value to nil will disable this behaviour.


[View source]
def root_path : String? #

Returns the root path of the application.


[View source]
def root_path=(path : Nil | Path | String | Symbol) #

Allows to set the root path of the application.

The root path of the application specifies the actual location of the project sources in your system. This can prove helpful in scenarios where the project was compiled in a specific location different from the final destination where the project sources are copied. For instance, platforms like Heroku often fall under this category. By configuring the root path, you can ensure that your application correctly locates the required project sources and avoids any discrepancies arising from inconsistent source paths. This can prevent issues related to missing dependencies or missing app-related files (eg. locales or templates) and make your application more robust and reliable.


[View source]
def secret_key : String #

Returns the secret key of the application.


[View source]
def secret_key=(secret_key : String) #

Allows to set the secret key of the application.

The secret key will be used provide cryptographic signing. It should be unique and unpredictable.


[View source]
def sessions #

Provides access to sessions settings.


[View source]
def ssl_redirect #

Provides access to SSL redirect settings.


[View source]
def strict_transport_security #

Provides access to strict transport security settings.


[View source]
def templates #

Provides access to templates settings.


[View source]
def time_zone : Time::Location #

Returns the default time zone used by the application when it comes to display date times.


[View source]
def time_zone=(time_zone : Time::Location) #

Allows to set the default time zone used by the application when it comes to display date times.


[View source]

Returns the trailing slash strategy.


[View source]
def trailing_slash=(trailing_slash : Marten::Conf::GlobalSettings::TrailingSlash) #

Allows to configure the trailing slash strategy.

The trailing slash strategy is used to determine how the application should handle trailing slashes in URLs. The default strategy is :do_nothing, which means that the application will not enforce any trailing slash policy. The other available strategies are :add and :remove, which will respectively add or remove trailing slashes from URLs if they can't be found.


[View source]
def unsupported_http_method_strategy : Marten::Conf::GlobalSettings::UnsupportedHttpMethodStrategy #

Returns the strategy to use when an unsupported HTTP method is encountered.


[View source]
def unsupported_http_method_strategy=(unsupported_http_method_strategy : Marten::Conf::GlobalSettings::UnsupportedHttpMethodStrategy) #

Allows to set the strategy to use when an unsupported HTTP method is encountered.

The default strategy is :deny, which means that the application will return a 405 Method Not Allowed response when an unsupported HTTP method is encountered. The other available strategy is :hide, which will results in 404 Not Found responses being returned instead.


[View source]
def use_x_forwarded_host : Bool #

Returns a boolean indicating whether the X-Forwarded-Host header is used to look for the host.


[View source]
def use_x_forwarded_host=(use_x_forwarded_host : Bool) #

Allows to set whether the X-Forwarded-Host header is used to look for the host.


[View source]
def use_x_forwarded_host? : Bool #

Returns a boolean indicating whether the X-Forwarded-Host header is used to look for the host.


[View source]
def use_x_forwarded_port : Bool #

Returns a boolean indicating if the X-Forwarded-Port header is used to determine the port of a request.


[View source]
def use_x_forwarded_port=(use_x_forwarded_port : Bool) #

Allows to set whether the X-Forwarded-Port header is used to determine the port of a request.


[View source]
def use_x_forwarded_port? : Bool #

Returns a boolean indicating if the X-Forwarded-Port header is used to determine the port of a request.


[View source]
def use_x_forwarded_proto : Bool #

Returns a boolean indicating if the X-Forwarded-Proto header is used to determine whether a request is secure.


[View source]
def use_x_forwarded_proto=(use_x_forwarded_proto : Bool) #

Allows to set whether the X-Forwarded-Proto header should be used to determine whether a request is secure.


[View source]
def use_x_forwarded_proto? : Bool #

Returns a boolean indicating if the X-Forwarded-Proto header is used to determine whether a request is secure.


[View source]
def x_frame_options : String #

Returns the value to use for the X-Frame-Options header when the associated middleware is used.

The value of this setting will be used by the Marten::Middleware::XFrameOptions middleware when inserting the X-Frame-Options header in HTTP responses.


[View source]
def x_frame_options=(x_frame_options : String | Symbol) #

Allows to set the value to use for the X-Frame-Options header when the associated middleware is used.

This value will be used by the Marten::Middleware::XFrameOptions middleware when inserting the X-Frame-Options header in HTTP responses.


[View source]