если я правильно понял, вы хотите использовать локальные переменные потока (см. ruby rdoc для темы # [])
Из документа:
a = Thread.new { Thread.current["name"] = "A"; Thread.stop }
b = Thread.new { Thread.current[:name] = "B"; Thread.stop }
c = Thread.new { Thread.current["name"] = "C"; Thread.stop }
Thread.list.each {|x| puts "#{x.inspect}: #{x[:name]}" }
produces:
#<Thread:0x401b3b3c sleep>: C
#<Thread:0x401b3bc8 sleep>: B
#<Thread:0x401b3c68 sleep>: A
#<Thread:0x401bdf4c run>:
Итак, ваш пример будет использовать
Thread.current[:variable] = "abc"
Thread.current[:variable] # => "abc"
везде, где вы использовали variable
до