I tend to use the excellent Import::Base from Doug Bell when I need to bring groups of my commonly used modules into an application. Check it out - I think you’ll find it useful! Jason A. Crome / CromeDome CPAN: https://metacpan.org/author/CROMEDOME github: https://github.com/cromedome Twitter: https://twitter.com/cromedome
On Dec 15, 2017, at 11:10 AM, Steve Dondley <sdondley@gmail.com> wrote:
Here's the few lines from a hypothetical MainApp in /lib:
# File 1 package MainApp; use ExtendingApp; use HTML::Element;
And here is a perl module that extends this app.
# File 2 package ExtendingApp; use Dancer2 appname => MainApp;
get '/' => sub { my $element = HTML::Element->new('h1'); };
### END ###
This works. I get no errors because the HTML::Element module can be seen inside routes. However, unless I'm missing something, this doesn't work.
# File 1 package MainApp; use ExtendingApp; use Dancer2::Plugin::Database;
# File 2 package ExtendingApp; use Dancer2 appname => MainApp;
get '/' => sub { my @data = database->quick_select('test_table', {}); };
### END ###
The above results in an error: Can't locate object method "quick_select" via package "database" (perhaps you forgot to load "database"?)
I'm forced to add "use Dancer2::Plugin::Database" to File 2. I'm curious to know if there's some way to import commonly used plugins into extension apps.
Thanks!
_______________________________________________ dancer-users mailing list dancer-users@dancer.pm http://lists.preshweb.co.uk/mailman/listinfo/dancer-users