8

Gaufrette Stream Wrapper を使用して AsseticBundle にプロジェクト アセットをダンプする場所を伝えようとしていますが、アセットを認識させることができません。

これは、私の config_dev.yml の knp_gaufrette セクションがどのように見えるかです:

knp_gaufrette:
    adapters:
        dev_adapter:
            local:
                directory: /vagrant/test
                create: true

    filesystems:
        dev_adapter:
            adapter: dev_adapter

    stream_wrapper: ~

簡単なアクションを使用してラッパーをテストし、適切に登録され、正常に動作することを確認しました。

public function thanksAction()
{
    file_put_contents('gaufrette://dev_adapter/test.txt', "ABC\n", FILE_APPEND);

    return new Response(file_get_contents('gaufrette://dev_adapter/test.txt'));
}

次に、アセット バンドルの構成を次のように設定します (config_dev.yml でも):

assetic:
    read_from: gaufrette://dev_adapter
    write_to: gaufrette://dev_adapter

ただし、を使用してアセットをダンプしようとすると、次のconsole assetic:dump --env=devエラーが発生します。

Dumping all dev assets.
Debug mode is on.

10:53:28 [dir+] gaufrette://dev_adapter/css



  [RuntimeException]                                      
  Unable to create directory gaufrette://dev_adapter/css  



assetic:dump [--watch] [--force] [--period="..."] [write_to]

さらに詳しい情報:

symfony/symfony: 2.5.0
symfony/assetic-bundle: 2.3.0
knplabs/knp-gaufrette-bundle: 0.1.7

4

1 に答える 1

0

Amazon S3 ストリーム ラッパーを接続するときに同じ問題が発生していました。

私の最終的な解決策は、mkdir()Assetic の DumpCommand への呼び出しとその戻り値のチェックをコメントアウトすることでした。

private function doDump(AssetInterface $asset, OutputInterface $stdout)
{
    // ...

    //if (false === @mkdir($dir, 0777, true)) {
    //    throw new \RuntimeException('Unable to create directory '.$dir);
    //}

    // ...
}

依存関係マネージャーを使用している場合は、コマンドを新しいコマンド クラスにコピーし、必要な行をコメント アウトします。

パスに存在しないディレクトリ/リソースは自動的に作成されると思います。

例: ディレクトリにassets空のフォルダがあります。にプッシュすると、フォルダーとファイルs3://bucket-name/assets/css/style.cssが作成されます。cssstyle.css

于 2014-09-13T20:12:30.003 に答える