chore: autoload TwiML to save memory on load #498
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Works towards fixing #396.
Others are reporting that
twilio-ruby
takes a lot of memory. My belief is that this is because it is a large library that covers an ever increasing API surface. The issue is not necessarily in that the library is so large, but that the entire thing is loaded in one go withrequire
s for days.I am going to send a few PRs that update our use of
require
toautoload
where appropriate.autoload
only loads the file when the constant (class/module) is used. In this first PR, for those who include the library but don't use TwiML, the files governing TwiML creation will not be loaded into memory. For those that do use TwiML the behaviour will be unchanged. Notably this also moves requiringnokogiri
to the TwiML files too. This will not affect a Rails user, but users of frameworks which don't includenokogiri
should notice a difference.This first PR will not significantly reduce the memory usage, but it is a start and smaller PRs are easier to review.
Checklist