package Foo;
use Moose -traits => 'MooseX::NonMoose::Meta::Role::Class';
# or
package My::Moose;
use Moose ();
use Moose::Exporter;
Moose::Exporter->setup_import_methods;
sub init_meta {
shift;
my %options = @_;
Moose->init_meta(%options);
Moose::Util::MetaRole::apply_metaclass_roles(
for_class => $options{for_class},
metaclass_roles => ['MooseX::NonMoose::Meta::Role::Class'],
);
return Moose::Util::find_meta($options{for_class});
}
This trait implements everything involved with extending non-Moose
classes, other than doing the actual inlining at
"make_immutable" time. See
MooseX::NonMoose for more details.