As a degreeless completely self-taught programmer with a strong interest in vm implementations and garbage collection (eg I found the MLKit paper to be super exciting and at the time an incredible innovation (and then rust came along shortly after that)), I feel obligated to inform you that since ruby 2.2 (which is required by Rails 5+), symbols are in fact garbage collected, and are thus now effectively the same as string interning with #freeze.