8

DBIx::Class私たちは現在、私たちのチームに紹介していDBIx::Class::Schema::Loaderます。ただし、コード スタイルには厳しい要件があります。つまり、これまでコードを生成したことがないためPerl::Tidy、スクリプトの一部として取得する必要があります。pre-commitここで、Schema::Loader生成されるコードがクリーンで整頓されていることを確認する必要があります。perltidyDBIC の MD5 ハッシュが台無しになるため、コミット前にコードを実行することはできません。したがって、統合されたポストプロセッサSchema::Loaderが私の好みであり、おそらく唯一の実行可能なソリューションです。それでも、この問題をどのように処理しますか?

編集DBIx::Class::Schema::Loader::Baseパラメーターを取得した場合は、パラメーターを使用するようにパッチを適用することもできます。perltidy preprocess

4

3 に答える 3

3

0.05000 がリリースされました (以前は開発版でした)、overwrite_modifications オプション rbuels が追加されました。

post_process オプションも近いうちに追加しようと思います。

于 2010-02-01T12:50:51.197 に答える
3

DBICSL の開発バージョンには、コードの md5summed 部分の変更を無視するために使用できる overwrite_modifications オプションが追加されました。これにより、出力をコミットする前に perltidy を実行でき、後で再ダンプすることもできます。

于 2010-01-20T18:35:00.597 に答える
2

この質問は少し前に聞かれましたが、今日はこれに対処しなければならなかったので、当面このモジュールに加えられた変更に基づいて、解決策を共有したいと思いました。PerlTidyドキュメントで--format-skippingをスキャンすると、整理すべきでないコードについてPerlTidyに指示を与えることができることがわかります。開始マーカーと終了マーカーは、それぞれ#<<<と#>>>です。したがって、デフォルト設定は次のようになります。

# tidy my code
my $foo = 'bar';

#<<<
# don't tidy the code below
my $baz   =     'foo';

# start to tidy again
#>>>

$foo .= 'stuff';

それは簡単です。ここで、ローダーに生成されたコードをこれらのマーカーでラップさせる必要があります。これは次のようになります。

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] ); 

重要な部分はfilter_generated_code、生成されたコードをラップできるようにするです。これで、スキーマファイルを生成してもPerlTidyを実行できます。これにより、生成されたコードがmake_schema_at()以外の何かによって変更されたときに発生するエラーに遭遇することなく、生成されたファイルの下部に追加したカスタムコードを整理できます。

generate_pod私の場合、 PerlTidyがまだ(何らかの理由で)生成されたポッドにいくつかの改行を挿入していたため、オフにすることにしました。その理由はよくわかりませんが、ポッドをオフにすると修正され、ポッドなしで生活できます。

于 2012-12-13T02:48:27.640 に答える