5

After and update to my system - MAC, my phoenix app compile just fine but throw this error any time I hit any route.

Server: localhost:4000 (http) Request: GET / ** (exit) an exception was raised: ** (UndefinedFunctionError) function :crypto.rand_bytes/1 is undefined or private. Did you mean one of:

  * rand_seed/0
  * rand_seed/1

    (crypto) :crypto.rand_bytes(20)
    (plug) lib/plug/request_id.ex:59: Plug.RequestId.generate_request_id/0
    (plug) lib/plug/request_id.ex:48: Plug.RequestId.get_request_id/2
    (plug) lib/plug/request_id.ex:42: Plug.RequestId.call/2
    (olars) lib/olars/endpoint.ex:1: Olars.Endpoint.phoenix_pipeline/1
    (olars) lib/plug/debugger.ex:93: Olars.Endpoint."call (overridable 3)"/2
    (olars) lib/olars/endpoint.ex:1: Olars.Endpoint.call/2
    (plug) lib/plug/adapters/cowboy/handler.ex:15: Plug.Adapters.Cowboy.Handler.upgrade/4
    (cowboy) src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4

My mix.exs

{:phoenix, "~> 1.2.0"},
      {:phoenix_pubsub, "~> 1.0"},
      {:phoenix_ecto, "~> 3.0"},
      {:phoenix_haml, github: "chrismccord/phoenix_haml"},
      {:mariaex, ">= 0.0.0"},
      {:phoenix_html, "~> 2.6"},
      {:phoenix_live_reload, "~> 1.0", only: :dev},
      {:gettext, "~> 0.11"},
      {:cowboy, "~> 1.0"},
      {:arc,  "~> 0.5.2"},
      {:arc_ecto, "~> 0.3.2"},
      {:ex_aws, "~> 0.4.10"},
      {:httpoison, "~> 0.9"},
      {:poison, "~> 2.0"},
      {:ecto, "~> 2.0.2", override: true},
      {:plug_auth, github: "smpallen99/plug_auth"},
      {:comeonin, "~> 2.1.0"},
      {:phoenix_calendar, "~> 0.1.2"},
      {:httpotion, "~> 3.0.0", override: true},
      {:timex, "~> 3.0"},
      {:quantum,github: "c-rack/quantum-elixir"},
      {:calendar, "~> 0.16.1"},
      {:uri_query, "~> 0.1.1"},
      {:scrivener, "~> 2.0"},
      {:scrivener_list, "~> 1.0"},
      {:number, "~> 0.5.0"},
      {:xlsxir, "~> 1.4.1"},
      {:new_relic, "~> 0.1.1"},
      {:retry, "~> 0.7"},
      {:credo, "~> 0.8", only: [:dev, :test], runtime: false}

Elixr version: Elixir 1.4.5 Erlang Version: 20

Let me know if you guys need any other info.

Peer Stritzinger
  • 8,232
  • 2
  • 30
  • 43
Renews
  • 614
  • 5
  • 17

2 Answers2

7

As mentioned in comments by @mudasobwa

put an explicit {:plug, "~> 1.3"} in your mix.ex file.

Fixed this issue.

Thanks everyone who tried to help.

Aleksei Matiushkin
  • 119,336
  • 10
  • 100
  • 160
Renews
  • 614
  • 5
  • 17
6

:crypto.rand_bytes/1 was removed in OTP 20. You should use :crypto.strong_rand_bytes/1 instead.

In this case, it looks like you need to update plug to have this commit. You can run mix deps.update plug to do this.

Gazler
  • 83,029
  • 18
  • 279
  • 245
  • Already done that without any success... my plug version `plug 1.1.9`, looks like it is locked to this versions, but as show on my mix.ex i do not have it locked at any version. – Renews Jul 05 '17 at 13:49
  • 1
    @Renews put an explicit `{:plug, "~> 1.3"}` in your `mix.ex` file. – Aleksei Matiushkin Jul 05 '17 at 13:54
  • @mudasobwa thanks, this made it work, will use your comment as response to this issue. – Renews Jul 05 '17 at 14:15