2016-11-09 2 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 

DB2で、それはcurrentSchemaを使用しながら、DashDBは、デフォルトのスキーマを定義するためにdefaultSchemaを使用しています。ダッシュDBのコードは、class HTDialectDashDB < HTDialectDB2を使用してDB2から継承し、重要な1行/メソッドをオーバーライドします。 - connection_string_primary_params()

私のダッシュ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コードで説明した4つの他の方法を、実装しなければならないことを投げされています。

この場合、私は何ができますか?

+2

Rubyを手助けすることはできませんが、基本的にDB2であるdashDBは、標準のDB2接続文字列プロパティで正常に動作するはずです。 – mustaccio

+0

あなたは正しいです!ありがとうございました! – theGreenCabbage

答えて

0

ダッシュDBとDB2の両方にcurrentSchemaを使用してください。

関連する問題