Удалить пустые строки:
str.gsub /^$\n/, ''
Примечание: в отличие от некоторых других решений, это фактически удаляет пустые строки, а не разрывы строк:)
>> a = "a\n\nb\n"
=> "a\n\nb\n"
>> a.gsub /^$\n/, ''
=> "a\nb\n"
Объяснение: соответствует началу ^
и концу $
строки, в которой нет ничего, после чего следует разрыв строки.
Альтернативное, более явное (хотя и менее изящное) решение:
str.each_line.reject{|x| x.strip == ""}.join