4

relx を使用してアセンブルされたカウボーイ プロジェクトでオンザフライで再コンパイルするSyncを使用したいと考えています(Cowboy Getting Started Guideに従って)。

問題は、次のように my_application.app.src ファイルのアプリケーション リストで sync を指定して、アプリケーションで同期を開始できたとしても、次のようになることです。

{application, my_application, [
    {description, "My Cowboy Application"},
    {vsn, "0.1.0"},
    {modules, []},
    {registered, [my_app_sup]},
    {applications, [
        kernel,
        stdlib,
        cowboy,
        sync
    ]},
    {mod, {my_app, []}},
    {env, []}
]}.`

relx アセンブラがソース コードを _rel ディレクトリに移動しないため、まだ機能しません (もちろん、そうすべきではありません)。

ソース ファイルの場所を Sync に伝える方法はありますか? それとも、私が完全に間違っていて、relx との Sync 統合を別の方法で行う必要があるのでしょうか?

4

2 に答える 2

6

同期を使用した私の開発セットアップは次のもので構成されています。

  • エクスポートした ERL_LIBS パスへの同期のインストール (つまり$HOME/lib/erlang)
  • 開発relx構成を作成して実行するrelx -c relx-dev.config
  • コンソール スクリプトが存在する場所に cd して実行する単純なシェル スクリプトを作成する
  • 設定スクリプトを追加してうなり声の通知を微調整する

開発時には、開発用の relx.config ファイルに sync を含めます。しかし、sync をディレクトリにインストールして ERL_LIBS にエクスポートすると、任意の erlang プロジェクトで同期アプリを起動すると魔法のように表示されます。

これは私の開発 relx-dev.config ファイルの例です:

{dev_mode, true}.
{lib_dirs, ["/usr/local/erlang"]}.
{output_dir, "_rel-dev"}.
{release,
 {myapp, "0.0.1"},
 [{myapp_core, "0.0.1", '='}, sasl, syntax_tools, compiler, sync]
}.
{extended_start_script, true}.

relx-dev.config スクリプトが作成されたら、次のコマンドでリリースをビルドします。

relx -c relx-dev.config

consoleコンソールを起動するために使用するスクリプトは次のとおりです。

#!/usr/bin/sh
_rel-dev/myapp/bin/myapp console

このスクリプトは、ノード名を指定して Erlang シェルを起動し、すべてのアプリと同期アプリケーションを起動して、カスタム同期構成ファイルを読み込みます。

sync.configシェルを開始したディレクトリと同じディレクトリに配置されたファイルの例を次に示します。

[{sync, [{growl, [errors, warnings]}]}].

同期のREADMEには、コンソールとグロウルのログ動作の構成に関する多くの情報が含まれています。ファイルを使用する代わりに、.configオプションをコマンドに渡したりerl、シェルで同期関数を実行したりすることができます。

于 2014-03-26T06:28:11.353 に答える