2015-11-11 81 views
2

我使用Docker運行我的Ruby應用程序,並將MySQL作爲數據庫。我需要爲我的Ruby應用程序等待MySQL完成加載並建立連接。Ruby:捕獲續集:: DatabaseConnectionError

我用下面的代碼:

def connect_to_db 
    begin 
    puts "Trying to connect to Mysql" 
    Sequel::Model.db = Sequel.connect(// Connection stuff in here) 
    rescue Sequel::Error => e 
    puts "Mysql connection failed #{e.message}: Retrying." 
    retry 
    end 
end 

connect_to_db() 

這將運行一次,然後我得到一個錯誤 - Sequel::DatabaseConnectionError: Mysql2::Error: Unknown MySQL server host (25) - 它不會進入rescue塊不會重試。

我試過rescue Sequel::DatabaseConnectionError但是這給出了相同的結果。

我需要在這裏拯救什麼?

+0

這不工作的原因是,續集不連接,直到它需要運行一個查詢,你是不是嘗試運行內部查詢connect_to_db方法。 –

回答

0

得到它與db.test_connection工作:

def connect_to_db_with_mysql_driver 
    begin 
    puts "Trying to connect to Mysql" 
    db = Sequel.connect(
      // Connection stuff 
     ) 
    if db.test_connection == true 
     Sequel::Model.db = db 
    else 
     raise "Mysql connection failed." 
    end 
    rescue => ex 
    puts ex 
    puts "Retrying..." 
    retry 
    end 
end