Re: Having configuration-data in a package with multiple instances of the same app
Seb <[email protected]> Thu, 19 Dec 2019 12:30:26 +0100 (CET)
| Newsgroups | gmane.comp.web.mason.user |
|---|---|
| Message-ID | <[email protected]> |
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---1155178722-1032234494-1576754991=:27617 Content-Type: text/plain; CHARSET=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8BIT Content-ID: <[email protected]> Hi, > As far I see %config from your 1st sample is not available outside the > autohandler. Otherwise I would do it that way. Ah yes, sorry, I forgot that I had made %config a global variable in Apache: # grep config <site>.conf PerlAddVar MasonAllowGlobals %config Best regards, Sébastien. > On 19.12.19 10:02, Seb wrote: >> >> Hi, >> >> >> Using a library is but one a several ways to make an information available >> to all parts of your website. For the need you describe, perhaps you would >> get an equivalent functionality by setting >> our %config = ( >> 'getColor' => 'red', >> ); >> in the autohandler. Then any component could use $config{'getColor'}. >> >> If you really want, or need, a library, I suggest you make subcases in >> "sub getColor" according to the DOCUMENT_ROOT, eg >> return ($ENV{'DOCUMENT_ROOT'} eq "···") ? "red" >> : ($ENV{'DOCUMENT_ROOT'} eq "···") ? "blue" >> : "black"; >> NB: I haven't tested this; perhaps you would need to call your function as >> MyConfig::getColor($ENV{'DOCUMENT_ROOT'}) instead. >> >> >> Kind regards, >> Sébastien. >> >> [email protected] (Thu, 19 Dec 2019): >> >>> Hello! >>> >>> Thanks for support. >>> >>> Here is the essential of my sample for app1 and app2. I try to put a >>> config-item (the color) into a package. The color should be different >>> between app1 and app2. >>> The config-package has in every app the same name MyConfig (that may be >>> the problem). I can resolve the problem if I make MyConfig1 for app1 and >>> MyConfig2 for app2. >>> But lets think I have not 2 apps but 10. I would need to change every >>> apperance of MyConfig::getColor in the code. >>> >>> Cheers >>> Chris >>> >>> >>> --app1/autohandler-- >>> % $m->call_next (); >>> <%init> >>> use strict; >>> use warnings; >>> use lib "/var/www/html/app1"; >>> use MyConfig; >>> </%init> >>> >>> >>> --/app1/MyConfig.pm-- >>> package MyConfig; >>> sub getColor >>> { >>> return "red"; >>> } >>> 1; >>> >>> >>> --app2/index.mas-- >>> <% MyConfig::getColor () %> >>> >>> >>> --app2/autohandler-- >>> % $m->call_next (); >>> <%init> >>> use strict; >>> use warnings; >>> use lib "/var/www/html/app2"; >>> use MyConfig; >>> </%init> >>> >>> >>> --/app12MyConfig.pm-- >>> package MyConfig; >>> sub getColor >>> { >>> return "blue"; >>> } >>> 1; >>> >>> --app2/index.mas-- >>> <% MyConfig::getColor () %> >>> >>> >>> >>> >>> >>> On 19.12.19 02:41, Han Do Jin wrote: >>>> Can you show us your autohandler? I think maybe you should be using >>>> <%attr> to affect a shared template rather than put configs into a shared >>>> library. I'm guessing when you say you want same application 2nd time on >>>> same server that they are both running in the same apache instance? I run >>>> multiple sites (virtualhosts) on the same apache instance and use a few >>>> techniques for altering the core/shared master template as well as which >>>> database to connect to. Let's see what you are trying to accomplish and I >>>> can try and offer you some more concrete examples. >>>> >>>> Chris >>>> >>>> >>>> On Wed, Dec 18, 2019 at 5:16 PM [email protected] >>>> <mailto:[email protected]> <[email protected] >>>> <mailto:[email protected]>> wrote: >>>> >>>> Hello! >>>> >>>> I am new to Mason and have a little problem in having the same >>>> application (but with different configuration) multiple times on a >>>> server in different paths. >>>> Think the problem is because of the global scope of packages. >>>> >>>> I have the configuation data in a package - lets say MyConfig. >>>> >>>> e.g. >>>> package MyConfig; >>>> >>>> sub getColor >>>> { >>>> return "red"; >>>> } >>>> >>>> 1; >>>> >>>> I load it in the autohandler and via MyConfig::getColor () it is >>>> available in all parts of the application. >>>> >>>> Lets say I wanna have the same application a 2nd time on the same >>>> server >>>> but with a different color. >>>> So both applications would have the same files but MyConfig.pm >>>> differs. >>>> >>>> That does not work. The color get mixed up unless I do not have >>>> unique >>>> names for the config-package (e.g. MyConfig1 in the 1st >>>> application and >>>> MyConfig2 in the 2nd) again. >>>> Thats not great because I also need to change every appearence of >>>> MyConfig::getColor () to the new name. >>>> >>>> Is there a way I can bring such static configuration data in the >>>> application in a more elegant way? >>>> >>>> Thanks for help! >>>> Chris >>>> >>>> >>>> _______________________________________________ >>>> Mason-users mailing list >>>> [email protected] >>>> <mailto:[email protected]> >>>> https://lists.sourceforge.net/lists/listinfo/mason-users >>>> >>> >>> > ---1155178722-1032234494-1576754991=:27617 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ---1155178722-1032234494-1576754991=:27617 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Mason-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mason-users ---1155178722-1032234494-1576754991=:27617--