2015-09-12 11 views
9

Sono bloccato da alcune ore a questa parte mentre cercavo di capire come configurare Plug.Static senza nessun altro framework (Phoenix, Sugar, ...); solo Cowboy, Plug ed Elixir. Non so come mettere insieme le cose nel router.Come configurare Plug.Static senza 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. è la dichiarazione del Plug.Static al posto giusto? Non dovrebbe essere dopo plug :dispatch?
  2. ho bisogno di definire un percorso aggiuntivo
  3. Con questa dichiarazione:
    1. Qual è l'URL da raggiungere, dicono index.html?
    2. dove sul file system index.html dovrebbe trovarsi

Sto solo perso ...

Grazie per il feedback

risposta

7

Date un'occhiata a Plug.Router docs per come :match e :dispatch funziona. :match proverà a trovare un percorso corrispondente e :dispatch sta per invocarlo. Questo significa che Plug.Static nella configurazione verrà invocato solo se nel router è presente una route corrispondente, il che non ha senso. Vuoi plug Plug.Static prima di tutto. Ricorda che i plug sono solo funzioni invocate nell'ordine in cui sono dichiarate.

Oltre a ciò, la configurazione di Plug.Static sembra ok. La tua attuale configurazione servirà le risorse in "/ pub", che significa "/pub/index.html" cercherà "priv/static/index.html" nella tua app. Maggiori informazioni qui: http://hexdocs.pm/plug/Plug.Static.html

2

Tutto ciò che José Valim ha detto. Ed ecco un esempio più semplice per aggiungere ad essa:

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

Questo servirà tutti i file statici in "/ path/to/static" alla "/" endpoint.

Dai un'occhiata ai documenti per ulteriori opzioni e una spiegazione più approfondita.