Add a New Dependency

Learn how to add a new dependency in the game engine.

We'll cover the following

The game engine

Now that we have a new Application to act as the web interface, we need to bring the game engine in as a dependency. The interface needs to have access to all the game logic we wrote so far in the course. In particular, it must be able to see all the public functions in the IslandsEngine.Game module.

This works just like any other dependency in Elixir and is about as easy as it can possibly be. Only two steps are involved.

We need to compile IslandsEngine with the rest of the project and start it when we start the IslandsInterface Application.

Changes to mix.exs

To make :islands_engine a compile-time dependency, we’ve added it to the deps/0 function in /islands_interface/mix.exs:

defp deps do [
  {:phoenix, "~> 1.3.0"},
  {:phoenix_pubsub, "~> 1.0"},
  {:phoenix_html, "~> 2.10"}, 
  {:phoenix_live_reload, "~> 1.0", only: :dev},
  {:gettext, "~> 0.11"},
  {:cowboy, "~> 1.0"},
  {:islands_engine, path: "../islands_engine"}
]
end

Notice that we use a path dependency for :islands_engine. This allows us to provide the pathname to a project on the local filesystem. The Elixir package manager, Hex, takes care of the rest. That’s it. We can give this a try in the console by running iex -S mix phx.server at the root of the islands_interface project.

Get hands-on with 1200+ tech skills courses.