I would change `get_value_from_stdin` to allow empty values.
Something like:
```ruby
    def get_value_from_stdin(valid_regex, error_msg, allow_empty = false)
      while input = $stdin.readline.chomp.strip do
        unless input =~ valid_regex
          puts error_msg
        else
          break
        end
      end

      return input
    end
```
Then you don't have to check the user input in this method and all of the user interaction is moved to one place.