2017-07-26 2 views
1

Je veux utiliser https://github.com/smoku/phoenix_api_docs pour faire un api doc, mais j'ai un problème, comme il est indiqué dans la documentation, je l'ai mis dans les test_helper.exs ceci:Utilisation phoenix_api_docs

PhoenixApiDocs.start ExUnit.start(formatters: [ExUnit.CLIFormatter, PhoenixApiDocs.Formatter]) 

quand je lance mix test, la console me montre ceci:

09:22:51.173 [error] GenEvent handler PhoenixApiDocs.Formatter 
        installed in #PID<0.323.0> terminating 
    ** (UndefinedFunctionError) function 
    WhitespaceEx.Application.Router.__routes__/0 is undefined (module 
    WhitespaceEx.Application.Router is not available) 
    WhitespaceEx.Application.Router.__routes__() (phoenix_api_docs) 
    lib/phoenix_api_docs/generator.ex:26: 
    PhoenixApiDocs.Generator.routes_docs/2 (phoenix_api_docs) 
    lib/phoenix_api_docs/generator.ex:12: 
    PhoenixApiDocs.Generator.run/0 (phoenix_api_docs) 
    lib/phoenix_api_docs/formatter.ex:22: 
    PhoenixApiDocs.Formatter.save_blueprint_file/0 (phoenix_api_docs) 
    lib/phoenix_api_docs/formatter.ex:9: 
    PhoenixApiDocs.Formatter.handle_event/2 (stdlib) 
    gen_event.erl:573: :gen_event.server_update/4 (stdlib) 
    gen_event.erl:555: :gen_event.server_notify/4 (stdlib) 
    gen_event.erl:296: :gen_event.handle_msg/6 (stdlib) 
    proc_lib.erl:247: :proc_lib.init_p_do_apply/3 Last message: 
    {:suite_finished, 6679713, nil} 

et la documentation dans un fichier api.apib n'est pas générée. La configuration du projet a erlang 19.2, elixir 1.4.2, Phoenix v1.2.4, nodejs 7.4.0, Erlang/OTP 20

Je voudrais un peu d'aide dans ce cas

Répondre

0

phoenix_api_docs infère le nom de votre module routeur à partir du module d'application spécifié dans mix.exs:

def run do 
    test_conns = PhoenixApiDocs.ConnLogger.conns 
    app_module = Mix.Project.get.application |> Keyword.get(:mod) |> elem(0) 
    router_module = Module.concat([app_module, :Router]) 

    %{ 
     host: Keyword.get(api_docs_info, :host, "http://localhost"), 
     title: Keyword.get(api_docs_info, :title, "API Documentation"), 
     description: Keyword.get(api_docs_info, :description, "Enter API description in mix.exs - api_docs_info"), 
     routes: routes_docs(router_module, test_conns) 
    } 
    end 

de votre message d'erreur, il ressemble à votre nom de module d'application est WhitespaceEx.Application, mais je suppose que votre module de routeur est WhitespaceEx.Router. Une façon de faire fonctionner cette fonctionnalité avec l'implémentation phoenix_api_docs actuelle serait de renommer votre module d'application en WhitespaceEx.

Il y a un PR ouvert qui vous permettra de configurer le nom du routeur, et de supporter les conventions de phoenix 1.3 Support for Phoenix 1.3 #9