Most efficient FizzBuzz solution in Ruby
Using a destructive update like map! is weird, the user does not expect his array to be mutated. I suggest one of two possibilities:


Replace map! with each and leave the rest of the code as is.
Replace map! with map, remove puts and handle printing out of the function. Adding a join("\n") may be needed.


The first is more obvious, the second one only has one responsability.



As a minor note, it is common style to use do end for multiline blocks, not {}.