I believe we misunderstood one another here. You should either write:

> def update_tracker_reference(keys, columns)
>    Proc.new do |row|
>      columns.each do |column| 

if columns is to be provided as part of the method call, or you should write:

> def update_tracker_reference(keys)
>    Proc.new do |row|
>      COLUMNS.each do |column| 

if columns will always be COLUMNS.

Currently "columns" needs to be provided without it being used in the method.