X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FDeploymentHandler.pm;h=fc2ebad9a6614bddd16d6f331b499b97513ae701;hb=a66bf8996b0752451651ac09a060d991743a941d;hp=90baf41c90d87d14a194d47a3ef24241054612f4;hpb=698944cba16da3a301615a43a6b8735281cc363d;p=dbsrgits%2FDBIx-Class-DeploymentHandler.git diff --git a/lib/DBIx/Class/DeploymentHandler.pm b/lib/DBIx/Class/DeploymentHandler.pm index 90baf41..fc2ebad 100644 --- a/lib/DBIx/Class/DeploymentHandler.pm +++ b/lib/DBIx/Class/DeploymentHandler.pm @@ -7,9 +7,25 @@ use Moose; extends 'DBIx::Class::DeploymentHandler::Dad'; # a single with would be better, but we can't do that # see: http://rt.cpan.org/Public/Bug/Display.html?id=46347 -with 'DBIx::Class::DeploymentHandler::WithSqltDeployMethod', - 'DBIx::Class::DeploymentHandler::WithMonotonicVersions', - 'DBIx::Class::DeploymentHandler::WithStandardVersionStorage'; +with 'DBIx::Class::DeploymentHandler::WithApplicatorDumple' => { + interface_role => 'DBIx::Class::DeploymentHandler::HandlesDeploy', + class_name => 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator', + delegate_name => 'deploy_method', + attributes_to_assume => [qw(schema schema_version)], + attributes_to_copy => [qw( databases script_directory sql_translator_args )], + }, + 'DBIx::Class::DeploymentHandler::WithApplicatorDumple' => { + interface_role => 'DBIx::Class::DeploymentHandler::HandlesVersioning', + class_name => 'DBIx::Class::DeploymentHandler::VersionHandler::Monotonic', + delegate_name => 'version_handler', + attributes_to_assume => [qw( database_version schema_version to_version )], + }, + 'DBIx::Class::DeploymentHandler::WithApplicatorDumple' => { + interface_role => 'DBIx::Class::DeploymentHandler::HandlesVersionStorage', + class_name => 'DBIx::Class::DeploymentHandler::VersionStorage::Standard', + delegate_name => 'version_storage', + attributes_to_assume => ['schema'], + }; with 'DBIx::Class::DeploymentHandler::WithReasonableDefaults'; sub prepare_version_storage_install { @@ -28,6 +44,14 @@ sub install_version_storage { ); } +sub prepare_install { + $_[0]->prepare_deploy; + $_[0]->prepare_version_storage_install; +} + +# the following is just a hack so that ->version_storage +# won't be lazy +sub BUILD { $_[0]->version_storage } __PACKAGE__->meta->make_immutable; 1; @@ -42,9 +66,9 @@ __END__ my $s = My::Schema->connect(...); my $dh = DH->new({ - schema => $s, - databases => 'SQLite', - sqltargs => { add_drop_table => 0 }, + schema => $s, + databases => 'SQLite', + sql_translator_args => { add_drop_table => 0 }, }); $dh->prepare_install; @@ -57,9 +81,9 @@ or for upgrades: my $s = My::Schema->connect(...); my $dh = DH->new({ - schema => $s, - databases => 'SQLite', - sqltargs => { add_drop_table => 0 }, + schema => $s, + databases => 'SQLite', + sql_translator_args => { add_drop_table => 0 }, }); $dh->prepare_upgrade(1, 2); @@ -115,11 +139,11 @@ C extends L, so that's probably the first place to look when you are trying to figure out how everything works. -Next would be to look at all the roles that fill in the blanks that +Next would be to look at all the pieces that fill in the blanks that L expects to be filled. They would be -L, -L, -L, and +L, +L, +L, and L. =method prepare_version_storage_install @@ -129,6 +153,13 @@ L. Creates the needed C<.sql> file to install the version storage and not the rest of the tables +=method prepare_install + + $dh->prepare_install + +First prepare all the tables to be installed and the prepare just the version +storage + =method install_version_storage $dh->install_version_storage @@ -137,18 +168,43 @@ Install the version storage and not the rest of the tables =head1 THIS SUCKS -You started your project and weren't using DBICDH? FOOL! Lucky for you I had -you in mind when I wrote this doc <3 +You started your project and weren't using C? +Lucky for you I had you in mind when I wrote this doc. -First off, you'll want to just install the version_storage: +First off, you'll want to just install the C: my $s = My::Schema->connect(...); - my $dh = DeployHandler({ schema => $s }); + my $dh = DBIx::Class::DeploymentHandler->({ schema => $s }); $dh->prepare_version_storage_install; $dh->install_version_storage; -Then, bump your schema version, and you can use DBICDH like normal! +Then set your database version: + + $dh->add_database_version({ version => $s->version }); + +Now you should be able to use C like normal! + +=head1 LOGGING + +This is a complex tool, and because of that sometimes you'll want to see +what exactly is happening. The best way to do that is to use the built +in logging functionality. Currently three of the standard five log levels +are used; C, C, and C. Info will typically just print +out when methods that actually change things along with the most important +args to the method. Debug will give you a little bit more information, +for example debug will currently tell you which files are being run when +a migration is being called. Trace of course goes even further. It will +actually give you the SQL or Perl code being executed when a migration is run. + +To enable the various logging levels all you need to do is set some environment +variables: C, C, and C. Each level +can be set on it's own, so you can turn on trace without turning on info. + +Lastly, the logging uses L, so if you have already set up an +application-wide logger this will use that logger instead, and the environment +variables will be completely ignored (unless you did something weird like +set your logger to log when the above environment variables are set.) =head1 DONATIONS @@ -158,7 +214,6 @@ because I love it. Instead, consider donating to someone who might actually need it. Obviously you should do research when donating to a charity, so don't just take my word -on this. I like -L<Children's Survival Fund>, -but there are a host of other charities that can do much more good than I will -with your money. +on this. I like Children's Survival Fund: +L, but there are a host of other +charities that can do much more good than I will with your money.