1Dancer::Config(3) User Contributed Perl Documentation Dancer::Config(3)
2
3
4
6 Dancer::Config - how to configure Dancer to suit your needs
7
9 version 1.3521
10
12 Dancer::Config handles reading and changing the configuration of your
13 Dancer apps. The documentation for this module aims to describe how to
14 change settings, and which settings are available.
15
17 You can change a setting with the keyword set, like the following:
18
19 use Dancer;
20
21 # changing default settings
22 set port => 8080;
23 set content_type => 'text/plain';
24 set startup_info => 0;
25
26 A better way of defining settings exists: using YAML file. For this to
27 be possible, you have to install the YAML module. If a file named
28 config.yml exists in the application directory it will be loaded as a
29 setting group.
30
31 The same is done for the environment file located in the environments
32 directory.
33
34 To fetch the available configuration values use the config keyword that
35 returns a reference to a hash:
36
37 my $port = config->{port};
38 my $appdir = config->{appdir};
39
40 By default, the module YAML will be used to parse the configuration
41 files. If desired, it is possible to use YAML::XS instead by changing
42 the YAML engine configuration in the application code:
43
44 config->{engines}{YAML}{module} = 'YAML::XS';
45
46 See Dancer::Serializer::YAML for more details.
47
49 Run mode and listening interface/port
50 server (string)
51
52 The IP address that the Dancer app should bind to. Default is 0.0.0.0,
53 i.e. bind to all available interfaces.
54
55 Can also be set with environment variable DANCER_SERVER
56
57 port (int)
58
59 The port Dancer will listen to.
60
61 Default value is 3000. This setting can be changed on the command-line
62 with the --port switch.
63
64 Can also be set with environment variable DANCER_PORT
65
66 daemon (boolean)
67
68 If set to true, runs the standalone webserver in the background. This
69 setting can be changed on the command-line with the --daemon flag.
70
71 Can also be enabled by setting environment variable DANCER_DAEMON to a
72 true value.
73
74 behind_proxy (boolean)
75
76 If set to true, Dancer will look to "X-Forwarded-Protocol" and
77 "X-Forwarded-host" when constructing URLs (for example, when using
78 "redirect". This is useful if your application is behind a proxy.
79
80 It will also cause Dancer::Request->address to return what
81 Dancer::Request->forwarded_for_address would return, namely the content
82 of the `HTTP_X_FORWARDED_FOR` env var/header, so that requests will
83 appear to have come from the end user's IP and not the proxy's.
84
85 Because of the above, you should *not* turn this on if your app isn't
86 behind a proxy which will pass this information on appropriately,
87 otherwise a malicious user could supply false information.
88
89 Content type / character set
90 content_type (string)
91
92 The default content type of outgoing content. Default value is
93 'text/html'.
94
95 Can also be set with environment variable DANCER_CONTENT_TYPE
96
97 charset (string)
98
99 This setting has multiple effects:
100
101 • It sets the default charset of outgoing content. "charset=" item
102 will be added to Content-Type response header.
103
104 • It makes Unicode bodies in HTTP responses of "text/*" types to be
105 encoded to this charset.
106
107 • It also indicates to Dancer in which charset the static files and
108 templates are encoded.
109
110 • If you're using Dancer::Plugin::Database, UTF-8 support will
111 automatically be enabled for your database - see "AUTOMATIC UTF-8
112 SUPPORT" in Dancer::Plugin::Database
113
114 Default value is empty which means don't do anything. HTTP responses
115 without charset will be interpreted as ISO-8859-1 by most clients.
116
117 You can cancel any charset processing by specifying your own charset in
118 Content-Type header or by ensuring that response body leaves your
119 handler without Unicode flag set (by encoding it into some 8bit
120 charset, for example).
121
122 Also, since automatically serialized JSON responses have
123 "application/json" Content-Type, you should always encode them by hand.
124
125 Can also be set with environment variable DANCER_CHARSET
126
127 default_mime_type (string)
128
129 Dancer's Dancer::MIME module uses "application/data" as a default mime
130 type. This setting lets the user change it. For example, if you have a
131 lot of files being served in the public folder that do not have an
132 extension, and are text files, set the "default_mime_type" to
133 "text/plain".
134
135 File / directory locations
136 environment (string)
137
138 This is the name of the environment that should be used. Standard
139 Dancer applications have an "environments" folder with specific
140 configuration files for different environments (usually development and
141 production environments). They specify different kinds of error
142 reporting, deployment details, etc. These files are read after the
143 generic "config.yml" configuration file.
144
145 The running environment can be set with:
146
147 set environment => "production";
148
149 Note that this variable is also used as a default value if other values
150 are not defined.
151
152 Can also be set with environment variable DANCER_ENVIRONMENT
153
154 appdir (directory)
155
156 This is the path where your application will live. It's where Dancer
157 will look by default for your config files, templates and static
158 content.
159
160 It is typically set by "use Dancer" to use the same directory as your
161 script.
162
163 Can also be set with environment variable DANCER_APPDIR
164
165 public (directory)
166
167 This is the directory, where static files are stored. Any existing file
168 in that directory will be served as a static file, before matching any
169 route.
170
171 By default it points to $appdir/public.
172
173 views (directory)
174
175 This is the directory where your templates and layouts live. It's the
176 "view" part of MVC (model, view, controller).
177
178 This defaults to $appdir/views.
179
180 Templating & layouts
181 template
182
183 Allows you to configure which template engine should be used. For
184 instance, to use Template Toolkit, add the following to "config.yml":
185
186 template: template_toolkit
187
188 layout (string)
189
190 The name of the layout to use when rendering view. Dancer will look for
191 a matching template in the directory $views/layouts.
192
193 Your can override the default layout using the third argument of the
194 "template" keyword. Check "Dancer" manpage for details.
195
196 Logging, debugging and error handling
197 strict_config (boolean, default: false)
198
199 If true, "config" will return an object instead of a hash reference.
200 See Dancer::Config::Object for more information.
201
202 global_warnings (boolean, default: false)
203
204 If true, "use warnings" will be in effect for all modules and scripts
205 loaded by your Dancer application. Default is false.
206
207 Can also be enabled by setting the environment variable DANCER_WARNINGS
208 to a true value.
209
210 startup_info (boolean)
211
212 If set to true (the default), prints a banner at server startup with
213 information such as versions and the environment (or "dancefloor").
214
215 Can also be disabled by setting the environment variable
216 DANCER_NO_STARTUP_INFO to a true value.
217
218 warnings (boolean)
219
220 If set to true, tells Dancer to consider all warnings as blocking
221 errors. Default is false.
222
223 traces (boolean)
224
225 If set to true, Dancer will display full stack traces when a warning or
226 a die occurs. (Internally sets Carp::Verbose). Default is false.
227
228 Can also be enabled by setting environment variable DANCER_TRACES to a
229 true value.
230
231 require_environment (boolean)
232
233 If set to true, Dancer will fail during startup if your environment
234 file is missing or can't be read. This is especially useful in
235 production when you have things like memcached settings that need to be
236 set per-environment. Defaults to false.
237
238 server_tokens (boolean)
239
240 If set to true (the default), Dancer will add an "X-Powered-By" header
241 and also append the Dancer version to the "Server" header.
242
243 Can also be disabled by setting the environment variable
244 DANCER_NO_SERVER_TOKENS to a true value.
245
246 log_path (string)
247
248 Folder where the ``file "logger"'' saves log files.
249
250 log_file (string)
251
252 Name of the file to create when ``file "logger"'' is active. It
253 defaults to the "environment" setting contents.
254
255 logger (enum)
256
257 Select which logger to use. For example, to write to log files in
258 "log_path":
259
260 logger: file
261
262 Or to direct log messages to the console from which you started your
263 Dancer app in standalone mode,
264
265 logger: console
266
267 Various other logger backends are available on CPAN, including
268 Dancer::Logger::Syslog, Dancer::Logger::Log4perl, Dancer::Logger::PSGI
269 (which can, with the aid of Plack middlewares, send log messages to a
270 browser's console window) and others.
271
272 Can also be set with environment variable DANCER_LOGGER
273
274 log (enum)
275
276 Tells which log messages should be actually logged. Possible values are
277 core, debug, warning or error.
278
279 core : all messages are logged, including some from Dancer itself
280 debug : all messages are logged
281 info : only info, warning and error messages are logged
282 warning : only warning and error messages are logged
283 error : only error messages are logged
284
285 During development, you'll probably want to use "debug" to see your own
286 debug messages, and "core" if you need to see what Dancer is doing. In
287 production, you'll likely want "error" or "warning" only, for less-
288 chatty logs.
289
290 show_errors (boolean)
291
292 If set to true, Dancer will render a detailed debug screen whenever an
293 error is caught. If set to false, Dancer will render the default error
294 page, using $public/$error_code.html if it exists or the template
295 specified by the "error_template" setting.
296
297 The error screen attempts to sanitise sensitive looking information
298 (passwords / card numbers in the request, etc) but you still should not
299 have show_errors enabled whilst in production, as there is still a risk
300 of divulging details.
301
302 error_template (template path)
303
304 This setting lets you specify a template to be used in case of runtime
305 error. At the present moment the template can use three variables:
306
307 title
308 The error title.
309
310 message
311 The error message.
312
313 code
314 The code throwing that error.
315
316 Session engine
317 session (enum)
318
319 This setting lets you enable a session engine for your web application.
320 By default sessions are disabled in Dancer. You must choose a session
321 engine to use them.
322
323 See Dancer::Session for supported engines and their respective
324 configuration.
325
326 session_expires
327
328 The session expiry time in seconds, or as e.g. "2 hours" (see "expires"
329 in Dancer::Cookie. By default there is no specific expiry time.
330
331 session_name
332
333 The name of the cookie to store the session ID in. Defaults to
334 "dancer.session". This can be overridden by certain session engines.
335
336 session_secure
337
338 The user's session ID is stored in a cookie. If the "session_secure"
339 setting is set to a true value, the cookie will be marked as secure,
340 meaning it should only be sent over HTTPS connections.
341
342 session_is_http_only
343
344 This setting defaults to 1 and instructs the session cookie to be
345 created with the "HttpOnly" option active, meaning that JavaScript will
346 not be able to access its value.
347
348 session_domain
349
350 Allows you to set the domain property on the cookie, which will
351 override the default. This is useful for setting the session cookie's
352 domain to something like ".domain.com" so that the same cookie will be
353 applicable and usable across subdomains of a base domain.
354
355 session_same_site
356
357 If set, session cookies will have the SameSite attribute set to the
358 specified value to control cross-site request cookie handling. If set,
359 the value must be one of the values described in RFC6265bis - 'Strict',
360 'Lax' or 'None'.
361
362 "Strict" - Cookies will only be sent in a first-party context and not
363 be sent along with requests initiated by third party websites.
364 "Lax" - Cookies are allowed to be sent with top-level navigations and
365 will be sent along with GET request initiated by third party website.
366 This is the default value in modern browsers.
367 "None" - Cookies will be sent in all contexts, i.e sending cross-origin
368 is allowed.
369
370 auto_page (boolean)
371 For simple pages where you're not doing anything dynamic, but still
372 want to use the template engine to provide headers etc, you can use the
373 auto_page feature to avoid the need to create a route for each page.
374
375 With "auto_page" enabled, if the requested path does not match any
376 specific route, Dancer will check in the views directory for a matching
377 template, and use it to satisfy the request if found.
378
379 Simply enable auto_page in your config:
380
381 auto_page: 1
382
383 Then, if you request "/foo/bar", Dancer will look in the views dir for
384 "/foo/bar.tt".
385
386 Dancer will honor your "before_template_render" code, and all default
387 variables. They will be accessible and interpolated on automaticly-
388 served pages.
389
390 The pages served this way will have "Content-Type" set to "text/html",
391 so don't use the feature for anything else.
392
393 Route caching
394 route_cache (boolean)
395
396 If true, enables route caching (for quicker route resolution on larger
397 apps - not caching of responses). See Dancer::Route::Cache for
398 details. Default is false.
399
400 route_cache_size_limit (bytes)
401
402 Maximum size of route cache (e.g. 1024, 2M). Defaults to 10M (10MB) -
403 see Dancer::Route::Cache
404
405 route_cache_path_limit (number)
406
407 Maximum number of routes to cache. Defaults to 600 - see
408 Dancer::Route::Cache
409
410 DANCER_CONFDIR and DANCER_ENVDIR
411 It's possible to set the configuration directory and environment
412 directory using these two environment variables. Setting
413 `DANCER_CONFDIR` will have the same effect as doing
414
415 set confdir => '/path/to/confdir'
416
417 and setting `DANCER_ENVDIR` will be similar to:
418
419 set envdir => '/path/to/environments'
420
422 Some settings can be provided via environment variables at runtime, as
423 detailed above; a full list of environment variables you can use
424 follows.
425
426 DANCER_APPDIR
427
428 DANCER_APPHANDLER a Dancer::Handler::* by default
429 Dancer::Handler::Standalone
430
431 DANCER_AUTO_RELOAD
432
433 DANCER_CHARSET
434
435 DANCER_CONFDIR
436
437 DANCER_CONTENT_TYPE
438
439 DANCER_DAEMON
440
441 DANCER_ENVDIR
442
443 DANCER_ENVIRONMENT
444
445 DANCER_NO_SERVER_TOKENS
446
447 DANCER_NO_STARTUP_INFO
448
449 DANCER_LOGGER
450
451 DANCER_PORT
452
453 DANCER_SERVER
454
455 DANCER_TRACES
456
457 DANCER_WARNINGS
458
460 This module has been written by Alexis Sukrieh <sukria@cpan.org> and
461 others, see the AUTHORS file that comes with this distribution for
462 details.
463
465 This module is free software and is released under the same terms as
466 Perl itself.
467
469 Dancer
470
472 Dancer Core Developers
473
475 This software is copyright (c) 2010 by Alexis Sukrieh.
476
477 This is free software; you can redistribute it and/or modify it under
478 the same terms as the Perl 5 programming language system itself.
479
480
481
482perl v5.38.0 2023-07-20 Dancer::Config(3)