Skip to content

Instantly share code, notes, and snippets.

@kentfredric
Created August 24, 2009 15:02
Show Gist options
  • Save kentfredric/173920 to your computer and use it in GitHub Desktop.
Save kentfredric/173920 to your computer and use it in GitHub Desktop.
CatalystX::Declare::Controller::ActionPreparation->create_action(
attributes => { ActionClass => ["Catalyst::Action::Serialize"] },
class => "My::Controller::User",
code => sub { "???" },
name => "end",
namespace => "user",
"reverse" => "user/end",
);
CatalystX::Declare::Controller::ActionPreparation->_apply_action_roles(
bless({
attributes => { ActionClass => ["Catalyst::Action::Serialize"] },
class => "My::Controller::User",
code => sub { "???" },
name => "end",
namespace => "user",
"reverse" => "user/end",
}, "Catalyst::Action::Serialize"),
[]
);
CatalystX::Declare::Action::CatchValidationError->meta->apply( # meta resolves a Moose::Meta::Role
bless({
attributes => { ActionClass => ["Catalyst::Action::Serialize"] },
class => "My::Controller::User",
code => sub { "???" },
name => "end",
namespace => "user",
"reverse" => "user/end",
}, "Catalyst::Action::Serialize"),
);
#Catalyst::Action::Serialize is neither Moose::Meta::Class or Moose::Meta::Role, so
$application_class Moose::Meta::Role->application_to_instance_class;
$application_class == Moose::Meta::Role::Application::ToInstance;
Moose::Meta::Role::Application::ToInstance->new( )->apply( Moose::Meta::Role , Catalyst::Action::Serialize );
$anon_role_key = 'Catalyst::Action::SerializeCatalystX::Declare::Action::CatchValidationError'
# Moose::Meta::Application::ToClass
$self->SUPER::apply( Moose::Meta::Role instance, bless({
attribute_metaclass => "Class::MOP::Attribute",
attributes => {},
authority => \undef,
constructor_class => "Class::MOP::Method::Constructor",
constructor_name => "new",
destructor_class => undef,
immutable_trait => "Class::MOP::Class::Immutable::Trait",
instance_metaclass => "Class::MOP::Instance",
method_metaclass => "Class::MOP::Method",
methods => {},
namespace => \undef,
"package" => "Class::MOP::Class::__ANON__::SERIAL::26",
superclasses => \undef, #Note: No superclass
version => \undef,
"wrapped_method_metaclass" => "Class::MOP::Method::Wrapped",
}, "Class::MOP::Class"));
# Moose::Meta::Role::Application->()
$self->SUPER::apply( $role, $class );
# Moose::Meta::Role::Application::ToClass
$self->check_role_exlcusions( $role, $class );
# dies here in Moose::Meta::Role::Application::ToClass becuase
# $class is a Class::MOP::Class anonymous class with no parent. ( ie: no moose )
# to provide an excludes_role method.
if( $class->excludes_role( $role->name ) ) {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment