2015-09-12 6 views
9

Ich bin seit einigen Stunden fest, während Sie versuchen, herauszufinden, wie Plug.Static ohne ein anderes Framework (Phoenix, Sugar, ...) zu konfigurieren; nur Cowboy, Plug und Elixier. Ich weiß einfach nicht, wie ich die Dinge im Router zusammenstellen soll.So konfigurieren Sie den Plug.Static ohne Phoenix

plug :match 
    plug Plug.Static, at: "/pub", from: :cerber 
    plug :dispatch 

    get "/" do 
    Logger.info "GET /" 
    send_resp(conn, 200, "Hello world\n") 
    end 
  1. Ist die Erklärung der Plug.Static an der richtigen Stelle? Sollte es nicht nach plug :dispatch sein?
  2. Benötige ich eine zusätzliche Strecke
  3. Mit dieser Erklärung zu definieren:
    1. was ist die URL zu erreichen, sagen index.html?
    2. wo auf dem Dateisystem index.html

befinden sollte ich gerade bin verloren ...

Danke für das Feedback

Antwort

7

bei Plug.Router docs Werfen Sie einen Blick dafür, wie :match und :dispatch funktioniert. :match wird versuchen, eine passende Route zu finden und :dispatch wird es aufrufen. Dies bedeutet, dass Plug.Static in Ihrem Setup nur aufgerufen wird, wenn Sie eine passende Route in Ihrem Router haben, was keinen Sinn ergibt. Sie wollen plug Plug.Static vor allem. Remember Plugs sind nur Funktionen, die in der Reihenfolge aufgerufen werden, in der sie deklariert sind.

Ansonsten scheint Ihr Plug.Static-Setup in Ordnung zu sein. Ihre aktuelle Konfiguration wird Assets unter "/ pub" bereitstellen, was bedeutet, dass "/pub/index.html" in Ihrer App nach "priv/static/index.html" sucht. Mehr Infos hier: http://hexdocs.pm/plug/Plug.Static.html

2

Alles, was José Valim sagte. Und hier ist ein sehr einfaches Beispiel, um es hinzuzufügen:

defmodule Server do 
    use Plug.Builder 
    plug Plug.Logger 
    plug Plug.Static, at: "/", from: "/path/to/static" 
end 

Dies wird dazu dienen, alle statischen Dateien in „/ path/to/statisch“ am „/“ Endpunkt.

Werfen Sie einen Blick auf die Dokumentation für weitere Optionen und eine ausführlichere Erklärung.