moose

Moose Triggers Not Firing When Using DBIX::Class

I am new to Moose and am trying to use it with DBIx::Class. Basic DBIC querying and updating work find, but any trigger I attempt to write does not get executed when I modify an attribute. use Modern::Perl; use Data::Dumper; my $schema = My::Schema->connect(<connect str>, <usr>, <psw>) or die $!; my $rs = $schema->resultset('Isin')->s...

How do I reduce number of redundant requests with mod_perl properly?

In a fairly big legacy project, I've refactored several hairy modules into Moose classes. Each of these modules requires database access to (lazy) fetch its attributes. Since those objects are used pretty heavily, I want to reduce the number of redundant requests, for example for unchanged data. Now, how do I do that properly? I've got ...

How can I access a method of the consumer class inside a method created at runtime in a method of the parameterized role using Moose with Perl?

I define a method inside a parametrized role that needs to create a new class at run time using Moose::Meta::Class->create and apply that exact parametrized role to it. I am also making a new method for that role using $new_class->meta->add_method( some_name => sub { my ($self) = @_; ... }) inside the sub {...} I want to access a...

How do I make a new Moose class and instantiate an object of that class at runtime?

After creating a metaclass using Moose::Meta::Class->create, how do I instantiate a real Moose class with that class as a metaclass? (I need to create the metaclass also because I also want to apply some roles to it.) ...

How do you replace a method of a Moose object at runtime?

Is it possible to replace a method of a Moose object at runtime ? By looking at the source code of Class::MOP::Method (which Moose::Meta::Method inherits from) I concluded that by doing $method->{body} = sub{ my stuff } I would be able to replace at runtime a method of an object. I can get the method using $object->meta->find_meth...

Can I pass a regex to isa() with Moose-based objects?

Can I use isa in Moose with a regex as a parameter ? If not possible can I achieve the same thing with someothing other than ->isa ? ok, having the following types Animal::Giraffe , Animal::Carnivore::Crocodile , I want to do ->isa(/^Animal::/), can I do that ? if I can't, what can I use to reach the desired effect ? ...

Is the performance hit with using MooseX::Declare mainly encountered during startup?

Is the performance hit with using MooseX::Declare mainly encountered while it does its initial magic (i.e. "translating" the definition into standard Perl syntax)? i.e. once the compile and initial runtime setup is complete, is there a performance difference in calling a MooseX::Declare method vs a method defined via traditional declarat...

Is there a simple way to test if a Moose attribute is read-only?

I currently use a block eval to test that I've set an attribute as read-only. Is there a simpler way to do this? Example from working code: #Test that sample_for is ready only eval { $snp_obj->sample_for('t/sample_manifest2.txt');}; like($@, qr/read-only/xms, "'sample_for' is read-only"); UPDATE Thanks to friedo, Ether, and Robert P...

Moose: Loading object from file in the BUILD method

I have to read a file in the BUILD method and I want to use the load method of the MooseX::Storage package. But this load method create a new object and so when I instatiate the object this isn’t the object read from file. In the code below I create an object $m1 with state 2 to write the file, I create $m2 with no parameter to read the...

How do I represent a mixin/role/trait with UML properly?

Me and several other developers are currently cleaning up our legacy code base, mostly separating visual and data layers. To help developers not involved in this refactoring understand the model, I'd like to introduce a (rather informal) class diagram with comments about scope and desired usage for each class. Since I'm lazy, I'd like to...

Rebuilding lazily-built attribute when an underlying attribute changes in Moose

I've got a Moose class with a lazy_build attribute. The value of that attribute is a function of another (non-lazy) attribute. Suppose somebody instantiates the class with a value of 42 for the required attribute. Then they request the lazy attribute, which is calculated as a function of 42. Then, they have the nerve to change the first...

Moose::Error::Croak error reporting not from perspective of caller.

I just recently started out on Moose and its a great OO framework not only to use but also to learn new OO concepts. One of the things I wanted to do was to do error reporting from perspective of caller during object creation. I saw that Moose has the module Moose::Error::Croak which tells Moose to override the default error reporting by...

Problems installing Moose on Mac (compile Sub::Name prereq)

I'm trying to install Moose (a CPAN module) on my Macbook Pro. It finds a dependency on Sub-Name, and when it tries to install this, gets the following error messages. Any idea as to how I can cure this? XMATH/Sub-Name-0.04.tar.gz /usr/bin/make -- OK Running make test PERL_DL_NONLAZY=1 /opt/local/bin/perl "-MExtUtils::Command:...

How can I use Moose with Test::Class?

I'm currently refactoring a test suite built up by a colleague and would like to use Test::Class[::Most] while doing so. As I started I figured out I could really use a couple of Moose roles to decouple code a little bit. However, it seems it's not quite possible -- I'm getting error messages like this one: Prototype mismatch: sub My::T...

How to have Moose return a child class instance instead of its own class, for polymorphism

I want to create a generic class, whose builder would not return an instance of this generic class, but an instance of a dedicated child class. As Moose does automatic object building, I do not get to understand if this something possible, and how to create a Moose class with Moose syntax and having this behaviour. e.g.: The user asks:...

How do I compose an existing Moose role into a class at runtime?

Say I define an abstract My::Object and concrete role implementations My::Object::TypeA and My::Object::TypeB. For maintainability reasons, I'd like to not have a hardcoded table that looks at the object type and applies roles. As a DWIMmy example, I'm looking for something along these lines in My::Object: has => 'id' (isa => 'Str', req...

Perl Moose::Util::TypeConstraints bug ? what is this error about the name has invalid chars ?

That has been hours i am tracking a Moose::Util::TypeConstraints exceptions, i don't understand where it gets to check a type and tells me that the name is incorrect. I tracked the error to a reduced example to try to locate the problem, and it just shows me that i do not get it. Did i get to a Moose::Util::TypeConstraints bug ? aoffic...

Perl OO frameworks and program design - Moose and Conway's inside-out objects (Class::Std)

This is more of a use-case type of question... but also generic enough to be more broadly applicable: In short, I'm working on a module that's more or less a command-line wrapper; OO naturally. Without going into too many details (unless someone wants them), there isn't a crazy amount of complexity to the system, but it did feel natur...

Too many DB connection with mod_perl2 moose application

I have a mod_perl2 based web app that requires a connection to a mysql database. I have implemented the SQL connection specifics in a moose role. Simplified, the role looks as follows: package Project::Role::SQLConnection; use Moose::Role; use DBIx::Connector; has 'connection' => (is => 'rw', lazy_build => 1); has 'dbh' => (is => 'r...

Moose read-only Attribute Traits and how to set them?

How do I set a Moose read only attribute trait? package AttrTrait; use Moose::Role; has 'ext' => ( isa => 'Str', is => 'ro' ); package Class; has 'foo' => ( isa => 'Str', is => 'ro', traits => [qw/AttrTrait/] ); package main; my $c = Class->new( foo => 'ok' ); $c->meta->get_attribute('foo')->ext('die') # ro attr trait What is the pu...