8
votes

Comment puis-je ranger DBIX :: Classe :: Schema :: Sortie de Loader?

Nous introduisons actuellement DBIX :: Classe Dans notre équipe et nous aimerions commencer avec DBIX :: Classe :: Schéma :: Chargeur . Cependant, nous avons des exigences difficiles sur le style de code, c'est-à-dire que nous avons Perl :: Tidy Dans le cadre de notre script pré-commist, car nous n'avons pas eu généré code avant. Nous devrions nous assurer que le code que schéma :: chargeur génère est propre et bien rangé. Nous ne pouvons pas exécuter perltidy sur le code avant de commenter, car il visse le hachage MD5 de DBIC. Donc, un post-processeur intégré dans schéma :: chargeur serait mon préféré et probablement la seule solution réalisable. Mais toujours: comment géreriez-vous ce problème?

Modifier Je pourrais aussi bien PATCH DBIX :: Classe :: Schema :: Chargeur :: Base Pour utiliser un Perltidy Preprocess Paramètre s'il en reçoit un.


0 commentaires

3 Réponses :


3
votes

La version de développement de DBICSL propose désormais une option Overwrite_Modifications que vous pouvez utiliser pour ignorer les modifications dans les parties MD5AMED du code. Cela devrait vous laisser courir Perltidy sur la sortie avant de la valider et pour toujours être en mesure de renverser plus tard.


0 commentaires

3
votes

0.05000 a été publié (auparavant la version de développement), il a ajouté les rbuels d'option sur écrase_modifications.

Je vais essayer d'ajouter une option Post_Process aussi bien.


0 commentaires

2
votes

Cette question a été posée il y a quelque temps, mais je devais m'occuper de cela aujourd'hui, alors je pensais que je partageais ma solution, sur la base des modifications apportées à ce module dans le temps étant. Si vous numérisez les documents de Perltidy pour --format-sauter, vous verrez que vous pouvez donner des instructions perltidy à propos duquel le code ne doit pas être rangé. Les marqueurs de début et d'extrémité sont # >> respectivement. Ainsi, les paramètres par défaut ressembleraient à ceci comme suit:

my %args = (                                                                                     
    components            => [ 'InflateColumn::DateTime', 'TimeStamp' ],                                                 
    debug                 => 1,                                                                  
    dump_directory        => './lib',                                                            
    filter_generated_code => sub {                                                               
        my ( $type, $class, $text ) = @_;                                                        
        return "#<<<\n$text#>>>";                                                                
    },                                                                                           
    generate_pod            => 0,                                                                
    naming                  => 'current',                                                        
    overwrite_modifications => 0,                                                                
    skip_load_external      => 1,                                                                
    use_moose               => 1,                                                                
    use_namespaces          => 1,                                                                
);                                                                                               

make_schema_at( 'My::Schema', \%args, [$dsn, $user, $pass] ); 


1 commentaires

C'est génial, merci!