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--