Elixir+Phoenix Framework를 Mac에 설치하고 Hello World 페이지와 DB 생성 및 마이그레이션까지

Elixir+Phoenix Framework를 Mac에 설치하고 Hello World 페이지와 DB 생성 및 마이그레이션까지

2022-10-06 last update

7 minutes reading elcapitan Rails Elixir sqlite Erlang
무엇번 달인지 모르겠지만, 작업 로그가 뭔가 도움이 된다면.

를 참고로 하고 있습니다.

목표와 전제



목표


  • Elixir + PhoenixFramework 설치
  • 컨트롤러/보기/라우팅을 만들고 Hello World보기
  • 데이터베이스 설정 및 스키마 작성 (이주)

  • 전제


  • OS X El Capitan (10.11.4 베타)
  • Homebrew 설치됨
  • DB는 SQLite를 사용합니다.
  • Rails 사용 경험이 있습니다

  • 설치



    준비



    Homebrew를 최신 상태로 유지합니다.
    brew update
    

    Elixir 및 Hex 설치



    Elixir를 설치합니다.
    Erlang도 설치됩니다.
    brew install elixir
    

    Hex를 설치합니다.
    Hex는 Rails의 rake와 같습니다.
    mix local.hex
    

    Phoenix Framework 설치



    Phoenix Framework를 설치합니다.
    (2016/4 현재 : 아래에서 항상 최신 버전이되는 것 같습니다)
    mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez
    

    노드 설치



    자산 컴파일에 brunch.io를 사용하는 경우 node.js를 설치합니다.
    brew install node
    

    애플리케이션 만들기



    mix phoenix.new에서 애플리케이션을 만듭니다.
    app_name 부분을 적절하게 응용 프로그램 이름으로 바꿉니다.
    (소문자 영숫자 및 밑줄만 사용할 수 있는 것 같습니다)
    mix phoenix.new app_name --database sqlite
    

    이번에는 SQLite를 사용하지만,
    --database mysql
    

    같은 옵션으로 데이터베이스를 변경할 수 있습니다.
    기본적으로 PostgreSQL을 사용하는 것 같습니다.

    기타 옵션은
    mix phoenix.new --help
    

    에서 참조할 수 있습니다.

    서버 시작


    cd app_name
    mix phoenix.server
    

    그러면 localhost : 4000에서 서버가 시작됩니다.



    지금까지 설치가 끝납니다.

    정적 페이지 만들기



    그런 다음 정적 페이지에서 Hello World를 볼 때까지 수행합니다.

    /hello

    아래에서 Hello World를 표시하는 것이 목표입니다.

    MVC에서 View와 Controller를 만듭니다.

    컨트롤러 작성



    /web/controllers/hello_controller.ex

    라는 이름의 Controller 파일을 만들고,
    defmodule AppName.HelloController do
      use AppName.Web, :controller
    
      def index(conn, _params) do
        render conn, "index.html"
      end
    end
    

    합니다.

    View 만들기



    /web/views/hello_view.ex

    라는 이름으로 View 파일을 만들고,

    hello_view.ex
    defmodule HelloPhoenix.HelloView do
      use HelloPhoenix.Web, :view
    end
    

    합니다.

    템플릿 만들기



    /web/templates/hello/index.html.eex

    라는 이름의 템플릿 파일을 만들고,
    <div class="jumbotron">
      <h2>Hello World!</h2>
    </div>
    

    합니다.
    .eex 파일은 Rails의 ERB와 같은 것 같습니다.

    라우팅 설정



    마지막으로 라우팅을 구성하고 볼 수 있도록 합니다.

    web/router.ex

    중간 정도
      scope "/", AppName do
        pipe_through :browser # Use the default browser stack
    
        get "/", PageController, :index
      end
    

    되어 있는 부분을
      scope "/", AppName do
        pipe_through :browser # Use the default browser stack
    
        get "/", PageController, :index
        get "/hello", HelloController, :index
      end
    

    로/hello 아래에서 HelloController를 사용하도록 설정합니다.

    시작해보기



    자동 재로드되므로 서버를 이미 시작한 경우 localhost : 4000에서 이렇게 표시됩니다.



    도중에 오류가 발생하고 멈추면 다시
    mix phoenix.server
    

    로 시작합니다.

    DB 사용 (마이그레이션)



    마지막으로 DB 스키마를 작성해 보겠습니다.
    제목과 내용이 있는 페이지를 작성하기로 결정합니다.

    데이터베이스 작성



    먼저 데이터베이스를 만듭니다.
    mix ecto.create
    

    마이그레이션



    그런 다음 마이그레이션을 수행합니다.
    mix ecto.gen.migration create_pages
    

    에서 마이그레이션 파일을 만들 때,
    * creating priv/repo/migrations
    * creating priv/repo/migrations/20160423080515_create_pages.exs
    

    등으로 표시되어 작성되므로,

    priv/repo/migrations/20160423080515_create_pages.exs

    을 다음과 같이 편집합니다.
    defmodule AppName.Repo.Migrations.CreatePages do
      use Ecto.Migration
    
      def change do
        create table(:pages) do
          add :title, :string
          add :body, :string
          timestamps
        end
      end
    end
    

    그리고 마이그레이션 실행.
    mix ecto.migrate
    

    Rails와 거의 같은 감각입니다.

    이상입니다.