[Dbix-class] Schema Components

Darius Jokilehto dariusjokilehto at yahoo.co.uk
Mon Sep 19 09:30:12 GMT 2016


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


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


More information about the DBIx-Class mailing list