Re: Having configuration-data in a package with multiple instances of the same app
Seb <[email protected]> Thu, 19 Dec 2019 10:02:52 +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-462287865-1576745652=:21081 Content-Type: text/plain; CHARSET=ISO-8859-1; FORMAT=flowed Content-Transfer-Encoding: 8BIT Content-ID: <[email protected]> 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-462287865-1576745652=:21081 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ---1155178722-462287865-1576745652=:21081 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-462287865-1576745652=:21081--