[Catalyst] Reaction Development?
John Napiorkowski
jjn1056 at yahoo.com
Tue Feb 6 15:33:37 GMT 2007
--- Jason Kohles <email at jasonkohles.com> wrote:
> On Feb 5, 2007, at 5:58 PM, John Napiorkowski wrote:
>
> > Hi,
> >
> > Is there a test suite for Reaction other than the
> > sample application at the source control site?
> > Because I have a patch to fix a problem with the
> DBIC
> > action reflector not properly creating actions for
> > DBIC classes in a deep hierarchy (like
> > myschema::membership::members) but since I could
> never
> > get the sample app to run I can't write a test for
> the
> > problem (and I know a patch without a test won't
> be
> > accepted).
> >
> Any chance you could share the patch even though it
> doesn't have
> tests yet? I've been looking for this bug off and
> on for the last
> three or four days, it's been driving me crazy...
Not sure if this is the same bug as what is causing
you trouble. My problem is when I have 'deep'
hierarchies under my DBIC Schema, something like:
/myapplib
/Schema
db.pm, # inheriting from DBIx::Class::Schema
/db
/membership
members.pm #inherit from DBIx::Class
so the package name for that "members.pm" file would
be something like:
package myapplib::Schema::db::membership::members;
I found the actions that the action reflector would
create would look something like:
catapp::Model::Action::Createmembers
catapp::Model::Action::Deletemembers
catapp::Model::Action::Updatemembers
Which was bad because then when I tried to access the
create/delete/update actions I'd get an error, since
it wasn't properly linked to my real model name space.
I made a very small change in ...DBIC::ActionReflector
and got:
catapp::Model::Action::Createmembership::members
catapp::Model::Action::Deletemembership::members
catapp::Model::Action::Updatemembership::members
which worked for me :)
I'm still not sure this is totally correct. I think
I'd personally prefer:
catapp::Model::Action::Create::membership::members
catapp::Model::Action::Delete::membership::members
catapp::Model::Action::Update::membership::members
Instead, but I guess there's a good reason it's not
this way.
One thing I'm not sure about is if I should regex to
remove all the "::" to something like:
catapp::Model::Action::Createmembership-members
catapp::Model::Action::Deletemembership-members
catapp::Model::Action::Updatemembership-members
I tried that and it still worked for me, but again I
am not knowledgeable enough to know what is best.
Here's my patch; hope it helps, or at least starts to
help (also attached):
Index: InterfaceModel/Action/DBIC/ActionReflector.pm
===================================================================
--- InterfaceModel/Action/DBIC/ActionReflector.pm
(revision 282)
+++ InterfaceModel/Action/DBIC/ActionReflector.pm
(working copy)
@@ -37,8 +37,8 @@
implements reflect_actions_for => as {
my ($self, $class, $reflected_prefix) = @_;
foreach my $action ( keys %{
$self->reflect_action_types } ) {
- my @stem_parts = split('::', $class);
- my $last_part = pop(@stem_parts);
+ my $base_schema =
$class->result_source_instance->schema();
+ my ($last_part) =
$class=~/$base_schema\:\:(.+?)$/;
my $action_class =
"${reflected_prefix}::${action}${last_part}";
$self->reflect_action_for($class,
$action_class, $action);
}
____________________________________________________________________________________
Never Miss an Email
Stay connected with Yahoo! Mail on your mobile. Get started!
http://mobile.yahoo.com/services?promote=mail
-------------- next part --------------
A non-text attachment was scrubbed...
Name: reaction.patch
Type: application/octet-stream
Size: 784 bytes
Desc: 2107148715-reaction.patch
Url : http://lists.scsys.co.uk/pipermail/catalyst/attachments/20070206/e411d1af/reaction.obj
More information about the Catalyst
mailing list