.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. | will give a .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' .\" expand to `' in nroff, nothing in troff, for use with C<>. .tr \(*W-|\(bv\*(Tr .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .\" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .hy 0 .if n .na .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Gantry::Conf::FAQ 3" .TH Gantry::Conf::FAQ 3 "2008-01-18" "perl v5.8.8" "User Contributed Perl Documentation" .SH "NAME" Gantry::Conf::FAQ \- Frequently Asked Questions regarding Gantry::Conf .IP "Why should I use Gantry::Conf at all?" 4 .IX Item "Why should I use Gantry::Conf at all?" There are many reasons why we feel Gantry::Conf is helpful both during development and after deployment. The next two entries should hopefully answer this quesiton for you as they outline a few common scenarios programmers and system administrators often face. .IP "How is Gantry::Conf helpful during development?" 4 .IX Item "How is Gantry::Conf helpful during development?" .RS 4 .PD 0 .IP "Easy separation of development configs from production configs" 4 .IX Item "Easy separation of development configs from production configs" .PD Often programmers have a separate development environment from their production environment. By using blocks and dev instances you can avoid spending any serious time setting up your application in the development environment. Take this configuration example: .Sp .Vb 5 \& \& dbuser nobody \& dbpass secret \& dbconn "dbi:Pg:dbname=dev" \& .Ve .Sp .Vb 5 \& \& dbuser apache \& dbpass secret2 \& dbconn "dbi:Pg:dbname=production" \& .Ve .Sp .Vb 4 \& \& ConfigureVia FlatFile Config::General /etc/apps/app1.conf \& use production \& .Ve .Sp .Vb 4 \& \& ConfigureVia FlatFile Config::General /etc/apps/app1.conf \& use dev \& .Ve .Sp By separating out our production and dev database information into shared blocks we can essentially switch between our production and dev environments by simply changing the instance we are using. If you were working on a script this would be a simple matter of running: .Sp .Vb 1 \& $ script.pl --instance=app1-dev .Ve .Sp instead of: .Sp .Vb 1 \& $ script.pl --instance=app1 .Ve .RE .RS 4 .RE .IP "How is Gatnry::Conf helpful in production?" 4 .IX Item "How is Gatnry::Conf helpful in production?" Gantry::Conf has several advantages in a production environment. First, it provides a single place for all config information, if you commit to it. Even if you don't commit to it for all apps, it still provides control to the installing admin over how and where conf information is stored. For instance, the admin could put the config information directly into /etc/gantry.conf, or into a separate file in /etc/gantry.d. She could even set up a secure web server where all boxes would go to get their conf. .Sp The short answer is, Gantry::Conf is flexible and production environments benefit from flexibility. .IP "How do I pass my instance information into my application?" 4 .IX Item "How do I pass my instance information into my application?" There are many possible ways to do this a few of which are: .RS 4 .IP "Command line arguments" 4 .IX Item "Command line arguments" If your application accepts arguments on the command line we suggest adding an \f(CW\*(C`\-\-instance\*(C'\fR option to pass in the instance's name. .IP "PerlSetVar" 4 .IX Item "PerlSetVar" In a mod_perl environment you could use a PerlSetVar, possibly named \&\f(CW\*(C`GantryConfInstance\*(C'\fR, to pull in this value for your application. .IP "ModPerl::ParamBuilder" 4 .IX Item "ModPerl::ParamBuilder" Again in a mod_perl environment, another option would be to use ModPerl::ParamBuilder to pass the instance name. .IP "Hard coded" 4 .IX Item "Hard coded" We include this for the sake of completeness, but advise against it. You could always simply hard code your instance information into your application, but this will greatly reduce the flexibility you have. .RE .RS 4 .RE .IP "How do I add a different provider for an existing ConfigVia method?" 4 .IX Item "How do I add a different provider for an existing ConfigVia method?" Place your provider module in the Gantry::Conf::Provider::Method::* namespace. Make sure your public API matches the existing providers which use the same method. For instance the flat file providers all implement a config method which is called as a class method and receives a file name. .IP "How do I add to the ConfigVia methods?" 4 .IX Item "How do I add to the ConfigVia methods?" If none of the existing provider methods will do, you need to work in Gantry::Conf. In particular, you need to augment the dispatch hash with the name of your provisioning method and a sub name which will handle it. Then you need to implement the method you put in \f(CW%dispatch\fR. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIGantry\fR\|(3), \fIGantry::Conf\fR\|(3), \fIGantry::Conf::Tutorial\fR\|(3) .SH "AUTHOR" .IX Header "AUTHOR" Frank Wiles .SH "COPYRIGHT and LICENSE" .IX Header "COPYRIGHT and LICENSE" Copyright (c) 2006, Frank Wiles. .PP This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.