Вместо интерполяции Вы могли использовать erb
. Этот блог дает простой пример использования ERB,
require 'erb'
name = "Rasmus"
template_string = "My name is <%= name %>"
template = ERB.new template_string
puts template.result # prints "My name is Rasmus"
Kernel#eval
мог использоваться, также. Но большую часть времени Вы хотите использовать простую шаблонную систему как erb
.
Ну, я ответ второго stesch использования erb в этой ситуации. Но можно использовать оценку как это. Если data.txt имеет содержание:
he #{foo} he
Затем можно загрузить и интерполировать как это:
str = File.read("data.txt")
foo = 3
result = eval("\"" + str + "\"")
И result
будет:
"he 3 he"
2 самых очевидных ответа были уже даны, но если они не делают к нему по некоторым причинам, существует оператор формата:
>> x = 1
=> 1
>> File.read('temp') % ["#{x}", 'saddle']
=> "The number of horses is 1, where each horse has a saddle\n"
, где вместо # {} волшебство у Вас есть более старое (но испытанный) %s волшебство...