[Elixir+Phoenix] 실행한 컨트롤러와 액션 보기

6435 단어 ElixirPhoenix

Goal



실행한 컨트롤러와 액션을 표시하는 디버그 출력을 구현한다.

Dev-Environment



OS: Windows8.1
Erlang: Eshell V6.4, OTP-Version 17.5
Elixir: v1.0.5
Phoenix Framework: v1.0.0

Wait a minute



디버그 출력을 만듭니다.

제 환경에서 죄송합니다만, 아래와 같은 표시를 할 수 있도록 합니다. (빨강 테두리 부분)


컨트롤러 이름과 동작 이름이 출력됩니다.

색인



Phoenix-Framework debug dump
|> web.ex에서 가져올 함수 추가
|> 레이아웃 템플릿 변경
|> LayoutView에 함수 추가
|> 디버그 템플릿 만들기
|> 덤

web.ex에서 가져올 함수 추가



web.ex의 view/0에서 가져올 함수를 추가합니다.
(action_name/1, controller_module/1의 함수)

파일: web/web.ex
def view do
  quote do
    ...

    # Import convenience functions from controllers
    import Phoenix.Controller, only: [get_csrf_token: 0, get_flash: 2, view_module: 1,
                                      action_name: 1, controller_module: 1]

    ...
  end
end

레이아웃 템플릿 변경



레이아웃 템플릿에 디버깅을 표시하는 템플릿을 추가합니다.

파일: web/templates/layout/app.html.eex
<!DOCTYPE html>
<html lang="en">
  ...

  <body>
    ...

    <div class="container">
      <%= render "debug.html", conn: @conn %>
    </div>

    ...
  </body>
</html>

LayoutView에 함수 추가



실행 중인 작업 이름과 컨트롤러 이름을 가져오는 함수를 추가하고 있습니다.

파일: web/views/layout_view.ex
defmodule SampleApp.LayoutView do
  use SampleApp.Web, :view

  def get_controller_name(conn), do: controller_module(conn)
  def get_action_name(conn), do: action_name(conn)
end

Debug 템플릿 만들기



디버그 내용을 출력하는 새 템플릿을 만듭니다.

파일: web/templates/layout/debug.html.eex
<div class="debug_dump">
  <p>Controller: <%= get_controller_name @conn %></p>
  <p>Action: <%= get_action_name @conn %></p>
</div>



디버그를 출력하기 위한 CSS를 작성합니다.

파일: priv/static/css/custom.css
/* miscellaneous */
.debug_dump {
  clear: both;
  float: left;
  width: 100%;
  margin-top: 45px;
  color: inherit;
  background-color: #eee;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

.debug_dump p {
  margin-bottom: 1px;
  font-size: 15px;
  font-weight: 200;
}

Speaking to oneself



블로그 쪽에 게재하고 있는,
Phoenix Tutorial의 재작성 과정에서 작성했으므로, 기사로 했습니다.

없어도 뭐든지 되지만,
있던 것이 편리, 있으면 사용하는 정도의 기능이군요.

Bibliography



Phoenix-Framework - Guides - templates

좋은 웹페이지 즐겨찾기