Giter Club home page Giter Club logo

migrationbundle's Introduction

README

WARNING

DEVELOPMENT HAS MOVED TO claroline/Distribution. THIS REPOSITORY IS NO LONGER MAINTAINED.

Doctrine Migrations integration bundle providing :

  • Generation of migration classes on a per bundle basis
  • Generation for multiple target platforms
  • API allowing to execute migrations programmaticaly

Build Status

Installation

Install the bundle with composer:

composer require claroline/migration-bundle

Then add the bundle to your application kernel:

// app/AppKernel.php
<?php

use Symfony\Component\HttpKernel\Kernel;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Claroline\MigrationBundle\ClarolineMigrationBundle(),
        );
    }

    // ...
}

Commands

You can generate migrations for a specific bundle using:

php app/console claroline:migration:generate AcmeFooBundle

This command will create migration classes for all the available platforms in the Migrations directory of the bundle.

You can execute a migration using one of the following commands:

php app/console claroline:migration:upgrade AcmeFooBundle
php app/console claroline:migration:downgrade AcmeFooBundle

By default, both commands execute the nearest available migration version (relatively to the current/installed one), but you can specify another target using the --target option:

php app/console claroline:migration:downgrade AcmeFooBundle --target=20130101124512
php app/console claroline:migration:upgrade AcmeFooBundle --target=nearest
php app/console claroline:migration:upgrade AcmeFooBundle --target=farthest

where farthest means a full upgrade/downgrade.

The following command displays the list of available versions for a bundle and highlights the current/installed one:

php app/console claroline:migration:version AcmeFooBundle

Finally, you can delete generated migration classes which are above the current version of a bundle using:

php app/console claroline:migration:discard AcmeFooBundle

This last command is useful if you intend to "merge" several migration classes generated during development into a single migration class. In such a case, the steps to follow would be:

# downgrading to the newest version you want to keep
php app/console claroline:migration:downgrade AcmeFooBundle --target=20130101124512
# deleting everything above that version
php app/console claroline:migration:discard AcmeFooBundle
# generating a new migration class
php app/console claroline:migration:generate AcmeFooBundle

API

The whole API is accessible through the migration manager class:

<?php

$bundle = $container->get('kernel')->getBundle('AcmeFooBundle');
$container->get('claroline.migration.manager')->upgradeBundle($bundle, '20131201134501');

migrationbundle's People

Contributors

laurentgruber avatar maxailloud avatar netmisa avatar ngodfraind avatar stefk avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

migrationbundle's Issues

Remove LoggerTrait

There're several problems with the addition of the logger trait (@dbec4fa7273cf0769460fa3) in this bundle:

  • it creates a cyclic dependency with claroline/installation-bundle
  • that dependency isn't mentionned in the composer file (see build failures... https://travis-ci.org/claroline/MigrationBundle/builds)
  • the installation bundle itself depends on claroline/core-bundle, i.e. the whole claroline platform, while this bundle was meant to be -- and is -- used independently.

I suggest removing the reference to the installation bundle. There're other ways to make this bundle compatible with the psr logger used in the platform install process.

Create migration file when no table existing

I was trying to make just one migration file for the CoreBundle instead of 4, we don't have version yet so just one file is enough.

So I empty my database and launch:

php app/console claroline:migration:generate ClarolineCoreBundle

And here is what I get in return:

Generating migrations classes for 'ClarolineCoreBundle'...
 - Generating migration class for pdo_mysql driver...
     
  [InvalidArgumentException]                                                      
  Unable to find template "ClarolineMigrationBundle::migration_class.html.twig".  

  [Twig_Error_Loader]                                                             
  Unable to find template "ClarolineMigrationBundle::migration_class.html.twig". 
                               
  [Doctrine\DBAL\DBALException]                                                                                                             
  An exception occurred while executing 'SELECT t0.id AS id1, t0.name AS name2, t0.path AS path3, t0.plugin_id AS plugin_id4 FROM claro_th  
  eme t0 WHERE t0.path = ? LIMIT 1' with params ["ClarolineCoreBundle:less:claroline\/theme.html.twig"]:                                    
                                                                                                                                            
  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'claroline.claro_theme' doesn't exist 
                                       
  [PDOException]                                                                                   
  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'claroline.claro_theme' doesn't exist  

claroline:migration:generate bundle

I use verbose option and here is what I got:

Generating migrations classes for 'ClarolineCoreBundle'...
 - Generating migration class for pdo_mysql driver...
    
  [InvalidArgumentException]                                                      
  Unable to find template "ClarolineMigrationBundle::migration_class.html.twig".

