यह एक दिलचस्प सवाल है और सबसे आसानी से स्रोत को देखकर घेरने की कोशिश की है। अपने उदाहरण में आप ठीक ही उपयोग करें
Mojolicious::Commands->start_app('MyApp');
source को देखते हुए पता चलता है कि start_app
बल्कि एक सरल आवरण है:
sub start_app {
my $self = shift;
return Mojo::Server->new->build_app(shift)->start(@_);
}
ऐसा लगता है कि build_app
as well है:
sub build_app {
my ($self, $app) = @_;
local $ENV{MOJO_EXE};
return $app->new unless my $e = Mojo::Loader->new->load($app);
die ref $e ? $e : qq{Couldn't find application class "$app".\n};
}
एक लौटने आपके ऐप की कक्षा का नया उदाहरण। Mojolicious वर्ग का new
फ़ंक्शन more involved है, लेकिन अंत में, it just calls the familiar startup
method and returns the instance।
इसका मतलब है कि आप मानक तरीके से उपयोग किए जाने वाले अपने मिडलवेयर रैपर से startup
विधि पर तर्क आसानी से पास नहीं कर सकते हैं। मैं जो कुछ करना चाहता हूं उसे पूरा करने के लिए मैं दो तंत्रों के बारे में सोच सकता हूं: 1) सर्वर की विधि को प्रतिस्थापित करने के लिए अपना खुद का build_app
फ़ंक्शन लिखें, लेकिन $app->new
पर तर्क पारित करता है (जो बदले में startup
पर पारित हो जाएगा) या 2) अपना खुद का start_app
फ़ंक्शन लिखें जो एक और startup
-जैसा कार्य कह सकता है।
# in MyApp.pm
sub startup {
... # as before
}
sub after_startup {
... # your new code here,
# or even most of what was in `startup` before
}
और
# app.psgi
builder {
...
my $app = Mojo::Server->new->build_app(shift);
$app->after_startup(@your_args_here);
$app->start(@_);
}
स्रोत
2013-07-14 18:52:05
मैं भी स्रोत से पूछा लेकिन कुछ बिंदु पर छोड़ दिया। मैंने सोचा कि पैरामीटर पास करने का एक आसान तरीका होना चाहिए। लेकिन जैसा कि आप मूल डेवलपर्स में से एक हैं ... शायद कुछ 'Mojolicious :: Commands-> enable_app (' MyApp ', @my_params) जैसे कुछ को Mojolicious में जोड़ा जाना चाहिए ;-)? – user2572744
आपको [आईआरसी चैनल] (http://mojolicio.us/perldoc/Mojolicious/Guides/Contributing#Feature_requests) पर हॉप करने के लिए आपका स्वागत है: irmoperl.org पर #mojo –