2016-11-09 55 views
1

我有下面的代碼片斷,它爲各種數據庫生成一個JDBC連接字符串。在這種情況下,Dash DB和IBM DB2。以下是我用於在DB2中生成連接字符串的代碼的結構。現在JDBC連接字符串中的類和方法的Ruby繼承

def connection_creation_information 
    @connection_creation_information ||= Class.new(JDBCConnectionCreationInformation) do 

    private 

    def connection_string_primary_params(options) 
     params = [] 

     params << "currentSchema=#{options[:schema] || options[:username]}" 

     params << options[:jdbc_additional_params] if options[:jdbc_additional_params] 

     params 
    end 

    def connection_string_scheme 
     'db2' 
    end 

    def connection_string_params(options) 
     super + ';' 
    end 

    def primary_param_separator 
     ';' 
    end 

    def base_separator 
     ':' 
    end 
    end.new 
end 

,DashDB使用defaultSchema定義默認的模式,而在DB2,它使用currentSchema。我試圖儘量減少冗餘代碼,所以現在,Dash DB的代碼繼承自DB2,使用class HTDialectDashDB < HTDialectDB2並覆蓋重要的一行/方法 - connection_string_primary_params()

在我的Dash DB類中,我正在執行以下:

def connection_creation_information 
    @connection_creation_information ||= Class.new(JDBCConnectionCreationInformation) do 

    private 

    def connection_string_primary_params(options) 
     params = [] 

     params << "defaultSchema=#{options[:schema] || options[:username]}" 

     params << options[:jdbc_additional_params] if options[:jdbc_additional_params] 

     params 
    end 

    end.new 
end 

然而,錯誤被拋出,我必須實現DB2代碼所描述的其他四個方法,這是我想避免的,因爲它只是冗餘代碼。

我能在這種情況下做什麼?

+2

無法幫助Ruby,但dashDB(基本上是DB2)對標準DB2連接字符串屬性應該沒問題。 – mustaccio

+0

你是對的!謝謝! – theGreenCabbage

回答