title: Phoenix error: module not loaded/not available
body: <p>I'm following the Programming Phoenix book, working on the section to implement logging in/out an authenticated user, and am receiving an error I don't know what to do with:</p>
  
  <pre><code>mix phoenix.server
  Compiled lib/rumbl.ex
  Compiled lib/rumbl/repo.ex
  Compiled web/channels/user_socket.ex
  Compiled web/web.ex
  Compiled web/models/user.ex
  
  == Compilation error on file web/router.ex ==
  ** (UndefinedFunctionError) undefined function: Rumbl.Auth.init/1 (module Rumbl.Auth is not available)
      Rumbl.Auth.init([repo: Rumbl.Repo])
      (plug) lib/plug/builder.ex:198: Plug.Builder.init_module_plug/3
      (plug) lib/plug/builder.ex:186: anonymous fn/4 in Plug.Builder.compile/3
      (elixir) lib/enum.ex:1387: Enum."-reduce/3-lists^foldl/2-0-"/3
      (plug) lib/plug/builder.ex:186: Plug.Builder.compile/3
      web/router.ex:4: (module)
      (stdlib) erl_eval.erl:669: :erl_eval.do_apply/6
      (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
  
  
  == Compilation error on file lib/rumbl/endpoint.ex ==
  ** (UndefinedFunctionError) undefined function: Rumbl.Router.init/1 (module Rumbl.Router is not available)
      Rumbl.Router.init([])
      (plug) lib/plug/builder.ex:198: Plug.Builder.init_module_plug/3
      (plug) lib/plug/builder.ex:186: anonymous fn/4 in Plug.Builder.compile/3
      (elixir) lib/enum.ex:1387: Enum."-reduce/3-lists^foldl/2-0-"/3
      (plug) lib/plug/builder.ex:186: Plug.Builder.compile/3
      (phoenix) expanding macro: Phoenix.Endpoint.__before_compile__/1
      lib/rumbl/endpoint.ex:1: Rumbl.Endpoint (module)
      (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
  
  
  == Compilation error on file web/views/user_view.ex ==
  ** (CompileError) web/views/user_view.ex:2: module Rumbl.Router.Helpers is not loaded and could not be found
      expanding macro: Rumbl.Web.__using__/1
      web/views/user_view.ex:2: Rumbl.UserView (module)
      (elixir) expanding macro: Kernel.use/2
      web/views/user_view.ex:2: Rumbl.UserView (module)
      (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
  
  
  == Compilation error on file web/views/error_view.ex ==
  ** (CompileError) web/views/error_view.ex:2: module Rumbl.Router.Helpers is not loaded and could not be found
      expanding macro: Rumbl.Web.__using__/1
      web/views/error_view.ex:2: Rumbl.ErrorView (module)
      (elixir) expanding macro: Kernel.use/2
      web/views/error_view.ex:2: Rumbl.ErrorView (module)
      (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
  
  
  == Compilation error on file web/controllers/auth.ex ==
  ** (CompileError) web/controllers/auth.ex:3: module Comeonin.Bcypt is not loaded and could not be found
      (stdlib) erl_eval.erl:669: :erl_eval.do_apply/6
      (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
  
  
  == Compilation error on file web/controllers/user_controller.ex ==
  ** (CompileError) web/controllers/user_controller.ex:2: module Rumbl.Router.Helpers is not loaded and could not be found
      expanding macro: Rumbl.Web.__using__/1
      web/controllers/user_controller.ex:2: Rumbl.UserController (module)
      (elixir) expanding macro: Kernel.use/2
      web/controllers/user_controller.ex:2: Rumbl.UserController (module)
      (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
  
  
  == Compilation error on file web/controllers/page_controller.ex ==
  ** (CompileError) web/controllers/page_controller.ex:2: module Rumbl.Router.Helpers is not loaded and could not be found
      expanding macro: Rumbl.Web.__using__/1
      web/controllers/page_controller.ex:2: Rumbl.PageController (module)
      (elixir) expanding macro: Kernel.use/2
      web/controllers/page_controller.ex:2: Rumbl.PageController (module)
      (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
  
  
  == Compilation error on file web/views/session_view.ex ==
  ** (CompileError) web/views/session_view.ex:2: module Rumbl.Router.Helpers is not loaded and could not be found
      expanding macro: Rumbl.Web.__using__/1
      web/views/session_view.ex:2: Rumbl.SessionView (module)
      (elixir) expanding macro: Kernel.use/2
      web/views/session_view.ex:2: Rumbl.SessionView (module)
      (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
  
  
  == Compilation error on file web/views/page_view.ex ==
  ** (CompileError) web/views/page_view.ex:2: module Rumbl.Router.Helpers is not loaded and could not be found
      expanding macro: Rumbl.Web.__using__/1
      web/views/page_view.ex:2: Rumbl.PageView (module)
      (elixir) expanding macro: Kernel.use/2
      web/views/page_view.ex:2: Rumbl.PageView (module)
      (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
  
  
  == Compilation error on file web/views/layout_view.ex ==
  ** (CompileError) web/views/layout_view.ex:2: module Rumbl.Router.Helpers is not loaded and could not be found
      expanding macro: Rumbl.Web.__using__/1
      web/views/layout_view.ex:2: Rumbl.LayoutView (module)
      (elixir) expanding macro: Kernel.use/2
      web/views/layout_view.ex:2: Rumbl.LayoutView (module)
      (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
  
  
  == Compilation error on file web/controllers/session_controller.ex ==
  ** (CompileError) web/controllers/session_controller.ex:2: module Rumbl.Router.Helpers is not loaded and could not be found
      expanding macro: Rumbl.Web.__using__/1
      web/controllers/session_controller.ex:2: Rumbl.SessionController (module)
      (elixir) expanding macro: Kernel.use/2
      web/controllers/session_controller.ex:2: Rumbl.SessionController (module)
      (elixir) lib/kernel/parallel_compiler.ex:100: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/8
  </code></pre>
  
  <p>I've checked and double checked my code against the book, but can't see anything.<br>
  My files for the project are here: <a href="https://github.com/bordeltabernacle/learning-phoenix/tree/master/rumbl">https://github.com/bordeltabernacle/learning-phoenix/tree/master/rumbl</a></p>
  
  <p>As far as I can tell the <code>Rumbl.Auth.init</code> function is there in the <code>auth.ex</code> controller file, and I'm not sure what the <code>Rumbl.Router.Helpers</code> file is or how to load it.  When i remove the only new line in the <code>router.ex</code> file, since the app was working, I get the same error.<br>
  I'm afraid I don't yet know enough to troubleshoot this myself.</p>