Describe undesirable but necessary cruft

This commit is contained in:
Yehuda Katz 2012-09-16 20:36:02 -07:00
parent 2130cdfc00
commit f9117072fb

19
cruft.md Normal file
View File

@ -0,0 +1,19 @@
As of Ruby 1.9.3, it is impossible to dynamically generate a Symbol
through interpolation without generating garbage. Theoretically, Ruby
should be able to take care of this by building up the String in C and
interning the C String.
Because of this, we avoid generating dynamic Symbols at runtime. For
example, instead of generating the instrumentation event dynamically, we
have a constant with a Hash of events:
```ruby
INSTRUMENT = {
:serialize => :"serialize.serializer",
:associations => :"associations.serializer"
}
```
If Ruby ever fixes this issue and avoids generating garbage with dynamic
symbols, this code can be removed.