2015-09-12 10 views
9

Utknąłem od kilku godzin, próbując dowiedzieć się, jak skonfigurować Plug.Static bez żadnych innych frameworków (Phoenix, Sugar, ...); tylko Cowboy, Plug and Elixir. Po prostu nie wiem, jak połączyć rzeczy w routerze.Jak skonfigurować Plug.Static bez 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. Czy deklaracja Plug.Static na właściwym miejscu? Czy nie powinno być po plug :dispatch?
  2. Czy muszę zdefiniować dodatkowe trasy
  3. Z tej deklaracji:
    1. jaki jest adres URL dotrzeć, powiedzmy index.html?
    2. gdzie w systemie plików index.html powinny być zlokalizowane

ja właśnie stracił ...

Dzięki za informacje zwrotne

Odpowiedz

7

Spójrz na Plug.Router docs na jak :match i :dispatch działa. :match spróbuje znaleźć pasującą trasę i wywoła ją :dispatch. Oznacza to, że Plug.Static w konfiguracji zostanie wywołany tylko wtedy, gdy masz odpowiednią trasę w routerze, co nie ma sensu. Przed wszystkim chcesz uzyskać plug Plug.Static. Pamiętaj, że wtyczki to tylko funkcje, które są wywoływane w kolejności, w jakiej są zadeklarowane.

Poza tym konfiguracja Plug.Static wydaje się być w porządku. Twoja obecna konfiguracja będzie wyświetlać zasoby w "/ pub", co oznacza, że ​​"/pub/index.html" będzie szukać "priv/static/index.html" w twojej aplikacji. Więcej informacji: http://hexdocs.pm/plug/Plug.Static.html

2

Wszystko, co powiedział José Valim. A oto najbardziej prosty przykład, aby dodać do niego:

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

ta będzie służyć wszystkie pliki statyczne w „/ ścieżka/do/static” na „/” punktu końcowego.

Zobacz dokumenty, aby uzyskać więcej opcji i głębsze wyjaśnienie.