Why not `instance_eval` this instead? Then any exceptions can include the linenos:

```ruby
instance_eval(IO.read(metadata_file), metadata_file)
```