I have a more conceptual question in Rails… or Ruby for that matter:
Is it best to call a require right before the method that needs it, group my requires at the beginning of the class or somewhere in an initializer when Rails boots?
Does it matter from a performance point of view? From a readability point of view? Does it make a difference if I’m using Rails 3?
Thanks!
If you’re concerned about performance then you should require things in the context of where they are needed so that if that portion of your code is not exercised, the library is not loaded. Any subsequent calls to
requirehave no effect as that file has already been loaded. This ends up looking like something along the lines of:While this is more efficient in terms of resources, it can make it very difficult to determine the dependencies of your application. Declaring these up-front makes it clear to other people maintaining the software. Keep in mind that “other people” always includes your future self when you’ve forgotten about some details of your application.
You’re technically allowed to require anything at any time, late or early, but declaring your requirements up front is better from a design perspective. If you find that there is an element that is used only intermittently and takes an unusual amount of time or memory to load, then you should probably document that up front in your requirements file. For example:
Arguably this is less of an issue with bundler because you can have your gems declared up front more formally and the actual
requirecall can come later.