Building the Router DSL
In this chapter, we will continue using the metaprogramming skills learned in Chapter 8 to make Goldcrest
easier to use and adopt. In the previous chapter, we used metaprogramming to create a DSL around our controller and view modules. Doing this eliminated a lot of boilerplate code while significantly increasing the readability of those modules. We also added reflections and test helpers to allow us to test and debug those modules well. In this chapter, we will do the same for the router module. Similar to Chapter 9, we will start by defining the requirements for our router interface, see why metaprogramming makes sense for this use case, and finally, build the DSL along with high reflectivity and testability.
We will cover the following topics in this chapter:
- Designing the DSL for routers based on requirements
- Using Elixir’s pillars of metaprogramming to build the router DSL
- Adding reflections to make it easier to debug and test...