On 31/10/2007, Matt S Trout <[EMAIL PROTECTED]> wrote: > On Tue, Oct 30, 2007 at 03:15:03PM +0000, Jonas Alves wrote: > > On 30/10/2007, Jonathan Rockway <[EMAIL PROTECTED]> wrote: > > > Jonas Alves wrote: > > > > Hi, > > > > > > > > I want my dbic components to be able to extend the ResultSet by adding > > > > base classes when they are loaded. > > > > > > How about: > > > > > > package MyApp::ResultSet::FooAndBar > > > use base qw/MyApp::ResultSet::Foo MyApp::ResultSet::Bar/; > > > 1; > > > > > > If you want something more dynamic: > > > > > > package MyApp::RS::Base; > > > use Moose; > > > extends 'DBIx::Class::ResultSet'; > > > 1; > > > > > > package MyApp::RS::Role::Foo; > > > use Moose::Role; > > > sub foo { } > > > 1; > > > > > > <same idea for bar> > > > > > > Then you can say: > > > > > > __PACKAGE__->resultset_class('MyApp::RS::Base'); > > > __PACKAGE__->resultset_class->meta->apply_role('MyApp::RS::Role::Foo'); > > > > > > Have I tested any of this? No. YMMV. > > > > > > (Dynamically building classes at runtime is probably a Bad Idea anyway. > > > I suggest just going with the inheritance method shown first; just > > > create a separate RS class for each case where you need one.) > > > > > > Regards, > > > Jonathan Rockway > > > > > > > Hi Jonathan, > > I really like your Moose approach, but i would like a solution that > > just require the user to load_component my extensions and with that > > get the ResultSet methods for free. > > I think the idea of his approach was your common class would generate the > resultset_class invocation. > > That's exactly how resultset plugins are going to work once DBIC goes > Moose. >
Yes, I understood. :) But DBIx::Class::ResultSet doesn't use Moose yet, and I don't control the schemas where my extensions will be used. They might have user defined ResultSets already set and I can't simply discard them. I can however distribute a ResultSet base class like the one Jonathan suggests, then at runtime I can inject that base class in the user defined ResultSets and after that apply my roles to it. Is this a better approach? Thanks a lot -- Jonas _______________________________________________ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/[EMAIL PROTECTED]