Using Ruby, generate an N x N grid, where N can be any number, and randomly populate the grid with letters (A-Z).
Using the provided dictionary file find all:
- Horizontal words from left to right in your grid
- Horizontal words from right to left in your grid
- Vertical words from top to bottom in your grid
- Vertical words from bottom to top in your grid
- Diagonal words from left to right in your grid
- Diagonal words from right to left in your grid
If possible, use TDD and provide a simple way to mock a particular grid of letters.
Please use all best practices that you deem relevant. Comment your code.