Time to get .lazy, then .eager

### .lazy loading
If you need to lazy load an associated set of data in an API client (or at any other time) in an object, you can use the `.lazy` method on an enumerator:
```ruby
hogwarts.wizards = wizard_ids.lazy.map { |wizard_id| find_wizard(wizard_id) }
```

The above will return an `Enumerator::Lazy` that will only perform the `map` once the data is touched, for example by performing `hogwarts.wizards.first`.

### Get .eager if  necessary
There's a snag here though, if you would like to perform a `map` on the actual data down the line, it will then return another `Enumerator::Lazy`, instead of performing your `map`.

To circumvent this, tack on a `.eager` to the end of the returned `Enumerator::Lazy`:
```ruby
hogwarts.wizards = wizard_ids.lazy.map { |wizard_id| find_wizard(wizard_id) }.eager
```

This will then return the enumerated values when performing a `.map` down the line!


aarondelate
October 29, 2024