Exception trace:
 () at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bridge/Twig/TwigEngine.php:133
 Symfony\Bridge\Twig\TwigEngine->load() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bridge/Twig/TwigEngine.php:53
 Symfony\Bridge\Twig\TwigEngine->render() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/TwigEngine.php:79
 Symfony\Bundle\TwigBundle\TwigEngine->render() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Debug/TimedTwigEngine.php:52
 Symfony\Bundle\TwigBundle\Debug\TimedTwigEngine->render() at /home/maxime/workspace/Claroline/vendor/claroline/migration-bundle/Claroline/MigrationBundle/Generator/Writer.php:66
 Claroline\MigrationBundle\Generator\Writer->writeMigrationClass() at /home/maxime/workspace/Claroline/vendor/claroline/migration-bundle/Claroline/MigrationBundle/Manager/Manager.php:69
 Claroline\MigrationBundle\Manager\Manager->generateBundleMigration() at /home/maxime/workspace/Claroline/vendor/claroline/migration-bundle/Claroline/MigrationBundle/Command/GenerateCommand.php:30
 Claroline\MigrationBundle\Command\GenerateCommand->execute() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:244
 Symfony\Component\Console\Command\Command->run() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:904
 Symfony\Component\Console\Application->doRunCommand() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:191
 Symfony\Component\Console\Application->doRun() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:96
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:121
 Symfony\Component\Console\Application->run() at /home/maxime/workspace/Claroline/app/console:16
      
  [Twig_Error_Loader]                                                             
  Unable to find template "ClarolineMigrationBundle::migration_class.html.twig".  

Exception trace:
 () at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Loader/FilesystemLoader.php:104
 Symfony\Bundle\TwigBundle\Loader\FilesystemLoader->findTemplate() at /home/maxime/workspace/Claroline/vendor/twig/twig/lib/Twig/Loader/Filesystem.php:138
 Twig_Loader_Filesystem->getCacheKey() at /home/maxime/workspace/Claroline/vendor/twig/twig/lib/Twig/Environment.php:273
 Twig_Environment->getTemplateClass() at /home/maxime/workspace/Claroline/vendor/twig/twig/lib/Twig/Environment.php:320
 Twig_Environment->loadTemplate() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bridge/Twig/TwigEngine.php:131
 Symfony\Bridge\Twig\TwigEngine->load() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bridge/Twig/TwigEngine.php:53
 Symfony\Bridge\Twig\TwigEngine->render() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/TwigEngine.php:79
 Symfony\Bundle\TwigBundle\TwigEngine->render() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Debug/TimedTwigEngine.php:52
 Symfony\Bundle\TwigBundle\Debug\TimedTwigEngine->render() at /home/maxime/workspace/Claroline/vendor/claroline/migration-bundle/Claroline/MigrationBundle/Generator/Writer.php:66
 Claroline\MigrationBundle\Generator\Writer->writeMigrationClass() at /home/maxime/workspace/Claroline/vendor/claroline/migration-bundle/Claroline/MigrationBundle/Manager/Manager.php:69
 Claroline\MigrationBundle\Manager\Manager->generateBundleMigration() at /home/maxime/workspace/Claroline/vendor/claroline/migration-bundle/Claroline/MigrationBundle/Command/GenerateCommand.php:30
 Claroline\MigrationBundle\Command\GenerateCommand->execute() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:244
 Symfony\Component\Console\Command\Command->run() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:904
 Symfony\Component\Console\Application->doRunCommand() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:191
 Symfony\Component\Console\Application->doRun() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:96
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:121
 Symfony\Component\Console\Application->run() at /home/maxime/workspace/Claroline/app/console:16
                                                                 
  [Doctrine\DBAL\DBALException]                                                                                                             
  An exception occurred while executing 'SELECT t0.id AS id1, t0.name AS name2, t0.path AS path3, t0.plugin_id AS plugin_id4 FROM claro_th  
  eme t0 WHERE t0.path = ? LIMIT 1' with params ["ClarolineCoreBundle:less:claroline\/theme.html.twig"]:                                    
                                                                                                                                            
  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'claroline.claro_theme' doesn't exist  

