I usually do
value = input || \"default\"
so if input = nil
value = \"default\"
But how can I do this so in
Maybe irrelavant but I would use highline like this:
require "highline/import"
input = ask('Input: ') { |q| q.default = "default" }
It works without Rails. Really neat solution.
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