I'm just posting this here because I found it surprisingly difficult to get the information I needed but maybe my Google-Fu wasn't good today.
If you want to use Moose Roles in DBIC Result classes, all you need to do is make your Result class look like this:
package MyApp::Schema::Result::Foo;
use strict;
use warnings;
use Moose;
use MooseX::NonMoose;
use MooseX::MarkAsMethods autoclean => 1;
extends 'DBIx::Class::Core';
### all the usual __PACKAGE__->table etc stuff goes in here ###
# and as always with Moose classes
__PACKAGE__->meta->make_immutable;
1;
Your Schema class should look like this:
package Test::Schema;
use Moose;
use MooseX::MarkAsMethods autoclean => 1;
extends 'DBIx::Class::Schema';
__PACKAGE__->load_namespaces;
__PACKAGE__->meta->make_immutable(inline_constructor => 0);
1;
You can use dbicdump to create files using Moose with the
-o use_moose=1
option or just modify your existing classes as outlined above.
For more information, check out the docs for DBIx-Class-Schema-Loader