Hah! You're right! It does work.

It was just me failing to realize that the errors were actually thrown at
load time, not inflate time. The problem is putting a "dumb" under
MyApp::Schema::Result:: because DBIx::Class will try to load and initialize
it as a normal result class during DBIx::Class::Schema->load_namespaces().

Putting the dumb result class outside the MyApp::Schema::Result:: namespace
works just fine.

Thanks for your help both of you.

/L

On Thu, Apr 9, 2015 at 5:34 PM, Dmitry L. <dim0...@gmail.com> wrote:

> Strange. Your example just works for me.
> I tried it with DBIC example ( DBIx::Class::Manual::Example ) without
> any changes, just copy-paste.
>
> And yes, I use the latest DBIC.
>
> On 9 April 2015 at 16:58, Lasse Makholm <la...@unity3d.com> wrote:
> > I'm using DBIx::Class::ResultClass::HashRefInflator in some places where
> > full row object inflation is too slow. That's fine.
> >
> > What I'd really like to do though, is bless the resulting hashrefs into a
> > "light weight" result class that provides a few convenience methods but
> > knows little to nothing about DBIx::Class.
> >
> > Trying something like:
> >
> > my $rs = $schema->resultset('MyTable')->search(...);
> > $rs->result_class('MyApp::Schema::DumbResult::MyTable');
> > while (my $thingy = $rs->next) {
> >
> > # do, do, do
> >
> > }
> >
> >
> > with something like:
> >
> > package MyApp::Schema::DumbResult::MyTable;
> >
> > use strict;
> > use warnings;
> >
> > use DBIx::Class::ResultClass::HashRefInflator;
> >
> > sub inflate_result
> > {
> > my $class = shift;
> > my $result =
> DBIx::Class::ResultClass::HashRefInflator->inflate_result(@_);
> > return bless $result, $class;
> > }
> >
> > sub TO_JSON
> > {
> > my $self = shift;
> > return { %$self };
> > }
> >
> > 1;
> >
> >
> > ...breaks for a variety of reasons it seems, because DBIx::Class wants
> to do
> > things like setting a result source instance on the result object, etc...
> >
> > Is there an (easy) make this work? Or is it just in general a horrible
> idea?
> >
> > Of course I can just do:
> >
> > $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
> > my @stuff = map { bless $_, MyApp::Schema::DumbResult::MyTable }
> $rs->all;
> >
> > ...but the other way is more convenient...
> >
> > Or is it more sane to subclass the ResultSet and override first(), all()
> and
> > next() to set the result_class and bless the resulting hashrefs?
> >
> > Any input appreciated?
> >
> > /L
> >
> >
> >
> > _______________________________________________
> > List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
> > IRC: irc.perl.org#dbix-class
> > SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
> > Searchable Archive:
> > http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
>
>
>
> --
> //wbr, Dmitry L.
>
> _______________________________________________
> List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
> Searchable Archive:
> http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
>
_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk

Reply via email to