[Catalyst] Connect DBIx::Class model on startup?

Tomas Doran bobtfish at bobtfish.net
Mon Mar 5 08:15:18 GMT 2012


On 5 Mar 2012, at 02:30, Daniel J. Luke wrote:

> On Mar 4, 2012, at 9:56 AM, Tomas Doran wrote:
>> On 2 Mar 2012, at 20:44, Daniel J. Luke wrote:
>>> On Feb 25, 2012, at 10:00 AM, Daniel J. Luke wrote:
>>>> On Feb 25, 2012, at 3:39 AM, Tomas Doran wrote:
>>>>>>> Or maybe there's a reason why there's not an obvious hook and someone can point me to the pitfalls I'm not seeing.
>>>>> 
>>>>> It's not totally obvious as you can't do this at process startup (as you then fork!),
>>>> 
>>>> Yeah, I just realized that that was going to be an issue when I went to attempt this (late yesterday).
>>>> 
>>>>> so it has to be done in the FCGI process manager really (which does the forking)…
>>>>> 
>>>>> You can subclass FCGI::ProcManager and implement:
>>>>> 
>>>>> sub handling_init {
>>>>> my $self = shift;
>>>>> $self->next::method(@_);
>>>>> MyApp->model('DB')->schema->dbh->ping; # Check we have a DB connection that's working straight after forking but before starting to handle requests.
>>> 
>>> Maybe I'm being thick, but where does that instance of MyApp come from? I don't see it being passed into FCGI::ProcManager
>> 
>> What instance of MyApp?
> 
> the one that I'm going to call ->model() on in order to pre-connect to my DB?

Erm? Where did I suggest that?

(I didn't - I suggested calling a class method, which ->model is…)

> 
>> There is no instance?
> 
> 
> Then there's some magic that I'm missing? If I take your code literally, I'm going to get a 'cannot use a string as a hash ref' error.

Did you try this already?

Unless you've specifically done something to break how things normally work, then it'll work fine.

Cheers
t0m




More information about the Catalyst mailing list