Проблема в том, что вы эффективно передаете "new_name"
на gsub
каждый раз. Это потому, что :new_name.to_s
просто возвращает строковое представление символа :new_name
.
Вы уже разрешаете пользователю передавать аргументы в вашу задачу:
task :change_name, :new_name
# ...
end
Однако на самом деле вы не получаете массив аргументов, который передается блоку, данному методу task
в качестве второго формального параметра:
task :change_name, :new_name do |task, args|
args.with_defaults new_name: 'Funk'
# ...
end
С аргументами в руках, все, что вам нужно сделать, это получить новое имя:
file << text.gsub 'Framework', args[:new_name]