diff --git a/frameworks/Elixir/phoenix/lib/hello/repo.ex b/frameworks/Elixir/phoenix/lib/hello/repo.ex index 7f5e8ce30f8..1ff97d6dcad 100644 --- a/frameworks/Elixir/phoenix/lib/hello/repo.ex +++ b/frameworks/Elixir/phoenix/lib/hello/repo.ex @@ -1,3 +1,3 @@ defmodule Hello.Repo do - use Ecto.Repo, otp_app: :hello + use Ecto.Repo, otp_app: :hello end diff --git a/frameworks/Elixir/phoenix/mix.exs b/frameworks/Elixir/phoenix/mix.exs index e1515843e47..918d17487d5 100755 --- a/frameworks/Elixir/phoenix/mix.exs +++ b/frameworks/Elixir/phoenix/mix.exs @@ -3,8 +3,8 @@ defmodule Hello.Mixfile do def project do [app: :hello, - version: "0.0.1", - elixir: "~> 1.1", + version: "0.1.0", + elixir: "~> 1.3", elixirc_paths: elixirc_paths(Mix.env), compilers: [:phoenix] ++ Mix.compilers, build_embedded: Mix.env == :prod, @@ -26,12 +26,11 @@ defmodule Hello.Mixfile do # # Type `mix help deps` for examples and options defp deps do - [{:phoenix, "~> 1.0.3"}, - {:phoenix_ecto, "~> 1.1"}, + [{:phoenix, "~> 1.2"}, + {:phoenix_ecto, "~> 3.0"}, {:postgrex, ">= 0.0.0"}, {:cowboy, "~> 1.0.0"}, - {:phoenix_html, "~> 2.1"}, - {:phoenix_live_reload, "~> 1.0", only: :dev}, - {:exrm, "~> 0.19.8"}] + {:phoenix_html, "~> 2.6"}, + {:phoenix_live_reload, "~> 1.0", only: :dev}] end end diff --git a/frameworks/Elixir/phoenix/setup.sh b/frameworks/Elixir/phoenix/setup.sh index 6596a801066..9152ac240d9 100755 --- a/frameworks/Elixir/phoenix/setup.sh +++ b/frameworks/Elixir/phoenix/setup.sh @@ -8,7 +8,8 @@ rm -rf _build deps export MIX_ENV=prod mix local.hex --force -mix deps.get --force +mix local.rebar --force +mix deps.get --force --only prod mix compile --force -elixir --detached -S mix phoenix.server +elixir --erl "+K true" --detached -pa _build/prod/consolidated -S mix phoenix.server diff --git a/frameworks/Elixir/phoenix/web/controllers/page_controller.ex b/frameworks/Elixir/phoenix/web/controllers/page_controller.ex index 1c0a58e39a6..3701b43ce01 100644 --- a/frameworks/Elixir/phoenix/web/controllers/page_controller.ex +++ b/frameworks/Elixir/phoenix/web/controllers/page_controller.ex @@ -4,16 +4,22 @@ defmodule Hello.PageController do alias Hello.Fortune def index(conn, _params) do - json conn, %{"TE Benchmarks\n" => "Started"} + conn + |> merge_resp_headers(%{"content-type" => "application/json"}) + |> json(%{"TE Benchmarks\n" => "Started"}) end # avoid namespace collision def _json(conn, _params) do - json conn, %{message: "Hello, world!"} + conn + |> merge_resp_headers(%{"content-type" => "application/json"}) + |> json(%{message: "Hello, world!"}) end def db(conn, _params) do - json conn, Repo.get(World, :random.uniform(10000)) + conn + |> merge_resp_headers(%{"content-type" => "application/json"}) + |> json(Repo.get(World, :rand.uniform(10000))) end def queries(conn, params) do @@ -26,11 +32,20 @@ defmodule Hello.PageController do rescue ArgumentError -> 1 end - json conn, Enum.map(1..q, fn _ -> Repo.get(World, :random.uniform(10000)) end) + + conn + |> merge_resp_headers(%{"content-type" => "application/json"}) + |> json(Enum.map(1..q, fn _ -> Repo.get(World, :rand.uniform(10000)) end)) end def fortunes(conn, _params) do - fortunes = List.insert_at(Repo.all(Fortune), 0, %Fortune{:id => 0, :message => "Additional fortune added at request time."}) + additional_fortune = %Fortune{ + id: 0, + message: "Additional fortune added at request time." + } + + fortunes = [additional_fortune | Repo.all(Fortune)] + render conn, "fortunes.html", fortunes: Enum.sort(fortunes, fn f1, f2 -> f1.message < f2.message end) end @@ -44,14 +59,19 @@ defmodule Hello.PageController do rescue ArgumentError -> 1 end - json conn, Enum.map(1..q, fn _ -> - w = Repo.get(World, :random.uniform(10000)) - changeset = World.changeset(w, %{randomNumber: :random.uniform(10000)}) + + conn + |> merge_resp_headers(%{"content-type" => "application/json"}) + |> json(Enum.map(1..q, fn _ -> + w = Repo.get(World, :rand.uniform(10000)) + changeset = World.changeset(w, %{randomNumber: :rand.uniform(10000)}) Repo.update(changeset) - w end) + w end)) end def plaintext(conn, _params) do - text conn, "Hello, world!" + conn + |> merge_resp_headers(%{"content-type" => "text/plain"}) + |> text("Hello, world!") end end diff --git a/frameworks/Elixir/phoenix/web/models/fortune.ex b/frameworks/Elixir/phoenix/web/models/fortune.ex index 08de763ebc8..cd3d4102fd3 100644 --- a/frameworks/Elixir/phoenix/web/models/fortune.ex +++ b/frameworks/Elixir/phoenix/web/models/fortune.ex @@ -6,11 +6,11 @@ defmodule Hello.Fortune do field :message, :string end - @required_fields ~w(message) + @required_fields ~w(message)a @optional_fields ~w() - def changeset(model, params \\ nil) do + def changeset(model, params \\ %{}) do model - |> cast(params, @required_fields, @optional_fields) + |> cast(params, @required_fields) end end diff --git a/frameworks/Elixir/phoenix/web/models/world.ex b/frameworks/Elixir/phoenix/web/models/world.ex index 45550cb6723..111e3a44341 100644 --- a/frameworks/Elixir/phoenix/web/models/world.ex +++ b/frameworks/Elixir/phoenix/web/models/world.ex @@ -6,11 +6,11 @@ defmodule Hello.World do field :randomnumber, :integer end - @required_fields ~w(randomnumber) + @required_fields ~w(randomnumber)a @optional_fields ~w() - def changeset(model, params \\ nil) do + def changeset(model, params \\ %{}) do model - |> cast(params, @required_fields, @optional_fields) + |> cast(params, @required_fields) end end diff --git a/frameworks/Elixir/phoenix/web/templates/layout/app.html.eex b/frameworks/Elixir/phoenix/web/templates/layout/app.html.eex index 7699792ad1c..94829701207 100644 --- a/frameworks/Elixir/phoenix/web/templates/layout/app.html.eex +++ b/frameworks/Elixir/phoenix/web/templates/layout/app.html.eex @@ -1 +1 @@ -