Rails of ruby callback

например, нужно есть повторяющийся блок:

def s_to_(str)
  puts str
end

colors = %w[green, red, white]

colors.each do |color| 
   if color == 'red'
      s_to_('text1')
   end
   if color == 'green'
      s_to_('text2')
   end
   if color == 'white'
      s_to_('text3')
   end
end

на

callbacks = {
   'green' => Proc.new { |str| s_to_(str) },
   'red' => Proc.new { |str| s_to_(str) },
   'white' => Proc.new { |str| s_to_(str) },
}

colors.each_with_index do |color, i|
  callbacks[color].call('text'+i)
end

код не тестил, поэтому, возможно , не рабочий, но идеология точно верная