dwh 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +5 -4
- data/Rakefile +1 -1
- data/docs/DWH/Adapters/Adapter.html +33 -27
- data/docs/DWH/Adapters/Athena.html +25 -21
- data/docs/DWH/Adapters/Boolean.html +1 -1
- data/docs/DWH/Adapters/Druid.html +18 -12
- data/docs/DWH/Adapters/DuckDb.html +29 -27
- data/docs/DWH/Adapters/MySql.html +25 -19
- data/docs/DWH/Adapters/OpenAuthorizable/ClassMethods.html +3 -6
- data/docs/DWH/Adapters/OpenAuthorizable.html +5 -10
- data/docs/DWH/Adapters/Postgres.html +27 -23
- data/docs/DWH/Adapters/Snowflake.html +39 -24
- data/docs/DWH/Adapters/SqlServer.html +27 -25
- data/docs/DWH/Adapters/Trino.html +30 -30
- data/docs/DWH/Adapters.html +1 -1
- data/docs/DWH/AuthenticationError.html +1 -1
- data/docs/DWH/Behaviors.html +6 -11
- data/docs/DWH/Capabilities.html +10 -26
- data/docs/DWH/Column.html +7 -15
- data/docs/DWH/ConfigError.html +1 -1
- data/docs/DWH/ConnectionError.html +1 -1
- data/docs/DWH/DWHError.html +1 -1
- data/docs/DWH/ExecutionError.html +1 -1
- data/docs/DWH/Factory.html +1 -1
- data/docs/DWH/Functions/Arrays.html +8 -8
- data/docs/DWH/Functions/Dates.html +5 -7
- data/docs/DWH/Functions/ExtractDatePart.html +13 -25
- data/docs/DWH/Functions/Nulls.html +3 -3
- data/docs/DWH/Functions.html +6 -9
- data/docs/DWH/Logger.html +3 -5
- data/docs/DWH/OAuthError.html +1 -1
- data/docs/DWH/Settings.html +6 -9
- data/docs/DWH/StreamingStats.html +2 -3
- data/docs/DWH/Table.html +14 -26
- data/docs/DWH/TableStats.html +1 -1
- data/docs/DWH/TokenExpiredError.html +1 -1
- data/docs/DWH/UnsupportedCapability.html +1 -1
- data/docs/DWH.html +1 -1
- data/docs/_index.html +1 -1
- data/docs/file.README.html +43 -48
- data/docs/file.adapters.html +318 -343
- data/docs/file.creating-adapters.html +347 -357
- data/docs/file.getting-started.html +143 -151
- data/docs/file.usage.html +257 -278
- data/docs/index.html +43 -48
- data/docs/top-level-namespace.html +1 -1
- data/lib/dwh/adapters.rb +2 -2
- data/lib/dwh/version.rb +1 -1
- metadata +2 -2
data/docs/file.adapters.html
CHANGED
@@ -67,64 +67,61 @@
|
|
67
67
|
|
68
68
|
<h3 id="basic-configuration">Basic Configuration</h3>
|
69
69
|
|
70
|
-
<
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
</code></p>
|
70
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_postgres'>postgres</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:postgres</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
71
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>localhost</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
72
|
+
<span class='label'>port:</span> <span class='int'>5432</span><span class='comma'>,</span> <span class='comment'># Default: 5432
|
73
|
+
</span> <span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>mydb</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
74
|
+
<span class='label'>schema:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>public</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># Default: 'public'
|
75
|
+
</span> <span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>user</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
76
|
+
<span class='label'>password:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>password</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
77
|
+
<span class='label'>client_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>My Application</span><span class='tstring_end'>'</span></span> <span class='comment'># Default: 'DWH Ruby Gem'
|
78
|
+
</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
79
|
+
</code></pre>
|
81
80
|
|
82
81
|
<h3 id="ssl-configuration">SSL Configuration</h3>
|
83
82
|
|
84
|
-
<
|
85
|
-
#
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
<
|
98
|
-
<
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
```</p>
|
83
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># Basic SSL
|
84
|
+
</span><span class='id identifier rubyid_postgres'>postgres</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:postgres</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
85
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>localhost</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
86
|
+
<span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>mydb</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
87
|
+
<span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>user</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
88
|
+
<span class='label'>password:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>password</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
89
|
+
<span class='label'>ssl:</span> <span class='kw'>true</span><span class='comma'>,</span>
|
90
|
+
<span class='label'>extra_connection_params:</span> <span class='lbrace'>{</span>
|
91
|
+
<span class='label'>sslmode:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>require</span><span class='tstring_end'>'</span></span> <span class='comment'># disable, prefer, require, verify-ca, verify-full
|
92
|
+
</span> <span class='rbrace'>}</span>
|
93
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
94
|
+
|
95
|
+
<span class='comment'># Certificate-based SSL
|
96
|
+
</span><span class='id identifier rubyid_postgres'>postgres</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:postgres</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
97
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>localhost</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
98
|
+
<span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>mydb</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
99
|
+
<span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>user</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
100
|
+
<span class='label'>ssl:</span> <span class='kw'>true</span><span class='comma'>,</span>
|
101
|
+
<span class='label'>extra_connection_params:</span> <span class='lbrace'>{</span>
|
102
|
+
<span class='label'>sslmode:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>verify-full</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
103
|
+
<span class='label'>sslrootcert:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/path/to/ca-cert.pem</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
104
|
+
<span class='label'>sslcert:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/path/to/client-cert.pem</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
105
|
+
<span class='label'>sslkey:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/path/to/client-key.pem</span><span class='tstring_end'>'</span></span>
|
106
|
+
<span class='rbrace'>}</span>
|
107
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
108
|
+
</code></pre>
|
111
109
|
|
112
110
|
<h3 id="advanced-configuration">Advanced Configuration</h3>
|
113
111
|
|
114
|
-
<
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
</code></p>
|
112
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_postgres'>postgres</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:postgres</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
113
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>localhost</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
114
|
+
<span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>mydb</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
115
|
+
<span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>user</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
116
|
+
<span class='label'>password:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>password</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
117
|
+
<span class='label'>query_timeout:</span> <span class='int'>3600</span><span class='comma'>,</span> <span class='comment'># seconds, default: 3600
|
118
|
+
</span> <span class='label'>extra_connection_params:</span> <span class='lbrace'>{</span>
|
119
|
+
<span class='label'>application_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Data Analysis Tool</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
120
|
+
<span class='label'>connect_timeout:</span> <span class='int'>10</span><span class='comma'>,</span>
|
121
|
+
<span class='label'>options:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>-c maintenance_work_mem=256MB</span><span class='tstring_end'>'</span></span>
|
122
|
+
<span class='rbrace'>}</span>
|
123
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
124
|
+
</code></pre>
|
128
125
|
|
129
126
|
<h2 id="snowflake">Snowflake</h2>
|
130
127
|
|
@@ -133,358 +130,337 @@ authentication methods: Personal Access Token, Key Pair, and OAuth.</p>
|
|
133
130
|
|
134
131
|
<h3 id="basic-connection-with-personal-access-token">Basic connection with Personal Access Token</h3>
|
135
132
|
|
136
|
-
<
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
})</p>
|
133
|
+
<pre class="code ruby"><code class="ruby"><span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:snowflake</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
134
|
+
<span class='label'>auth_mode:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>pat</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
135
|
+
<span class='label'>account_identifier:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>myorg-myaccount</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
136
|
+
<span class='label'>personal_access_token:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>your-token-here</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
137
|
+
<span class='label'>warehouse:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>COMPUTE_WH</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
138
|
+
<span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ANALYTICS</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
139
|
+
<span class='label'>schema:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>PUBLIC</span><span class='tstring_end'>'</span></span>
|
140
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
145
141
|
|
146
|
-
|
142
|
+
</code></pre>
|
147
143
|
|
148
144
|
<h3 id="connection-with-key-pair-authentication">Connection with Key Pair Authentication</h3>
|
149
145
|
|
150
|
-
<
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
})</p>
|
146
|
+
<pre class="code ruby"><code class="ruby"> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:snowflake</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
147
|
+
<span class='label'>auth_mode:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>kp</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
148
|
+
<span class='label'>account_identifier:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>myorg-myaccount.us-east-1</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
149
|
+
<span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>john_doe</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
150
|
+
<span class='label'>private_key:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/path/to/private_key.pem</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
151
|
+
<span class='label'>warehouse:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>COMPUTE_WH</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
152
|
+
<span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ANALYTICS</span><span class='tstring_end'>'</span></span>
|
153
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
159
154
|
|
160
|
-
|
155
|
+
</code></pre>
|
161
156
|
|
162
157
|
<h3 id="connecting-with-oauth">Connecting with OAuth</h3>
|
163
158
|
|
164
159
|
<p>This is the Snowflake OAuth mechanism. Not the External one. You must first create an OAuth security integration and apply to the releveant roles.
|
165
160
|
Follow this <a href="https://docs.snowflake.com/en/user-guide/oauth-custom">document</a> for more.</p>
|
166
161
|
|
167
|
-
<
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
</code></p>
|
162
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_adapter'>adapter</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:snowflake</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
163
|
+
<span class='label'>auth_mode:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>oauth</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
164
|
+
<span class='label'>account_identifier:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>myorg-myaccount.us-east-1</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
165
|
+
<span class='label'>oauth_client_id:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'><YOUR_CLIENT_ID></span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
166
|
+
<span class='label'>oauth_client_secret:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'><YOUR_CLIENT_SECRET></span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
167
|
+
<span class='label'>oauth_redirect_url:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>https://localhost:3030/some/path</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
168
|
+
<span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ANALYTICS</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
169
|
+
<span class='label'>client_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>myapp</span><span class='tstring_end'>'</span></span> <span class='comment'># sent as user agent header value
|
170
|
+
</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
171
|
+
</code></pre>
|
178
172
|
|
179
173
|
<p>To successfully use OAuth you have to pass the adapter valid access and refresh tokens. Or, it can generate them from a valid authorization code.</p>
|
180
174
|
|
181
175
|
<p>The typical flow is like so:</p>
|
182
176
|
|
183
177
|
<ol>
|
184
|
-
|
185
|
-
|
186
|
-
|
178
|
+
<li>Generate an authorization code by visiting the url generated by <code>adapter.authorization_url.</code> This will redirect to the configured <code>oauth_redirect_url.</code> You must be able to retrieve the <code>code</code> from there.</li>
|
179
|
+
<li>Take the code from above and generate new access tokens: <code>adapter.generate_oauth_tokens(code)</code>. This will return Hash with access_token and refresh_token. You can cache and reuse this until the refresh_token gets expired. This method will also apply the token to the current adapter instance.</li>
|
180
|
+
<li>You can apply an existing set of tokens like so:<code>adapter.apply_oauth_tokens(access_token: token, refresh_token: token, expires_at: Time.now)</code></li>
|
187
181
|
</ol>
|
188
182
|
|
189
183
|
<h2 id="mysql-adapter">MySQL Adapter</h2>
|
190
184
|
|
191
|
-
<p>The MySQL adapter uses the <code>mysql2</code> gem. Note that MySQL
|
192
|
-
|
193
|
-
<h3 id="basic-configuration
|
194
|
-
|
195
|
-
<
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
<
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
</
|
224
|
-
|
225
|
-
<
|
226
|
-
|
227
|
-
<
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
}
|
241
|
-
})
|
242
|
-
</code></p>
|
185
|
+
<p>The MySQL adapter uses the <code>mysql2</code> gem. Note that MySQL's concept of "database" maps to "schema" in DWH.</p>
|
186
|
+
|
187
|
+
<h3 id="basic-configuration">Basic Configuration</h3>
|
188
|
+
|
189
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_mysql'>mysql</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:mysql</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
190
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># Use 127.0.0.1 for local Docker instances
|
191
|
+
</span> <span class='label'>port:</span> <span class='int'>3306</span><span class='comma'>,</span> <span class='comment'># Default: 3306
|
192
|
+
</span> <span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>mydb</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
193
|
+
<span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>user</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
194
|
+
<span class='label'>password:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>password</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
195
|
+
<span class='label'>client_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>My Application</span><span class='tstring_end'>'</span></span> <span class='comment'># Default: 'DWH Ruby Gem'
|
196
|
+
</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
197
|
+
</code></pre>
|
198
|
+
|
199
|
+
<h3 id="ssl-configuration">SSL Configuration</h3>
|
200
|
+
|
201
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># Basic SSL
|
202
|
+
</span><span class='id identifier rubyid_mysql'>mysql</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:mysql</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
203
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>127.0.0.1</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
204
|
+
<span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>mydb</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
205
|
+
<span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>user</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
206
|
+
<span class='label'>password:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>password</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
207
|
+
<span class='label'>ssl:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='comment'># Defaults ssl_mode to 'required'
|
208
|
+
</span> <span class='label'>extra_connection_params:</span> <span class='lbrace'>{</span>
|
209
|
+
<span class='label'>ssl_mode:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>verify_identity</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># disabled, preferred, required, verify_ca, verify_identity
|
210
|
+
</span> <span class='label'>sslca:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/path/to/ca-cert.pem</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
211
|
+
<span class='label'>sslcert:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/path/to/client-cert.pem</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
212
|
+
<span class='label'>sslkey:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/path/to/client-key.pem</span><span class='tstring_end'>'</span></span>
|
213
|
+
<span class='rbrace'>}</span>
|
214
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
215
|
+
</code></pre>
|
216
|
+
|
217
|
+
<h3 id="advanced-configuration">Advanced Configuration</h3>
|
218
|
+
|
219
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_mysql'>mysql</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:mysql</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
220
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>mysql.example.com</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
221
|
+
<span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>analytics</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
222
|
+
<span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>analyst</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
223
|
+
<span class='label'>password:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>password</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
224
|
+
<span class='label'>client_name:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>My App</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='comment'># defaults to 'DWH Ruby Gem'
|
225
|
+
</span> <span class='label'>query_timeout:</span> <span class='int'>1800</span><span class='comma'>,</span> <span class='comment'># seconds, default: 3600
|
226
|
+
</span> <span class='label'>extra_connection_params:</span> <span class='lbrace'>{</span>
|
227
|
+
<span class='label'>encoding:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>utf8mb4</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
228
|
+
<span class='label'>read_timeout:</span> <span class='int'>60</span><span class='comma'>,</span>
|
229
|
+
<span class='label'>write_timeout:</span> <span class='int'>60</span><span class='comma'>,</span>
|
230
|
+
<span class='label'>connect_timeout:</span> <span class='int'>10</span>
|
231
|
+
<span class='rbrace'>}</span>
|
232
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
233
|
+
</code></pre>
|
243
234
|
|
244
235
|
<h2 id="sql-server-adapter">SQL Server Adapter</h2>
|
245
236
|
|
246
237
|
<p>The SQL Server adapter uses the <code>tiny_tds</code> gem and supports both on-premises and Azure SQL Server.</p>
|
247
238
|
|
248
|
-
<h3 id="basic-configuration
|
239
|
+
<h3 id="basic-configuration">Basic Configuration</h3>
|
249
240
|
|
250
|
-
<
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
</code></p>
|
241
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_sqlserver'>sqlserver</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:sqlserver</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
242
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>localhost</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
243
|
+
<span class='label'>port:</span> <span class='int'>1433</span><span class='comma'>,</span> <span class='comment'># Default: 1433
|
244
|
+
</span> <span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>mydb</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
245
|
+
<span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>sa</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
246
|
+
<span class='label'>password:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>password</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
247
|
+
<span class='label'>client_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>My Application</span><span class='tstring_end'>'</span></span> <span class='comment'># Default: 'DWH Ruby Gem'
|
248
|
+
</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
249
|
+
</code></pre>
|
260
250
|
|
261
251
|
<h3 id="azure-sql-server">Azure SQL Server</h3>
|
262
252
|
|
263
|
-
<
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
<
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
})
|
290
|
-
</code></p>
|
253
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_azure_sql'>azure_sql</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:sqlserver</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
254
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>myserver.database.windows.net</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
255
|
+
<span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>mydb</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
256
|
+
<span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>myuser@myserver</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
257
|
+
<span class='label'>password:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>password</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
258
|
+
<span class='label'>azure:</span> <span class='kw'>true</span><span class='comma'>,</span>
|
259
|
+
<span class='label'>client_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>My Application</span><span class='tstring_end'>'</span></span>
|
260
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
261
|
+
</code></pre>
|
262
|
+
|
263
|
+
<h3 id="advanced-configuration">Advanced Configuration</h3>
|
264
|
+
|
265
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_sqlserver'>sqlserver</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:sqlserver</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
266
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>sql.example.com</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
267
|
+
<span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>analytics</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
268
|
+
<span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>analyst</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
269
|
+
<span class='label'>password:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>password</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
270
|
+
<span class='label'>query_timeout:</span> <span class='int'>1800</span><span class='comma'>,</span> <span class='comment'># seconds, default: 3600
|
271
|
+
</span> <span class='label'>extra_connection_params:</span> <span class='lbrace'>{</span>
|
272
|
+
<span class='label'>container:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='comment'># For SQL Server running in containers
|
273
|
+
</span> <span class='label'>use_utf16:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='comment'># Character encoding options
|
274
|
+
</span> <span class='label'>timeout:</span> <span class='int'>60</span><span class='comma'>,</span> <span class='comment'># Connection timeout
|
275
|
+
</span> <span class='label'>login_timeout:</span> <span class='int'>60</span> <span class='comment'># Login timeout
|
276
|
+
</span> <span class='rbrace'>}</span>
|
277
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
278
|
+
</code></pre>
|
291
279
|
|
292
280
|
<h3 id="multi-database-operations">Multi-Database Operations</h3>
|
293
281
|
|
294
|
-
<
|
295
|
-
|
296
|
-
tables = sqlserver.tables(catalog: ‘other_database’)</p>
|
282
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># List tables in another database
|
283
|
+
</span><span class='id identifier rubyid_tables'>tables</span> <span class='op'>=</span> <span class='id identifier rubyid_sqlserver'>sqlserver</span><span class='period'>.</span><span class='id identifier rubyid_tables'>tables</span><span class='lparen'>(</span><span class='label'>catalog:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>other_database</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
297
284
|
|
298
|
-
<
|
299
|
-
|
300
|
-
|
301
|
-
metadata = sqlserver
|
302
|
-
|
285
|
+
<span class='comment'># Get metadata for table in another database
|
286
|
+
</span><span class='id identifier rubyid_metadata'>metadata</span> <span class='op'>=</span> <span class='id identifier rubyid_sqlserver'>sqlserver</span><span class='period'>.</span><span class='id identifier rubyid_metadata'>metadata</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>other_database.dbo.my_table</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
287
|
+
<span class='comment'># OR
|
288
|
+
</span><span class='id identifier rubyid_metadata'>metadata</span> <span class='op'>=</span> <span class='id identifier rubyid_sqlserver'>sqlserver</span><span class='period'>.</span><span class='id identifier rubyid_metadata'>metadata</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>my_table</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>catalog:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>other_database</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
289
|
+
</code></pre>
|
303
290
|
|
304
291
|
<h2 id="duckdb-adapter">DuckDB Adapter</h2>
|
305
292
|
|
306
293
|
<p>The DuckDB adapter uses the <code>ruby-duckdb</code> gem for in-process analytical queries. This requires DuckDB header files and library to already be installed.</p>
|
307
294
|
|
308
|
-
<h3 id="basic-configuration
|
295
|
+
<h3 id="basic-configuration">Basic Configuration</h3>
|
309
296
|
|
310
|
-
<
|
311
|
-
#
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
})</p>
|
297
|
+
<pre class="code ruby"><code class="ruby"><span class='comment'># File-based database
|
298
|
+
</span><span class='id identifier rubyid_duckdb'>duckdb</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:duckdb</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
299
|
+
<span class='label'>file:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/path/to/my/database.duckdb</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
300
|
+
<span class='label'>schema:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>main</span><span class='tstring_end'>'</span></span> <span class='comment'># Default: 'main'
|
301
|
+
</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
316
302
|
|
317
|
-
<
|
318
|
-
|
319
|
-
file
|
320
|
-
})
|
321
|
-
|
303
|
+
<span class='comment'># In-memory database
|
304
|
+
</span><span class='id identifier rubyid_duckdb'>duckdb</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:duckdb</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
305
|
+
<span class='label'>file:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>:memory:</span><span class='tstring_end'>'</span></span>
|
306
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
307
|
+
</code></pre>
|
322
308
|
|
323
309
|
<h3 id="read-only-mode">Read-Only Mode</h3>
|
324
310
|
|
325
|
-
<
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
<
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
})
|
346
|
-
</code></p>
|
311
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_duckdb'>duckdb</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:duckdb</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
312
|
+
<span class='label'>file:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/path/to/readonly/database.duckdb</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
313
|
+
<span class='label'>duck_config:</span> <span class='lbrace'>{</span>
|
314
|
+
<span class='label'>access_mode:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>READ_ONLY</span><span class='tstring_end'>'</span></span>
|
315
|
+
<span class='rbrace'>}</span>
|
316
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
317
|
+
</code></pre>
|
318
|
+
|
319
|
+
<h3 id="advanced-configuration">Advanced Configuration</h3>
|
320
|
+
|
321
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_duckdb'>duckdb</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:duckdb</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
322
|
+
<span class='label'>file:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/path/to/my/database.duckdb</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
323
|
+
<span class='label'>duck_config:</span> <span class='lbrace'>{</span>
|
324
|
+
<span class='label'>access_mode:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>READ_WRITE</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
325
|
+
<span class='label'>max_memory:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>2GB</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
326
|
+
<span class='label'>threads:</span> <span class='int'>4</span><span class='comma'>,</span>
|
327
|
+
<span class='label'>temp_directory:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>/tmp/duckdb</span><span class='tstring_end'>'</span></span>
|
328
|
+
<span class='rbrace'>}</span>
|
329
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
330
|
+
</code></pre>
|
347
331
|
|
348
332
|
<h2 id="trino-adapter">Trino Adapter</h2>
|
349
333
|
|
350
334
|
<p>The Trino adapter requires the <code>trino-client-ruby</code> gem and works with both Trino and Presto.</p>
|
351
335
|
|
352
|
-
<h3 id="basic-configuration
|
353
|
-
|
354
|
-
<
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
<
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
})
|
378
|
-
</code></p>
|
336
|
+
<h3 id="basic-configuration">Basic Configuration</h3>
|
337
|
+
|
338
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_trino'>trino</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:trino</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
339
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>localhost</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
340
|
+
<span class='label'>port:</span> <span class='int'>8080</span><span class='comma'>,</span> <span class='comment'># Default: 8080
|
341
|
+
</span> <span class='label'>catalog:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>hive</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># Required
|
342
|
+
</span> <span class='label'>schema:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>default</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># Optional
|
343
|
+
</span> <span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>analyst</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
344
|
+
<span class='label'>password:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>password</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># Optional
|
345
|
+
</span> <span class='label'>client_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>My Application</span><span class='tstring_end'>'</span></span> <span class='comment'># Default: 'DWH Ruby Gem'
|
346
|
+
</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
347
|
+
</code></pre>
|
348
|
+
|
349
|
+
<h3 id="ssl-configuration">SSL Configuration</h3>
|
350
|
+
|
351
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_trino'>trino</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:trino</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
352
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>trino.example.com</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
353
|
+
<span class='label'>port:</span> <span class='int'>443</span><span class='comma'>,</span>
|
354
|
+
<span class='label'>ssl:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='comment'># will set {ssl: {verify: false}}
|
355
|
+
</span> <span class='label'>catalog:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>hive</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
356
|
+
<span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>analyst</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
357
|
+
<span class='label'>password:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>password</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
358
|
+
<span class='label'>client_name:</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>My App</span><span class='tstring_end'>"</span></span>
|
359
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
360
|
+
</code></pre>
|
379
361
|
|
380
362
|
<h3 id="advanced-configuration-with-headers">Advanced Configuration with Headers</h3>
|
381
363
|
|
382
|
-
<
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
'X-Trino-
|
393
|
-
'X-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
</code></p>
|
364
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_trino'>trino</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:trino</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
365
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>trino.example.com</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
366
|
+
<span class='label'>port:</span> <span class='int'>8080</span><span class='comma'>,</span>
|
367
|
+
<span class='label'>catalog:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>delta_lake</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
368
|
+
<span class='label'>schema:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>analytics</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
369
|
+
<span class='label'>username:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>analyst</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
370
|
+
<span class='label'>query_timeout:</span> <span class='int'>1800</span><span class='comma'>,</span> <span class='comment'># seconds, default: 3600
|
371
|
+
</span> <span class='label'>extra_connection_params:</span> <span class='lbrace'>{</span>
|
372
|
+
<span class='label'>http_headers:</span> <span class='lbrace'>{</span>
|
373
|
+
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>X-Trino-User</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Real User Name</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
374
|
+
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>X-Trino-Source</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Analytics Dashboard</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
375
|
+
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>X-Forwarded-Request</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>client-request-id</span><span class='tstring_end'>'</span></span>
|
376
|
+
<span class='rbrace'>}</span><span class='comma'>,</span>
|
377
|
+
<span class='label'>ssl:</span> <span class='lbrace'>{</span>
|
378
|
+
<span class='label'>verify:</span> <span class='kw'>true</span><span class='comma'>,</span>
|
379
|
+
<span class='rbrace'>}</span>
|
380
|
+
<span class='rbrace'>}</span>
|
381
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
382
|
+
</code></pre>
|
402
383
|
|
403
384
|
<h2 id="apache-druid-adapter">Apache Druid Adapter</h2>
|
404
385
|
|
405
386
|
<p>The Druid adapter uses HTTP API calls via the <code>faraday</code> gem for real-time analytics.</p>
|
406
387
|
|
407
|
-
<h3 id="basic-configuration
|
388
|
+
<h3 id="basic-configuration">Basic Configuration</h3>
|
408
389
|
|
409
|
-
<
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
</code></p>
|
390
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_druid'>druid</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:druid</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
391
|
+
<span class='label'>protocol:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>http</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># 'http' or 'https'
|
392
|
+
</span> <span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>localhost</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
393
|
+
<span class='label'>port:</span> <span class='int'>8080</span><span class='comma'>,</span> <span class='comment'># Default: 8081
|
394
|
+
</span> <span class='label'>client_name:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>My Application</span><span class='tstring_end'>'</span></span> <span class='comment'># Default: 'DWH Ruby Gem'
|
395
|
+
</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
396
|
+
</code></pre>
|
417
397
|
|
418
398
|
<h3 id="https-with-basic-authentication">HTTPS with Basic Authentication</h3>
|
419
399
|
|
420
|
-
<
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
</code></p>
|
400
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_druid'>druid</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:druid</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
401
|
+
<span class='label'>protocol:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>https</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
402
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>druid.example.com</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
403
|
+
<span class='label'>port:</span> <span class='int'>443</span><span class='comma'>,</span>
|
404
|
+
<span class='label'>basic_auth:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>base64_encoded_credentials</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># Base64 encoded username:password
|
405
|
+
</span> <span class='label'>query_timeout:</span> <span class='int'>600</span><span class='comma'>,</span> <span class='comment'># seconds, default: 600
|
406
|
+
</span> <span class='label'>open_timeout:</span> <span class='int'>30</span> <span class='comment'># connection timeout, default: nil
|
407
|
+
</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
408
|
+
</code></pre>
|
430
409
|
|
431
410
|
<h3 id="advanced-configuration-with-context">Advanced Configuration with Context</h3>
|
432
411
|
|
433
|
-
<
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
</code></p>
|
412
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_druid'>druid</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:druid</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
413
|
+
<span class='label'>protocol:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>https</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
414
|
+
<span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>druid.example.com</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
415
|
+
<span class='label'>port:</span> <span class='int'>8080</span><span class='comma'>,</span>
|
416
|
+
<span class='label'>basic_auth:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>dXNlcjpwYXNz</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># base64 for 'user:pass'
|
417
|
+
</span> <span class='label'>extra_connection_params:</span> <span class='lbrace'>{</span>
|
418
|
+
<span class='label'>context:</span> <span class='lbrace'>{</span>
|
419
|
+
<span class='label'>user:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>analyst_name</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
420
|
+
<span class='label'>team:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>data_engineering</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
421
|
+
<span class='label'>priority:</span> <span class='int'>10</span><span class='comma'>,</span>
|
422
|
+
<span class='label'>useCache:</span> <span class='kw'>true</span>
|
423
|
+
<span class='rbrace'>}</span>
|
424
|
+
<span class='rbrace'>}</span>
|
425
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
426
|
+
</code></pre>
|
449
427
|
|
450
428
|
<h2 id="aws-athena-adapter">AWS Athena Adapter</h2>
|
451
429
|
|
452
430
|
<p>The Athean adapter requires the <code>aws-athena-sdk</code> gem and works with both Trino and Presto.</p>
|
453
431
|
|
454
|
-
<h3 id="basic-configuration
|
455
|
-
|
456
|
-
<
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
<
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
</
|
486
|
-
|
487
|
-
<h3 id="advanced-configuration-with-headers-1">Advanced Configuration with Headers</h3>
|
432
|
+
<h3 id="basic-configuration">Basic Configuration</h3>
|
433
|
+
|
434
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_athena'>athena</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:athena</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
435
|
+
<span class='label'>region:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>us-east-1</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
436
|
+
<span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>default</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
437
|
+
<span class='label'>s3_output_location:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>s3://my-athena-results-bucket/queries/</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
438
|
+
<span class='label'>access_key_id:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>AKIAIOSFODNN7EXAMPLE</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
439
|
+
<span class='label'>secret_access_key:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
440
|
+
<span class='label'>catalog:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>hive</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># optional will default to awsdatacatalog
|
441
|
+
</span> <span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>default</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># Optional. Db or schema
|
442
|
+
</span> <span class='label'>workgroup:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>my-dept-strata</span><span class='tstring_end'>'</span></span> <span class='comment'># optional workgroup
|
443
|
+
</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
444
|
+
</code></pre>
|
445
|
+
|
446
|
+
<h3 id="ssl-configuration">SSL Configuration</h3>
|
447
|
+
|
448
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_athena'>athena</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:athena</span><span class='comma'>,</span> <span class='lbrace'>{</span>
|
449
|
+
<span class='label'>region:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>us-east-1</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
450
|
+
<span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>default</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
451
|
+
<span class='label'>s3_output_location:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>s3://my-athena-results-bucket/queries/</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
452
|
+
<span class='label'>access_key_id:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>AKIAIOSFODNN7EXAMPLE</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
453
|
+
<span class='label'>secret_access_key:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
454
|
+
<span class='label'>catalog:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>hive</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># optional will default to awsdatacatalog
|
455
|
+
</span> <span class='label'>database:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>default</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># Optional. Db or schema
|
456
|
+
</span> <span class='label'>workgroup:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>my-dept-strata</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='comment'># optional workgroup
|
457
|
+
</span> <span class='label'>extra_connection_params:</span> <span class='lbrace'>{</span>
|
458
|
+
<span class='label'>ssl_ca_directory:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>path/to/certs/</span><span class='tstring_end'>'</span></span>
|
459
|
+
<span class='rbrace'>}</span>
|
460
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span>
|
461
|
+
</code></pre>
|
462
|
+
|
463
|
+
<h3 id="advanced-configuration-with-headers">Advanced Configuration with Headers</h3>
|
488
464
|
|
489
465
|
<p>See full list of config options here: <a href="https://docs.aws.amazon.com/sdk-for-ruby/v2/api/Aws/Athena/Client.html#initialize-instance_method">athena-api</a></p>
|
490
466
|
|
@@ -492,19 +468,18 @@ athena = DWH.create(:athena, {
|
|
492
468
|
|
493
469
|
<p>DWH validates configuration parameters at creation time:</p>
|
494
470
|
|
495
|
-
<
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
</code></p>
|
471
|
+
<pre class="code ruby"><code class="ruby"><span class='kw'>begin</span>
|
472
|
+
<span class='id identifier rubyid_adapter'>adapter</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='period'>.</span><span class='id identifier rubyid_create'><span class='object_link'><a href="DWH/Factory.html#create-instance_method" title="DWH::Factory#create (method)">create</a></span></span><span class='lparen'>(</span><span class='symbol'>:postgres</span><span class='comma'>,</span> <span class='lbrace'>{</span> <span class='label'>host:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>localhost</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span><span class='rparen'>)</span> <span class='comment'># Missing required database
|
473
|
+
</span><span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="DWH.html" title="DWH (module)">DWH</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="DWH/ConfigError.html" title="DWH::ConfigError (class)">ConfigError</a></span></span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
474
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Configuration error: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
475
|
+
<span class='kw'>end</span>
|
476
|
+
</code></pre>
|
502
477
|
|
503
478
|
<p>Each adapter defines required and optional parameters with validation rules. Check the adapter-specific sections above for the complete list of supported parameters.</p>
|
504
479
|
</div></div>
|
505
480
|
|
506
481
|
<div id="footer">
|
507
|
-
Generated on
|
482
|
+
Generated on Mon Aug 25 10:59:27 2025 by
|
508
483
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
509
484
|
0.9.37 (ruby-3.4.4).
|
510
485
|
</div>
|