[Catalyst-commits] r6317 - trunk/Catalyst-Model-DBIC-Schema
bricas at dev.catalyst.perl.org
bricas at dev.catalyst.perl.org
Thu Apr 26 19:20:26 GMT 2007
Author: bricas
Date: 2007-04-26 19:20:25 +0100 (Thu, 26 Apr 2007)
New Revision: 6317
Added:
trunk/Catalyst-Model-DBIC-Schema/README
Removed:
trunk/Catalyst-Model-DBIC-Schema/Build.PL
Modified:
trunk/Catalyst-Model-DBIC-Schema/Changes
trunk/Catalyst-Model-DBIC-Schema/Makefile.PL
Log:
switch to Module::Install
Deleted: trunk/Catalyst-Model-DBIC-Schema/Build.PL
===================================================================
--- trunk/Catalyst-Model-DBIC-Schema/Build.PL 2007-04-26 17:59:02 UTC (rev 6316)
+++ trunk/Catalyst-Model-DBIC-Schema/Build.PL 2007-04-26 18:20:25 UTC (rev 6317)
@@ -1,25 +0,0 @@
-use strict;
-use Module::Build;
-
-my %arguments = (
- license => 'perl',
- module_name => 'Catalyst::Model::DBIC::Schema',
- requires => {
- 'DBIx::Class' => 0.07000,
- 'Catalyst' => 5.64,
- 'UNIVERSAL::require' => 0.10,
- 'Class::Data::Accessor' => 0.02,
- 'Class::Accessor::Fast' => 0.22,
- },
- recommends => {
- 'Catalyst::Devel' => 1.0,
- 'DBIx::Class::Schema::Loader' => 0.03006,
- },
- build_requires => {
- 'Test::More' => 0.32,
- },
- create_makefile_pl => 'passthrough',
- create_readme => 1,
-);
-
-Module::Build->new(%arguments)->create_build_script;
Modified: trunk/Catalyst-Model-DBIC-Schema/Changes
===================================================================
--- trunk/Catalyst-Model-DBIC-Schema/Changes 2007-04-26 17:59:02 UTC (rev 6316)
+++ trunk/Catalyst-Model-DBIC-Schema/Changes 2007-04-26 18:20:25 UTC (rev 6317)
@@ -2,6 +2,7 @@
0.19 XXX Not yet released
- Fix for rt.cpan.org #22426
+ - Switch to Module::Install
0.18 Tue Aug 8 04:34:42 UTC 2006
- Version bump for public release, no functional change
Modified: trunk/Catalyst-Model-DBIC-Schema/Makefile.PL
===================================================================
--- trunk/Catalyst-Model-DBIC-Schema/Makefile.PL 2007-04-26 17:59:02 UTC (rev 6316)
+++ trunk/Catalyst-Model-DBIC-Schema/Makefile.PL 2007-04-26 18:20:25 UTC (rev 6317)
@@ -1,31 +1,19 @@
-# Note: this file was auto-generated by Module::Build::Compat version 0.03
-
- unless (eval "use Module::Build::Compat 0.02; 1" ) {
- print "This module requires Module::Build to install itself.\n";
-
- require ExtUtils::MakeMaker;
- my $yn = ExtUtils::MakeMaker::prompt
- (' Install Module::Build now from CPAN?', 'y');
-
- unless ($yn =~ /^y/i) {
- die " *** Cannot install without Module::Build. Exiting ...\n";
- }
-
- require Cwd;
- require File::Spec;
- require CPAN;
-
- # Save this 'cause CPAN will chdir all over the place.
- my $cwd = Cwd::cwd();
-
- CPAN::Shell->install('Module::Build::Compat');
- CPAN::Shell->expand("Module", "Module::Build::Compat")->uptodate
- or die "Couldn't install Module::Build, giving up.\n";
-
- chdir $cwd or die "Cannot chdir() back to $cwd: $!";
- }
- eval "use Module::Build::Compat 0.02; 1" or die $@;
-
- Module::Build::Compat->run_build_pl(args => \@ARGV);
- require Module::Build;
- Module::Build::Compat->write_makefile(build_class => 'Module::Build');
+use inc::Module::Install 0.65;
+
+name 'Catalyst-Model-DBIC-Schema';
+all_from 'lib/Catalyst/Model/DBIC/Schema.pm';
+
+requires 'DBIx::Class' => '0.07000';
+requires 'Catalyst::Runtime' => '5.70';
+requires 'UNIVERSAL::require' => '0.10';
+requires 'Class::Data::Accessor' => '0.02';
+requires 'Class::Accessor::Fast' => '0.22';
+requires 'Test::More';
+
+feature 'Catalyst::Helper support',
+ -default => 0,
+ 'Catalyst::Devel' => '1.0',
+ 'DBIx::Class::Schema::Loader' => '0.03006';
+
+auto_install;
+WriteAll;
Added: trunk/Catalyst-Model-DBIC-Schema/README
===================================================================
--- trunk/Catalyst-Model-DBIC-Schema/README (rev 0)
+++ trunk/Catalyst-Model-DBIC-Schema/README 2007-04-26 18:20:25 UTC (rev 6317)
@@ -0,0 +1,232 @@
+NAME
+ Catalyst::Model::DBIC::Schema - DBIx::Class::Schema Model Class
+
+SYNOPSIS
+ Manual creation of a DBIx::Class::Schema and a
+ Catalyst::Model::DBIC::Schema:
+
+ 1. Create the DBIx:Class schema in MyApp/Schema/FilmDB.pm:
+
+ package MyApp::Schema::FilmDB;
+ use base qw/DBIx::Class::Schema/;
+
+ __PACKAGE__->load_classes(qw/Actor Role/);
+
+ 2. Create some classes for the tables in the database, for example an
+ Actor in MyApp/Schema/FilmDB/Actor.pm:
+
+ package MyApp::Schema::FilmDB::Actor;
+ use base qw/DBIx::Class/
+
+ __PACKAGE__->load_components(qw/Core/);
+ __PACKAGE__->table('actor');
+
+ ...
+
+ and a Role in MyApp/Schema/Role.pm:
+
+ package MyApp::Schema::FilmDB::Role;
+ use base qw/DBIx::Class/
+
+ __PACKAGE__->load_components(qw/Core/);
+ __PACKAGE__->table('role');
+
+ ...
+
+ Notice that the schema is in MyApp::Schema, not in MyApp::Model.
+ This way it's usable as a standalone module and you can test/run it
+ without Catalyst.
+
+ 3. To expose it to Catalyst as a model, you should create a DBIC Model
+ in MyApp/Model/FilmDB.pm:
+
+ package MyApp::Model::FilmDB;
+ use base qw/Catalyst::Model::DBIC::Schema/;
+
+ __PACKAGE__->config(
+ schema_class => 'MyApp::Schema::FilmDB',
+ connect_info => [
+ "DBI:...",
+ "username",
+ "password",
+ {AutoCommit => 1}
+ ]
+ );
+
+ See below for a full list of the possible config parameters.
+
+ Now you have a working Model, accessing your separate DBIC Schema. Which
+ can be used/accessed in the normal Catalyst manner, via $c->model():
+
+ my $actor = $c->model('FilmDB::Actor')->find(1);
+
+ You can also use it to set up DBIC authentication with
+ Authentication::Store::DBIC in MyApp.pm:
+
+ package MyApp;
+
+ use Catalyst qw/... Authentication::Store::DBIC/;
+
+ ...
+
+ __PACKAGE__->config->{authentication}{dbic} = {
+ user_class => 'FilmDB::Actor',
+ user_field => 'name',
+ password_field => 'password'
+ }
+
+ "$c->model()" returns a DBIx::Class::ResultSet for the source name
+ parameter passed. To find out more about which methods can be called on
+ a ResultSet, or how to add your own methods to it, please see the
+ ResultSet documentation in the DBIx::Class distribution.
+
+ Some examples are given below:
+
+ # to access schema methods directly:
+ $c->model('FilmDB')->schema->source(...);
+
+ # to access the source object, resultset, and class:
+ $c->model('FilmDB')->source(...);
+ $c->model('FilmDB')->resultset(...);
+ $c->model('FilmDB')->class(...);
+
+ # For resultsets, there's an even quicker shortcut:
+ $c->model('FilmDB::Actor')
+ # is the same as $c->model('FilmDB')->resultset('Actor')
+
+ # To get the composed schema for making new connections:
+ my $newconn = $c->model('FilmDB')->composed_schema->connect(...);
+
+ # Or the same thing via a convenience shortcut:
+ my $newconn = $c->model('FilmDB')->connect(...);
+
+ # or, if your schema works on different storage drivers:
+ my $newconn = $c->model('FilmDB')->composed_schema->clone();
+ $newconn->storage_type('::LDAP');
+ $newconn->connection(...);
+
+ # and again, a convenience shortcut
+ my $newconn = $c->model('FilmDB')->clone();
+ $newconn->storage_type('::LDAP');
+ $newconn->connection(...);
+
+DESCRIPTION
+ This is a Catalyst Model for DBIx::Class::Schema-based Models. See the
+ documentation for Catalyst::Helper::Model::DBIC::Schema for information
+ on generating these Models via Helper scripts.
+
+CONFIG PARAMETERS
+ schema_class
+ This is the classname of your DBIx::Class::Schema Schema. It needs
+ to be findable in @INC, but it does not need to be inside the
+ "Catalyst::Model::" namespace. This parameter is required.
+
+ connect_info
+ This is an arrayref of connection parameters, which are specific to
+ your "storage_type" (see your storage type documentation for more
+ details).
+
+ This is not required if "schema_class" already has connection
+ information defined inside itself (which isn't highly recommended,
+ but can be done)
+
+ For DBIx::Class::Storage::DBI, which is the only supported
+ "storage_type" in DBIx::Class at the time of this writing, the
+ parameters are your dsn, username, password, and connect options
+ hashref.
+
+ If you need to specify the DBIx::Class::Storage::DBI specific
+ parameter "on_connect_do", or the related "sql_maker" options
+ "limit_dialect", "quote_char", or "name_sep", you can place these
+ options into a hashref as the final element of the "connect_info"
+ arrayref. If in doubt, don't specify these options. You would know
+ it if you needed them.
+
+ Examples:
+
+ connect_info => [ 'dbi:Pg:dbname=mypgdb', 'postgres', '' ],
+
+ connect_info => [
+ 'dbi:SQLite:dbname=foo.db',
+ {
+ on_connect_do => [
+ 'PRAGMA synchronous = OFF',
+ ],
+ }
+ ],
+
+ connect_info => [
+ 'dbi:Pg:dbname=mypgdb',
+ 'postgres',
+ '',
+ { AutoCommit => 0 },
+ {
+ on_connect_do => [
+ 'some SQL statement',
+ 'another SQL statement',
+ ],
+ }
+ ],
+
+ storage_type
+ Allows the use of a different "storage_type" than what is set in
+ your "schema_class" (which in turn defaults to "::DBI" if not set in
+ current DBIx::Class). Completely optional, and probably unnecessary
+ for most people until other storage backends become available for
+ DBIx::Class.
+
+METHODS
+ new Instantiates the Model based on the above-documented ->config
+ parameters. The only required parameter is "schema_class".
+ "connect_info" is required in the case that "schema_class" does not
+ already have connection information defined for it.
+
+ schema
+ Accessor which returns the connected schema being used by the this
+ model. There are direct shortcuts on the model class itself for
+ schema->resultset, schema->source, and schema->class.
+
+ composed_schema
+ Accessor which returns the composed schema, which has no connection
+ info, which was used in constructing the "schema" above. Useful for
+ creating new connections based on the same schema/model. There are
+ direct shortcuts from the model object for composed_schema->clone
+ and composed_schema->connect
+
+ clone
+ Shortcut for ->composed_schema->clone
+
+ connect
+ Shortcut for ->composed_schema->connect
+
+ source
+ Shortcut for ->schema->source
+
+ class
+ Shortcut for ->schema->class
+
+ resultset
+ Shortcut for ->schema->resultset
+
+ storage
+ Provides an accessor for the connected schema's storage object. Used
+ often for debugging and controlling transactions.
+
+SEE ALSO
+ General Catalyst Stuff:
+
+ Catalyst::Manual, Catalyst::Test, Catalyst::Request, Catalyst::Response,
+ Catalyst::Helper, Catalyst,
+
+ Stuff related to DBIC and this Model style:
+
+ DBIx::Class, DBIx::Class::Schema, DBIx::Class::Schema::Loader,
+ Catalyst::Helper::Model::DBIC::Schema
+
+AUTHOR
+ Brandon L Black, "blblack at gmail.com"
+
+COPYRIGHT
+ This program is free software, you can redistribute it and/or modify it
+ under the same terms as Perl itself.
+
More information about the Catalyst-commits
mailing list