The colon indicates a symbol. I wouldn't call it bad practice so much as unconventional practice, which might make the code a little harder to understand.
I know that :"Some weird stuff"
is legal but don't like it, personally I'd rather use :Some_weird_stuff
and leave the quotes out all together - using quotes when you don't need to is just adding noise - I'm very anti-noise. Noise is bad practice, it makes understanding take longer.
Sometimes, when you're matching things that came in as strings but for consistency you want symbols then you don't have much choice, but I prefer not to have to ask this question, FWIW.
When you have syntactically clean symbols you can use the
{ thing: "value" }
syntax, which is a joy and very clear and uncluttered.
Interestingly, though:
irb
> class String ; def to_sym ; puts "bob" ; end ; end
=> nil
> "fred".to_sym
bob
=> nil
> :"fred"
=> :fred
So Boris' point is a valid one.