@@ -554,20 +554,22 @@ After merging of two files we will get:
554
554
=head1 INTERPOLATION
555
555
556
556
Config::Processor can interpolate variables in string values (if you need alias
557
- for complex structures see C<var > directive). For example, we have
558
- F<myapp.yml> file:
557
+ for complex structures see C<var > directive). Variable names can be absolute or
558
+ relative. Relative variable names begins with dot "." The number of dots
559
+ depends on the nesting level of the current configuration parameter relative to
560
+ referenced configuration parameter.
559
561
560
562
myapp:
561
563
media_formats: [ "images", "audio", "video" ]
562
564
563
565
dirs:
564
566
root_dir: "/myapp"
565
- templates_dir: "${myapp.dirs .root_dir}/templates"
566
- sessions_dir: "${myapp.dirs .root_dir}/sessions"
567
+ templates_dir: "${.root_dir}/templates"
568
+ sessions_dir: "${.root_dir}/sessions"
567
569
media_dirs:
568
- - "${myapp.dirs .root_dir}/media/${myapp.media_formats.0}"
569
- - "${myapp.dirs .root_dir}/media/${myapp.media_formats.1}"
570
- - "${myapp.dirs .root_dir}/media/${myapp.media_formats.2}"
570
+ - "${. .root_dir}/media/${myapp.media_formats.0}"
571
+ - "${. .root_dir}/media/${myapp.media_formats.1}"
572
+ - "${. .root_dir}/media/${myapp.media_formats.2}"
571
573
572
574
After processing of the file we will get:
573
575
@@ -601,10 +603,14 @@ After processing we will get:
601
603
=item var: varname
602
604
603
605
Assigns configuration parameter value to another configuration parameter.
606
+ Variable names in the directive can be absolute or relative. Relative variable
607
+ names begins with dot ".". The number of dots depends on the nesting level of
608
+ the current configuration parameter relative to referenced configuration
609
+ parameter.
604
610
605
611
myapp:
606
612
db:
607
- generic_options :
613
+ default_options :
608
614
PrintWarn: 0
609
615
PrintError: 0
610
616
RaiseError: 1
@@ -616,15 +622,15 @@ Assigns configuration parameter value to another configuration parameter.
616
622
dbname: "stat"
617
623
username: "stat_writer"
618
624
password: "stat_writer_pass"
619
- options: { var: myapp.db.generic_options }
625
+ options: { var: myapp.db.default_options }
620
626
621
627
stat_slave:
622
628
host: "stat-slave.mydb.com"
623
629
port: "1234"
624
630
dbname: "stat"
625
631
username: "stat_reader"
626
632
password: "stat_reader_pass"
627
- options: { var: myapp.db.generic_options }
633
+ options: { var: ...default_options }
628
634
629
635
=item include: filename
630
636
@@ -665,13 +671,13 @@ For example, you can use this directive to set default values of parameters.
665
671
RaiseError: 1
666
672
667
673
stat_master:
668
- underlay: { var: myapp.db.connectors .default }
674
+ underlay: { var: .default }
669
675
host: "stat-master.mydb.com"
670
676
username: "stat_writer"
671
677
password: "stat_writer_pass"
672
678
673
679
stat_slave:
674
- underlay: { var: myapp.db.connectors .default }
680
+ underlay: { var: .default }
675
681
host: "stat-slave.mydb.com"
676
682
username: "stat_reader"
677
683
password: "stat_reader_pass"
@@ -686,19 +692,19 @@ You can move default parameters in separate files.
686
692
- { include: db_connectors/default_test.yml }
687
693
688
694
stat_master:
689
- underlay: { var: myapp.db.connectors .default }
695
+ underlay: { var: .default }
690
696
host: "stat-master.mydb.com"
691
697
username: "stat_writer"
692
698
password: "stat_writer_pass"
693
699
694
700
stat_slave:
695
- underlay: { var: myapp.db.connectors .default }
701
+ underlay: { var: .default }
696
702
host: "stat-slave.mydb.com"
697
703
username: "stat_reader"
698
704
password: "stat_reader_pass"
699
705
700
706
test:
701
- underlay: { var: myapp.db.connectors .default_test }
707
+ underlay: { var: .default_test }
702
708
username: "test"
703
709
password: "test_pass"
704
710
@@ -728,18 +734,18 @@ configuration parameters.
728
734
port: "4321"
729
735
730
736
stat_master:
731
- underlay: { var: myapp.db.connectors .default }
737
+ underlay: { var: .default }
732
738
host: "stat-master.mydb.com"
733
739
username: "stat_writer"
734
740
password: "stat_writer_pass"
735
- overlay: { var: myapp.db.connectors .test }
741
+ overlay: { var: .test }
736
742
737
743
stat_slave:
738
- underlay: { var: myapp.db.connectors .default }
744
+ underlay: { var: .default }
739
745
host: "stat-slave.mydb.com"
740
746
username: "stat_reader"
741
747
password: "stat_reader_pass"
742
- overlay: { var: myapp.db.connectors .test }
748
+ overlay: { var: .test }
743
749
744
750
To disable overriding just assign to C<test > connector empty hash.
745
751
0 commit comments