String concatenation in Ruby

ghz 1years ago ⋅ 6253 views

Question

I am looking for a more elegant way of concatenating strings in Ruby.

I have the following line:

source = "#{ROOT_DIR}/" << project << "/App.config"

Is there a nicer way of doing this?

And for that matter what is the difference between << and +?


Answer

You can do that in several ways:

  1. As you shown with << but that is not the usual way

  2. With string interpolation

    source = "#{ROOT_DIR}/#{project}/App.config"

  3. with +

    source = "#{ROOT_DIR}/" + project + "/App.config"

The second method seems to be more efficient in term of memory/speed from what I've seen (not measured though). All three methods will throw an uninitialized constant error when ROOT_DIR is nil.

When dealing with pathnames, you may want to use File.join to avoid messing up with pathname separator.

In the end, it is a matter of taste.