[Catalyst] A domain-cued application
Adam Jacob
adam at stalecoffee.org
Thu Apr 27 08:13:21 CEST 2006
On Apr 26, 2006, at 10:50 PM, Matija Grabnar wrote:
> I'm developing a small application that we would like to sell (as a
> part
> of a much larger package) to a number of customers. Most often, the
> hosting for that customer will be done by us, in a vhost on one of our
> servers. Since the load from the application will usualy be very
> small,
> there is NO chance of setting up a separate server, (not even a
> separate
> apache tree) for each customer.
>
> Idealy, I would like catalyst to look up the domain it's being used
> with
> currently (on an apache with multiple vhosts instalation), and select
> the appropriate database for that customer. That way, I can create the
> application for a new customer by simply creating a new vhost and new
> database for them, and the application can be very simple.
>
> Unfortunately, I can't see a way to do that with Catalyst and
> DBIx::Class.
>
> The alternative is to design the application itself to be domain-
> aware,
> having the domain as a key in a number of tables. Which of course
> would
> make the application more complex and harder to write.
>
> Can anybody supply any clues on how to achieve the first option? Or is
> there a third one?
It looks like you can achieve what you're looking for with
DBIx::Class::Schema, by calling:
# Elsewhere in your code:
my $schema1 = Library::Schema->connect(
$dsn,
$user,
$password,
{ AutoCommit => 0 },
);
Where the values for the above are inherited from a configuration
file for your app. You could easily use, say, an environment
variable to configure which configuration file to load based on the
Vhost.
Adam
More information about the Catalyst
mailing list