# File src/ruby_supportlib/phusion_passenger/abstract_installer.rb, line 318
    def prompt(message, default_value = nil)
      done = false
      while !done
        print "#{message}: "

        if non_interactive? && default_value
          puts default_value
          return default_value
        end

        begin
          result = STDIN.readline
        rescue EOFError
          exit 2
        end
        result.strip!
        if result.empty?
          if default_value
            result = default_value
            done = true
          else
            done = !block_given? || yield(result)
          end
        else
          done = !block_given? || yield(result)
        end
      end
      return result
    rescue Interrupt
      raise Abort
    end