2011-07-19 40 views
0

我正在使用帶註銷超時的Authlogic。我需要做的是當用戶實際超時時記錄。我甚至試圖製作一個線程,通知用戶遠離User.logged_in列表。 看來,當我把一個線程在那裏我得到2線程,而不是一個,所以我正在尋找一個更好的解決方案。Authlogic。記錄註銷超時

這樣做的最好方法是什麼?

回答

0

我最終通過將以下在應用程序控制器的頂部固定我的線程。

def check_logout 
    previous_user = {} 
    loop { 
     x = User.logged_in 
     active_user = {} 
     x.each { |a| 
      active_user[a[:login]] = a[:login] 
      previous_user[a[:login]] = a[:login] 
     } 
     puts "active = #{active_user}" 
     previous_user.each { |key,value| 
     if active_user[key] == nil then 
      puts "Login timeout for #{value}" 
      InternalLog.notify_msg("Login timeout for #{value}") 
      previous_user.delete(key) 
     end 
     } 
     sleep(30)  
    } 
    rescue => e0 
     puts "WORKER THREAD RESCUE" 
     puts e0 
     exit  end 



    if $BACKGROUND_THREAD == nil then 
     $BACKGROUND_THREAD = Thread.new do 
      check_logout 
     end 
    end 
+0

對不起,我不似乎明白了爲什麼我的格式化搞砸(固定) –