Есть один, которого вы все пропустили.
ЗДЕСЬ документ
попробуйте это
require 'benchmark'
mark = <<EOS
a string
EOS
n = 1000000
Benchmark.bm do |x|
x.report("assign here doc") {n.times do; mark; end}
end
Это дало мне
`asign here doc 0.141000 0.000000 0.141000 ( 0.140625)`
и
'concat single quotes 1.813000 0.000000 1.813000 ( 1.843750)'
'concat double quotes 1.812000 0.000000 1.812000 ( 1.828125)'
так что, конечно, лучше, чем concat и писать все эти путы.
Мне бы хотелось, чтобы Руби преподавал больше по языку манипулирования документами.
В конце концов, разве мы не делаем это в Rails, Sinatra и при выполнении тестов?