Metamoose

18
Meta Moose Tuesday, September 18, 12

Transcript of Metamoose

Page 1: Metamoose

Meta MooseTuesday, September 18, 12

Page 2: Metamoose

About Me

Ynon [email protected] keynote is available at:http://ynonperek.com

Tuesday, September 18, 12

Page 3: Metamoose

Meta Who

KeynotePersonhas many

Tuesday, September 18, 12

Page 4: Metamoose

Meta Who

KeynotePersonhas many

Meta-Person Meta-Keynote

Tuesday, September 18, 12

Page 5: Metamoose

Meta Class

What can my class do ?What does my class know ?

Tuesday, September 18, 12

Page 6: Metamoose

Meta Zombie

package main;my $z = Zombie->new; while (chomp ( my $that = <> ) ) { my $m = Zombie->meta->find_method_by_name("eat_${that}"); $m->execute($z) if $m;}

Tuesday, September 18, 12

Page 7: Metamoose

Real Zombies...

Tuesday, September 18, 12

Page 8: Metamoose

Useful Meta

MooseX::HasDefaults::ROAssign a meta-role to every attribute which adds:is => ‘ro’

Uses _process_options

Tuesday, September 18, 12

Page 9: Metamoose

Useful Meta

MooseX::FollowPBPAutomatically set reader and writer to get_name and set_name

Tuesday, September 18, 12

Page 10: Metamoose

Useful Meta

MooseX::PrivacyPrivate Methods Using meta

Tuesday, September 18, 12

Page 11: Metamoose

MooseX::Privacyuse MooseX::Privacy; has config => ( is => 'rw', isa => 'Some::Config', traits => [qw/Private/],);

private_method foo => sub { return 23;};

Tuesday, September 18, 12

Page 12: Metamoose

A few more

MooseX::SingletonMooseX::YAML

package MyApp;use MooseX::Singleton; package main; my $instance = MyApp->instance;my $same = MyApp->instance;

Tuesday, September 18, 12

Page 13: Metamoose

Meta MeTuesday, September 18, 12

Page 14: Metamoose

What I Had

KeynoteVideoQuote

Tuesday, September 18, 12

Page 15: Metamoose

What I Need

KeynoteVideoQuote

admin/quote

admin/video

admin/keynote

Tuesday, September 18, 12

Page 16: Metamoose

The Meta Wayhas 'name', isa => 'Str', required => 1, in_db => 1, form_opts => { type => 'text_field'}; has 'description', isa => 'Str', required => 1, in_db => 1, form_opts => { type => 'textarea_field' }; has 'url', isa => 'Str', required => 1, in_db => 1, form_opts => { type => 'text_field'}; has 'category', isa => 'Str', default => '', in_db => 1, form_opts => { type => 'select_field', options => YPCourse::Category->get_categories, };

Tuesday, September 18, 12

Page 17: Metamoose

Q & A

Tuesday, September 18, 12