[Dbix-class] Schema Components

Darius Jokilehto dariusjokilehto at yahoo.co.uk
Tue Sep 20 13:02:28 GMT 2016


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 <dave at 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 <dariusjokilehto at 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 <dave at 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

 
   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.scsys.co.uk/pipermail/dbix-class/attachments/20160920/2de5e881/attachment.htm>


More information about the DBIx-Class mailing list