2010-11-27 8 views
3

ErlangのInetのmode_esiを動作させ、何らかの機能を実行しようとしています。だから、私は成功しませんでした。誰かがのようなURLがメソッドmy_mod:foo/3を呼び出すように、Inetsを実行する方法の最小限の例を投稿できますか?Erlangサーバインタフェースの動作例

追加:私はこれらのコマンドでinetsを開始しました:

inets:start(), 
inets:start(httpd, [{port, 8099}, {server_name, "localhost"}, {document_root, "."}, 
    {server_root, "."}, {erl_script_alias, {"/esi", [my_esi, io]}}]). 

モジュールは次のとおりです。

-module(my_esi). 
-export([foo/3]). 
foo(Sid, Env, In) -> mod_esi:deliver(Sid, ["bla"]). 

しかし、エラーメッセージにhttp://localhost:8099/esi/my_esi:foo結果に閲覧します。

答えて

1

私はそれを自分で解決しました。なんらかの理由で、私の理解を超えて、設定ファイル(変更されたバージョンinets/examples/server_root/conf/8080.conf)でInetsを呼び出すと、まったく同じコードが働いていました。私は、例のファイルには、inets:start(httpd, [...])にリストされているものよりもInetsが必要とするより完全なプロパティのリストが含まれていると思います。将来誰かがInets問題に遭遇したら、私の助言は構成例から始めることです。

0

OK]をクリックして、ここに行く:

  1. inets Webサーバの{erl_script_alias, {"/esi", [my_mod]}}を設定し、そのモジュールが受け入れられています。
  2. 書込みmy_mod。ような何か:

    -module(my_mod). 
    -export([foo/3]). 
    
    
    foo(SessID, _Env, _Input) -> 
        mod_esi:deliver(SessID, ["Data ", <<"as">>, " an iolist"]). 
    
  3. mod_esiていることを確認し、モジュールと呼ばれるinetsセクションの一部です:{modules, [.., mod_esi, ..}}
  4. この手順は非常に重要です:聖なる言葉「私はあなたに祈る、inetsを暗唱、3回呼吸する、あなたがすること今回は仕事です "。あなたの指を渡す。
  5. コーヒーを飲む。お茶はできません。それはコーヒーでなければならない。
  6. ウェブサーバーをお楽しみください。
+0

に役立ちます願っています。私は何が間違っているの?あなたが書いたものの簡単なバージョンのようです。 –

1

すでに何が言われているかを明確にするために、私は実際の例を(上から)与えます。それ保存

# filename: my_esi.erl 
-module(my_esi). 
-export([foo/3,bar/3]). 
foo(Sid, Env, In) -> mod_esi:deliver(Sid, ["foo"]). 
bar(Sid, Env, In) -> mod_esi:deliver(Sid, ["bar"]). 

、それをコンパイルします:

erlc my_esi.erl 

まず、モジュールを作成する);これは、私がそれを見つけた方法です主な理由は、グーグルからここに来た人たちを支援することです

これで、bashの

erl 
からシェルを実行するとmy_esi.beam

を持っていますシェル内

は、次のように入力します。

inets:start(). 
{Httpd_State,Httpd_Pid} = inets:start(httpd, [{port, 8099}, {server_name, "localhost"}, {document_root, "."}, {modules,[mod_esi]},{server_root, "."}, {erl_script_alias, {"/esi", [my_esi, io]}}]). 

ここで重要な部分である:

{modules,[mod_esi]} 

あなたが他のモジュールが必要な場合は、リストにそれらを追加することによって、それらをロードします。私は最初、それは最初は少し奇妙に思えるんことを認め、およびドキュメントは、私が期待したよりも有用だったことだろう

:どのように/なぜ明確にする

modules()  -> [atom()] 

は次のようになります:しかし、私は気づい

{modules, [mod_access, mod_esi, ..., etc.]} 

それは、私は、働いていない例で質問を更新し、誰か:)

関連する問題