Exception trace:
 () at /home/maxime/workspace/Claroline/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php:91
 Doctrine\DBAL\DBALException::driverExceptionDuringQuery() at /home/maxime/workspace/Claroline/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:701
 Doctrine\DBAL\Connection->executeQuery() at /home/maxime/workspace/Claroline/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:748
 Doctrine\ORM\Persisters\BasicEntityPersister->load() at /home/maxime/workspace/Claroline/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php:197
 Doctrine\ORM\EntityRepository->findOneBy() at /home/maxime/workspace/Claroline/src/core/Claroline/CoreBundle/Library/Themes/ThemeService.php:71
 Claroline\CoreBundle\Library\Themes\ThemeService->findTheme() at /home/maxime/workspace/Claroline/src/core/Claroline/CoreBundle/Library/Templating/Loader/TemplateLocator.php:48
 Claroline\CoreBundle\Library\Templating\Loader\TemplateLocator->locate() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Loader/FilesystemLoader.php:94
 Symfony\Bundle\TwigBundle\Loader\FilesystemLoader->findTemplate() at /home/maxime/workspace/Claroline/vendor/twig/twig/lib/Twig/Loader/Filesystem.php:138
 Twig_Loader_Filesystem->getCacheKey() at /home/maxime/workspace/Claroline/vendor/twig/twig/lib/Twig/Environment.php:273
 Twig_Environment->getTemplateClass() at /home/maxime/workspace/Claroline/vendor/twig/twig/lib/Twig/Environment.php:320
 Twig_Environment->loadTemplate() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bridge/Twig/TwigEngine.php:131
 Symfony\Bridge\Twig\TwigEngine->load() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bridge/Twig/TwigEngine.php:53
 Symfony\Bridge\Twig\TwigEngine->render() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/TwigEngine.php:79
 Symfony\Bundle\TwigBundle\TwigEngine->render() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Debug/TimedTwigEngine.php:52
 Symfony\Bundle\TwigBundle\Debug\TimedTwigEngine->render() at /home/maxime/workspace/Claroline/vendor/claroline/migration-bundle/Claroline/MigrationBundle/Generator/Writer.php:66
 Claroline\MigrationBundle\Generator\Writer->writeMigrationClass() at /home/maxime/workspace/Claroline/vendor/claroline/migration-bundle/Claroline/MigrationBundle/Manager/Manager.php:69
 Claroline\MigrationBundle\Manager\Manager->generateBundleMigration() at /home/maxime/workspace/Claroline/vendor/claroline/migration-bundle/Claroline/MigrationBundle/Command/GenerateCommand.php:30
 Claroline\MigrationBundle\Command\GenerateCommand->execute() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:244
 Symfony\Component\Console\Command\Command->run() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:904
 Symfony\Component\Console\Application->doRunCommand() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:191
 Symfony\Component\Console\Application->doRun() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:96
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:121
 Symfony\Component\Console\Application->run() at /home/maxime/workspace/Claroline/app/console:16
                        
  [PDOException]                                                                                   
  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'claroline.claro_theme' doesn't exist 

Exception trace:
 () at /home/maxime/workspace/Claroline/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:693
 PDOStatement->execute() at /home/maxime/workspace/Claroline/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:693
 Doctrine\DBAL\Connection->executeQuery() at /home/maxime/workspace/Claroline/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php:748
 Doctrine\ORM\Persisters\BasicEntityPersister->load() at /home/maxime/workspace/Claroline/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php:197
 Doctrine\ORM\EntityRepository->findOneBy() at /home/maxime/workspace/Claroline/src/core/Claroline/CoreBundle/Library/Themes/ThemeService.php:71
 Claroline\CoreBundle\Library\Themes\ThemeService->findTheme() at /home/maxime/workspace/Claroline/src/core/Claroline/CoreBundle/Library/Templating/Loader/TemplateLocator.php:48
 Claroline\CoreBundle\Library\Templating\Loader\TemplateLocator->locate() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Loader/FilesystemLoader.php:94
 Symfony\Bundle\TwigBundle\Loader\FilesystemLoader->findTemplate() at /home/maxime/workspace/Claroline/vendor/twig/twig/lib/Twig/Loader/Filesystem.php:138
 Twig_Loader_Filesystem->getCacheKey() at /home/maxime/workspace/Claroline/vendor/twig/twig/lib/Twig/Environment.php:273
 Twig_Environment->getTemplateClass() at /home/maxime/workspace/Claroline/vendor/twig/twig/lib/Twig/Environment.php:320
 Twig_Environment->loadTemplate() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bridge/Twig/TwigEngine.php:131
 Symfony\Bridge\Twig\TwigEngine->load() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bridge/Twig/TwigEngine.php:53
 Symfony\Bridge\Twig\TwigEngine->render() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/TwigEngine.php:79
 Symfony\Bundle\TwigBundle\TwigEngine->render() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Debug/TimedTwigEngine.php:52
 Symfony\Bundle\TwigBundle\Debug\TimedTwigEngine->render() at /home/maxime/workspace/Claroline/vendor/claroline/migration-bundle/Claroline/MigrationBundle/Generator/Writer.php:66
 Claroline\MigrationBundle\Generator\Writer->writeMigrationClass() at /home/maxime/workspace/Claroline/vendor/claroline/migration-bundle/Claroline/MigrationBundle/Manager/Manager.php:69
 Claroline\MigrationBundle\Manager\Manager->generateBundleMigration() at /home/maxime/workspace/Claroline/vendor/claroline/migration-bundle/Claroline/MigrationBundle/Command/GenerateCommand.php:30
 Claroline\MigrationBundle\Command\GenerateCommand->execute() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:244
 Symfony\Component\Console\Command\Command->run() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:904
 Symfony\Component\Console\Application->doRunCommand() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:191
 Symfony\Component\Console\Application->doRun() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:96
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /home/maxime/workspace/Claroline/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:121
 Symfony\Component\Console\Application->run() at /home/maxime/workspace/Claroline/app/console:16

claroline:migration:generate bundle

How can I do that?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.