Ignore a iteração em Enumerable # collect

(1..4).collect do |x|
  next if x == 3
  x + 1
end # => [2, 3, nil, 5]
    # desired => [2, 3, 5]

Se a condição paranext é cumprida,collect colocanil na matriz, enquanto o que estou tentando fazer é colocarnão elemento na matriz retornada se a condição for atendida. Isso é possível sem chamardelete_if { |x| x == nil } na matriz retornada?

(Usando Ruby 1.8.7; meu trecho de código é bastante abstrato)

questionAnswers(5)

yourAnswerToTheQuestion