Hi Dave, Ah, right - I see what you mean. Maybe this is more what you're looking for: https://metacpan.org/pod/DBIx::Class::Helper::Schema::DateTime? Looking at the source it looks like the only special thing it really does is inherit from DBIx::Class::Schema. HTH,Darius
On Tuesday, 20 September 2016, 12:11, Dave Cross <d...@dave.org.uk> wrote: Hi Darius, Thanks. Yes, I'd seen that documentation. It's a little sparse and seems to be aimed at writing components which are loaded into Result classes (InflateColumn::DateTime, TimeStamp and stuff like that). I suspect (but I could, of course, be wrong) that components which are loaded into Schema objects would follow different rules. Cheers, Dave... Quoting Darius Jokilehto <dariusjokile...@yahoo.co.uk>: > Hello Dave, > This might be what you're looking for: > https://metacpan.org/pod/distribution/DBIx-Class/lib/DBIx/Class/Manual/Component.pod > Darius > > On Friday, 16 September 2016, 17:09, Dave Cross <d...@dave.org.uk> wrote: > > In the documentation of DBIx::Class::Schema::Loader::Base there is a > reference to adding "schema components"[1] to the generated classes. > But I can't find any documentation on how you might write such a > component - or any clearly-labelled examples of a schema component. > > I think I have an example of something that I'd like to write as a > schema component. Please either tell me that I'm wrong, or gently > nudge me in the right direction. > > Here's what I want to do. Recently I've found myself adding a useful > "get_schema()" method to many of my schema classes. It looks something > like this: > > sub get_schema { > my @errs; > > foreach (qw[XXX_DB XXX_DB_USER XXX_DB_PASS XXX_DB_HOST]) { > push @errs, $_ unless defined $ENV{$_}; > } > if (@errs) { > croak "You need to set the following environment variables: @errs\n"; > } > > return __PACKAGE__->connect( > "dbi:mysql:database=$ENV{XXX_DB};host=$ENV{XXX_DB_HOST}", > $ENV{XXX_DB_USER}, $ENV{XXX_DB_PASS}, > { mysql_enable_utf8 => 1 } > ); > } > > The "XXX" is a placeholder for some prefix that is meaningful to > whatever schema I'm working with and it will change with each project > (as will, potentially, the DBD name and the options hash). > > I've been copying the code into my schema classes, but we all know > what a Bad Idea that is. And a schema component seemed a > likely-looking approach for getting round that. I thought I could > write DBIx::Class::Component::GetSchema which adds the method to any > schema class that loads it. > > But, as I said above, I can't find any explanations or examples of > schema components that I can steal from. > > Does anyone have any suggestions? > > Cheers, > > Dave... > > [1] > https://metacpan.org/pod/DBIx::Class::Schema::Loader::Base#schema_components > > > > _______________________________________________ > 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
_______________________________________________ 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