Ruby/Rails using || to determine value, using an empty string instead of a nil value

Rails adds presence method to all object that does exactly what you want

input = ''
value = input.presence || "default"
=> "default"

input = 'value'
value = input.presence || "default"
=> "value"

input = nil
value = input.presence || "default"
=> "default"

I usually do in this way:

value = input.blank? ? "default" : input

In response to the case that input might not be defined, you may guard it by:

value = input || (input.blank? ? "default" : input)
# I just tried that the parentheses are required, or else its return is incorrect

For pure ruby (not depending on Rails), you may use empty? like this:

value = input || (input.empty? ? "default" : input)

or like this (thanks @substantial for providing this):

value = (input ||= "").empty? ? "default" : input