5

Android アプリケーションからクラッシュ レポートを収集するために使用できる symfomy アプリケーション バンドルを作成しました (Android と ACRA に関心がある場合: https://github.com/marvinlabs/acra-server )。

それを受け入れる人は、そのアプリケーションを通常の Symfony 2 バンドルとして、GitHub から取得し、必要なすべてのコマンド ライン操作を実行するだけで簡単にインストールできます。

  • symfony の知識
  • php コンポーザへのアクセスが必要
  • PHPコマンドラインを入力する必要があります

そのために、Symfony コード全体と私のバンドルを含む zip ファイルをパッケージ化しました。問題: CSS と Javascript が適切に見つからないようです。サーバーでコマンドを実行する必要があります。

php app/console assetic:dump --env=prod --no-debug

質問 1: どうすればその最後のステップを取り除くことができますか?

質問 2: 全体として、zip ファイルを作成する前に、私のプロセスに何を追加しますか?


その zip ファイルを作成する前に、次のことを行います。

  • すべての git フォルダーを削除する
  • app/config/parameters.yml ファイルを削除します (私の開発環境に固有)

次のコマンドも実行します。

php app/console cache:clear --env=dev
php app/console cache:clear --env=prod
php app/console doctrine:schema:create --env=dev --dump-sql > create-schema.sql
php app/console doctrine:schema:update --env=dev --dump-sql > update-schema.sql
php app/console assets:install --env=prod --no-debug
php app/console assetic:dump --env=prod --no-debug

PS:


トラブルシューティングを試したい人のためのインストール手順:

  1. ダウンロードhttp://www.vincentprat.info/tmp/acra-server-1.0.0.zip
  2. サーバーにzipコンテンツをアップロードします
  3. ディレクトリ app/logs および app/cache に権限 777 を付与します
  4. サンプルファイル app/config/parameters.yml.dist からファイル app/config/parameters.yml を作成します
  5. ファイル create-schema.sql を使用して DB テーブルを作成します。
  6. (サブ) ドメインがディレクトリ acra-server/web を指すようにする
  7. ホームページにアクセス: http://www.example.com/dashboard

2013 年 12 月 6 日を編集

解凍直後のファイルと権限のリスト

~/acra-server/web$ ls -l css
total 10
-rw-r--r--+ 1 vincentp users 8990 May 23 18:26 d82d504.css

~/acra-server/web$ ls -l js
total 103
-rw-r--r--+ 1 vincentp users 104721 May 23 18:26 7cb568e.js

assetic dump コマンドの後のファイルと権限のリスト

:~/acra-server$ ls -l web/js
total 281
-rw-r--r--+ 1 vincentp users 205123 May 28 21:48 7cb568e.js
-rw-r--r--+ 1 vincentp users  21767 May 28 21:48 b96fe74.js

別の JS ファイルが生成されていることがわかります (CSS も同様です)。Assetic は、解凍したファイルから適切なファイルを探していないと思います。それを修正する方法について何か考えはありますか?たぶん、資産に特定のファイル名を使用するように強制しますか?

4

4 に答える 4

4

指定されたファイル名へのダンプ

( asseticの出力オプション)

特定のファイル名にダンプするようにアセット コレクションを構成できます。これは、出力オプションを使用して twig 内で実現できます。7cb568e.jsのような自動生成されたファイル名はもうありません。

例:

{% stylesheets 
    'bundles/mlabsacraserver/stylesheets/*' 
    filter='cssrewrite'
    output='css/stylesheets.css'
%}
    <link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}

...またはjavascript ...

{% javascripts  
    'bundles/mlabsacraserver/js/jquery.min.js'
    'bundles/mlabsacraserver/js/*' 
    output='js/javascripts.js'
%}
    <script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}

これで、assetic は指定されたフィルターを使用してアセットをjs/javascripts.jsおよびcss/stylesheets.cssにダンプします。

assetic がこれらのアセットをダンプするベース パスは、config.yml で、assetic.write_toおよび defaults.to を web/ フォルダーに設定できます。

事前設定されたアセット コレクション

コードをより構造的に保つことができます。config.yml (または別のインポートされた構成ファイル) 内でアセット コレクションを定義できます。

構成は、assetic.assetsの下にあります。

例:

# app/config.yml

assetic:
    # ...
    assets:
        js_main:
            inputs:
                - "bundles/mlabsacraserver/js/jquery.min.js"
                - "bundles/mlabsacraserver/js/*"
            output: js/javascripts.js

        css_main:
            inputs:
                - "bundles/mlabsacraserver/stylesheets/*"   
            filters: 
                - cssrewrite                 # ...add more if you like
            output: css/stylesheets.css

これで、これらのコレクションを twig テンプレート内で使用できます。これらのコレクションは、assetic のasset()関数と@、対応するコレクション名を持つ -syntax を使用して使用できます。

例:

<link href="{{ asset('@css_main') }}" type="text/css" rel="stylesheet" />

... と ...

<script src="{{ asset('@js_main') }}" type="text/javascript"></script>

このようにして、assetic がアセットを検索する場所を構成し、単一の構成パラメーターで名前を変更し、このロジックをテンプレートの外部に保持して、テンプレートをより読みやすく、保守しやすくすることができます。

結果の出力例:

 <link href="/web/css/stylesheets.css" type="text/css" rel="stylesheet" />
 <script src="/web/js/javascripts.js" type="text/javascript"></script>

これで、コレクションを使用してアセットを追加および削除し、テンプレートでそれらの参照名を使用するだけの単一の構成ポイントがアプリケーションに作成されました。

展開のさらなる改善

ユーザーに MySQL ホスト、ユーザー、およびパスワードを入力してもらい、symfony にパラメーター ファイルを書かせることができます。

これは、アプリケーションに最初にアクセスしたときにSensioDistributionBundleを使用して symfony standard-edition が行うことです。

parameters.yml の実際の書き込みを実行するクラスはSensio\DistributionBundle\Configurator\Configuratorです。

use Sensio\DistributionBundle\Configurator\Configurator;

次に、Installation Controller でコンフィギュレーターを使用します。

   $configurator = new Configurator($this->get('kernel')->getRootDir());

   $configurator->mergeParameters(array(
        'my_parameter' = 'my_value',
        'my_parameter2' = 'my_value2',
   ));

  $configurator->write();
}

一番良いのは、Configurator クラス自体を調べて、それがどのように機能するかを理解することです。

今バウンティをハズできますか?;-)

于 2013-06-13T09:32:53.160 に答える
0

htmlは何を言っていますか?アセット パスが正しく生成されていますか?

そして、「php app/console assets:install --env=prod --no-debug」が表示されます

したがって、実際にはcssがそこにあるはずです。

たぶん、あなたのウェブディレクトリでコマンドを試してみてください。css を Resources/Public フォルダーから web/bundlename/... にコピーします。

「php app/console assets:install web」

それとも同じですか?

于 2013-06-07T09:11:44.033 に答える