foo ||= [] foo << :element
Feels a little clunky. Is there a more idiomatic way?
(foo ||= []) << :element
But meh. Is it really so onerous to keep it readable?
You can always use the push method on any array too. I like it better.
(a ||= []).push(:element)
You also could benefit from the Kernel#Array, like:
# foo = nil foo = Array(foo).push(:element) # => [:element]
which has the benefit of flattening a potential Array, like:
# foo = [1] foo = Array(foo).push(:element) # => [1, :element]
Also a little more verbose for readability and without a condition:
foo = Array(foo) << :element