Comment by vidarh
In practice it is not. And no, you don't have to run it, but it makes things a lot easier to do so.
And no, you don't need to do what you suggest, you just need to load all the code into a running Ruby REPL.
It is one consequence of Ruby being as dynamic as it is, but another is that the codebases tends to be far smaller. Anywhere from half to 1/10th of the size of codebases in statically typed languages is my experience, including with direct translations.
> load all the code into a running Ruby REPL
That counts as running it if you ask me. And I don't see how just loading the code would help you find the callers of a function?
> Anywhere from half to 1/10th of the size of codebases in statically typed languages is my experience, including with direct translations.
That sounds highly implausible.