opendal 0.1.7.pre.rc.2-arm64-darwin

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0106a07ec2743133e4b190224fc2f75d2d686164510a704e55e55b3e37f0c73b
4
+ data.tar.gz: 6c06ef1fee28c9ec7b18f74a4c32ad0a67ee9b3f75a52fbc3e08a2e372f7ca2f
5
+ SHA512:
6
+ metadata.gz: faced7809b899f8f064f89fa59de617c88bcbaa84e871893b960813fd2527cc2dbd9c978f7effb9df54c42b6fb193993308cd04aa5860bb5ca7662f1b8723027
7
+ data.tar.gz: 59beca2c4f7016b022da0c67d69a5b62ca3706e2b5381d818fb55f8ae07a45e6279b7557df21b703f35e5ceffef54e4f8f9f9a5c322b102bbcd712cbddc9494c
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /tmp/
8
+ /target/
9
+ *.bundle
10
+ *.so
11
+ Gemfile.lock
12
+ Cargo.lock
13
+
14
+ /core/
data/.standard.yml ADDED
@@ -0,0 +1,20 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ # For available configuration options, see:
19
+ # https://github.com/testdouble/standard
20
+ ruby_version: 3.2
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.3
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ --markup=markdown
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,32 @@
1
+ # Contributing to Apache OpenDAL™ Ruby Binding
2
+
3
+ ## Development
4
+
5
+ Install gem and its dependencies:
6
+
7
+ ```shell
8
+ bundle
9
+ ```
10
+
11
+ Build bindings:
12
+
13
+ ```shell
14
+ bundle exec rake compile
15
+ ```
16
+
17
+ Run tests:
18
+
19
+ ```shell
20
+ bundle exec rake test:base
21
+
22
+ # Optional
23
+ OPENDAL_TEST=fs bundle exec rake test:service
24
+ ```
25
+
26
+ Run linters:
27
+
28
+ ```shell
29
+ bundle exec rake standard:fix
30
+ rustfmt --config-path ../../rustfmt.toml src/*.rs # Run rustfmt for Rust files
31
+ cargo clippy --fix --all-targets # Run rust linter clippy
32
+ ```
data/Cargo.toml ADDED
@@ -0,0 +1,68 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ [package]
19
+ name = "opendal-ruby"
20
+ publish = false
21
+
22
+ authors = ["Apache OpenDAL <dev@opendal.apache.org>"]
23
+ edition = "2024"
24
+ homepage = "https://opendal.apache.org/"
25
+ license = "Apache-2.0"
26
+ repository = "https://github.com/apache/opendal"
27
+ rust-version = "1.91"
28
+ version = "0.1.7-rc.2"
29
+
30
+ [lib]
31
+ crate-type = ["cdylib"]
32
+ doc = false
33
+ name = "opendal_ruby"
34
+
35
+ [dependencies]
36
+ magnus = { version = "0.8", features = ["bytes", "io"] }
37
+ # 1. we don't use published core but a local copy
38
+ # 2. for a source release, this path must be the local "./core".
39
+ # we set it via rake copy_core. Read more in:
40
+ # - Rakefile
41
+ # - opendal.gemspec
42
+ opendal = { version = ">=0", path = "../../core", features = [
43
+ "blocking",
44
+ "layers-throttle",
45
+ # These are default features before v0.46. TODO: change to optional features
46
+ "services-azblob",
47
+ "services-azdls",
48
+ "services-cos",
49
+ "services-fs",
50
+ "services-gcs",
51
+ "services-ghac",
52
+ "services-http",
53
+ "services-ipmfs",
54
+ "services-memory",
55
+ "services-obs",
56
+ "services-oss",
57
+ "services-s3",
58
+ "services-webdav",
59
+ "services-webhdfs",
60
+ "services-azfile",
61
+ ] }
62
+ rb-sys = { version = "0.9.110", default-features = false }
63
+ # should be in sync with opendal
64
+ bytes = "1.6"
65
+ tokio = { version = "1", features = ["full"] }
66
+
67
+ [build-dependencies]
68
+ rb-sys-env = "0.2.3"
data/DEPENDENCIES.md ADDED
@@ -0,0 +1,9 @@
1
+ # Dependencies
2
+
3
+ ## Rust Part Dependencies
4
+
5
+ Refer to [DEPENDENCIES.rust.tsv](DEPENDENCIES.rust.tsv) for the full list.
6
+
7
+ ## Ruby Part Dependencies
8
+
9
+ No extra runtime dependencies.
@@ -0,0 +1,318 @@
1
+ crate Apache-2.0 Apache-2.0 WITH LLVM-exception BSD-2-Clause BSD-3-Clause BSL-1.0 CC0-1.0 CDLA-Permissive-2.0 ISC LGPL-2.1-or-later MIT MIT-0 Unicode-3.0 Unlicense Zlib
2
+ aes@0.8.4 X X
3
+ aho-corasick@1.1.4 X X
4
+ allocator-api2@0.2.21 X X
5
+ anyhow@1.0.102 X X
6
+ async-trait@0.1.89 X X
7
+ atomic-waker@1.1.2 X X
8
+ autocfg@1.5.0 X X
9
+ aws-lc-rs@1.17.0 X X
10
+ aws-lc-sys@0.41.0 X X X X X
11
+ backon@1.6.0 X
12
+ base64@0.22.1 X X
13
+ base64ct@1.8.3 X X
14
+ bindgen@0.72.1 X
15
+ bitflags@2.11.1 X X
16
+ block-buffer@0.10.4 X X
17
+ block-buffer@0.12.0 X X
18
+ block-padding@0.3.3 X X
19
+ bumpalo@3.20.2 X X
20
+ bytes@1.11.1 X
21
+ cbc@0.1.2 X X
22
+ cc@1.2.62 X X
23
+ cexpr@0.6.0 X X
24
+ cfg-if@1.0.4 X X
25
+ cipher@0.4.4 X X
26
+ clang-sys@1.8.1 X
27
+ cmake@0.1.58 X X
28
+ combine@4.6.7 X
29
+ const-oid@0.10.2 X X
30
+ const-oid@0.9.6 X X
31
+ const-random@0.1.18 X X
32
+ const-random-macro@0.1.16 X X
33
+ core-foundation@0.10.1 X X
34
+ core-foundation-sys@0.8.7 X X
35
+ cpufeatures@0.2.17 X X
36
+ cpufeatures@0.3.0 X X
37
+ crc32c@0.6.8 X X
38
+ crossbeam-utils@0.8.21 X X
39
+ crunchy@0.2.4 X
40
+ crypto-common@0.1.7 X X
41
+ crypto-common@0.2.2 X X
42
+ ctor@1.0.6 X X
43
+ dashmap@6.2.1 X
44
+ der@0.7.10 X X
45
+ deranged@0.5.8 X X
46
+ digest@0.10.7 X X
47
+ digest@0.11.3 X X
48
+ displaydoc@0.2.5 X X
49
+ dlv-list@0.5.2 X X
50
+ dunce@1.0.5 X X X
51
+ either@1.16.0 X X
52
+ equivalent@1.0.2 X X
53
+ errno@0.3.14 X X
54
+ fastrand@2.4.1 X X
55
+ find-msvc-tools@0.1.9 X X
56
+ foldhash@0.2.0 X
57
+ form_urlencoded@1.2.2 X X
58
+ fs_extra@1.3.0 X
59
+ futures@0.3.32 X X
60
+ futures-channel@0.3.32 X X
61
+ futures-core@0.3.32 X X
62
+ futures-executor@0.3.32 X X
63
+ futures-io@0.3.32 X X
64
+ futures-macro@0.3.32 X X
65
+ futures-sink@0.3.32 X X
66
+ futures-task@0.3.32 X X
67
+ futures-timer@3.0.4 X X
68
+ futures-util@0.3.32 X X
69
+ generic-array@0.14.7 X
70
+ getrandom@0.2.17 X X
71
+ getrandom@0.3.4 X X
72
+ getrandom@0.4.2 X X
73
+ ghac@0.3.0 X
74
+ glob@0.3.3 X X
75
+ gloo-timers@0.3.0 X X
76
+ governor@0.10.4 X
77
+ hashbrown@0.14.5 X X
78
+ hashbrown@0.16.1 X X
79
+ hex@0.4.3 X X
80
+ hmac@0.12.1 X X
81
+ http@1.4.0 X X
82
+ http-body@1.0.1 X
83
+ http-body-util@0.1.3 X
84
+ httparse@1.10.1 X X
85
+ hybrid-array@0.4.12 X X
86
+ hyper@1.9.0 X
87
+ hyper-rustls@0.27.9 X X X
88
+ hyper-util@0.1.20 X
89
+ icu_collections@2.1.1 X
90
+ icu_locale_core@2.1.1 X
91
+ icu_normalizer@2.1.1 X
92
+ icu_normalizer_data@2.1.1 X
93
+ icu_properties@2.1.2 X
94
+ icu_properties_data@2.1.2 X
95
+ icu_provider@2.1.1 X
96
+ idna@1.1.0 X X
97
+ idna_adapter@1.2.1 X X
98
+ inout@0.1.4 X X
99
+ ipnet@2.12.0 X X
100
+ itertools@0.13.0 X X
101
+ itertools@0.14.0 X X
102
+ itoa@1.0.18 X X
103
+ jiff@0.2.24 X X
104
+ jiff-tzdb@0.1.6 X X
105
+ jiff-tzdb-platform@0.1.3 X X
106
+ jni@0.22.4 X X
107
+ jni-macros@0.22.4 X X
108
+ jni-sys@0.4.1 X X
109
+ jni-sys-macros@0.4.1 X X
110
+ jobserver@0.1.34 X X
111
+ js-sys@0.3.98 X X
112
+ jsonwebtoken@10.3.0 X
113
+ lazy_static@1.5.0 X X
114
+ libc@0.2.186 X X
115
+ libloading@0.8.9 X
116
+ libm@0.2.16 X
117
+ link-section@0.17.2 X X
118
+ linktime-proc-macro@0.1.0 X X
119
+ linux-raw-sys@0.12.1 X X X
120
+ litemap@0.8.2 X
121
+ lock_api@0.4.14 X X
122
+ log@0.4.29 X X
123
+ magnus@0.8.2 X
124
+ magnus-macros@0.8.0 X
125
+ md-5@0.11.0 X X
126
+ mea@0.6.3 X
127
+ memchr@2.8.0 X X
128
+ minimal-lexical@0.2.1 X X
129
+ mio@1.2.0 X
130
+ nom@7.1.3 X
131
+ nonzero_ext@0.3.0 X
132
+ num-bigint@0.4.6 X X
133
+ num-bigint-dig@0.8.6 X X
134
+ num-conv@0.2.2 X X
135
+ num-integer@0.1.46 X X
136
+ num-iter@0.1.45 X X
137
+ num-traits@0.2.19 X X
138
+ once_cell@1.21.4 X X
139
+ opendal@0.57.0 X
140
+ opendal-core@0.57.0 X
141
+ opendal-layer-concurrent-limit@0.57.0 X
142
+ opendal-layer-logging@0.57.0 X
143
+ opendal-layer-retry@0.57.0 X
144
+ opendal-layer-throttle@0.57.0 X
145
+ opendal-layer-timeout@0.57.0 X
146
+ opendal-ruby@0.1.6 X
147
+ opendal-service-azblob@0.57.0 X
148
+ opendal-service-azdls@0.57.0 X
149
+ opendal-service-azfile@0.57.0 X
150
+ opendal-service-azure-common@0.57.0 X
151
+ opendal-service-cos@0.57.0 X
152
+ opendal-service-fs@0.57.0 X
153
+ opendal-service-gcs@0.57.0 X
154
+ opendal-service-ghac@0.57.0 X
155
+ opendal-service-http@0.57.0 X
156
+ opendal-service-ipmfs@0.57.0 X
157
+ opendal-service-obs@0.57.0 X
158
+ opendal-service-oss@0.57.0 X
159
+ opendal-service-s3@0.57.0 X
160
+ opendal-service-webdav@0.57.0 X
161
+ opendal-service-webhdfs@0.57.0 X
162
+ openssl-probe@0.2.1 X X
163
+ ordered-multimap@0.7.3 X
164
+ parking_lot@0.12.5 X X
165
+ parking_lot_core@0.9.12 X X
166
+ pbkdf2@0.12.2 X X
167
+ pem@3.0.6 X
168
+ pem-rfc7468@0.7.0 X X
169
+ percent-encoding@2.3.2 X X
170
+ pin-project-lite@0.2.17 X X
171
+ pkcs1@0.7.5 X X
172
+ pkcs5@0.7.1 X X
173
+ pkcs8@0.10.2 X X
174
+ portable-atomic@1.13.1 X X
175
+ portable-atomic-util@0.2.7 X X
176
+ potential_utf@0.1.5 X
177
+ powerfmt@0.2.0 X X
178
+ ppv-lite86@0.2.21 X X
179
+ proc-macro2@1.0.106 X X
180
+ prost@0.14.3 X
181
+ prost-derive@0.14.3 X
182
+ quanta@0.12.6 X
183
+ quick-xml@0.39.4 X
184
+ quote@1.0.45 X X
185
+ r-efi@5.3.0 X X X
186
+ r-efi@6.0.0 X X X
187
+ rand@0.8.6 X X
188
+ rand@0.9.4 X X
189
+ rand_chacha@0.3.1 X X
190
+ rand_chacha@0.9.0 X X
191
+ rand_core@0.6.4 X X
192
+ rand_core@0.9.5 X X
193
+ raw-cpuid@11.6.0 X
194
+ rb-sys@0.9.128 X X
195
+ rb-sys-build@0.9.128 X X
196
+ rb-sys-env@0.1.2 X X
197
+ rb-sys-env@0.2.3 X X
198
+ redox_syscall@0.5.18 X
199
+ regex@1.12.3 X X
200
+ regex-automata@0.4.14 X X
201
+ regex-syntax@0.8.10 X X
202
+ reqsign-aliyun-oss@3.0.0 X
203
+ reqsign-aws-v4@3.0.0 X
204
+ reqsign-azure-storage@3.0.0 X
205
+ reqsign-core@3.0.0 X
206
+ reqsign-file-read-tokio@3.0.0 X
207
+ reqsign-google@3.0.0 X
208
+ reqsign-huaweicloud-obs@3.0.0 X
209
+ reqsign-tencent-cos@3.0.0 X
210
+ reqwest@0.13.3 X X
211
+ rsa@0.9.10 X X
212
+ rust-ini@0.21.3 X
213
+ rustc-hash@2.1.2 X X
214
+ rustc_version@0.4.1 X X
215
+ rustix@1.1.4 X X X
216
+ rustls@0.23.40 X X X
217
+ rustls-native-certs@0.8.3 X X X
218
+ rustls-pki-types@1.14.1 X X
219
+ rustls-platform-verifier@0.7.0 X X
220
+ rustls-platform-verifier-android@0.1.1 X X
221
+ rustls-webpki@0.103.13 X
222
+ rustversion@1.0.22 X X
223
+ ryu@1.0.23 X X
224
+ salsa20@0.10.2 X X
225
+ same-file@1.0.6 X X
226
+ schannel@0.1.29 X
227
+ scopeguard@1.2.0 X X
228
+ scrypt@0.11.0 X X
229
+ security-framework@3.7.0 X X
230
+ security-framework-sys@2.17.0 X X
231
+ semver@1.0.28 X X
232
+ seq-macro@0.3.6 X X
233
+ serde@1.0.228 X X
234
+ serde_core@1.0.228 X X
235
+ serde_derive@1.0.228 X X
236
+ serde_json@1.0.150 X X
237
+ serde_urlencoded@0.7.1 X X
238
+ sha1@0.10.6 X X
239
+ sha2@0.10.9 X X
240
+ sha2@0.11.0 X X
241
+ shell-words@1.1.1 X X
242
+ shlex@1.3.0 X X
243
+ signal-hook-registry@1.4.8 X X
244
+ signature@2.2.0 X X
245
+ simd_cesu8@1.1.1 X X
246
+ simdutf8@0.1.5 X X
247
+ simple_asn1@0.6.4 X
248
+ slab@0.4.12 X
249
+ smallvec@1.15.1 X X
250
+ socket2@0.6.3 X X
251
+ spin@0.9.8 X
252
+ spinning_top@0.3.0 X X
253
+ spki@0.7.3 X X
254
+ stable_deref_trait@1.2.1 X X
255
+ subtle@2.6.1 X
256
+ syn@2.0.117 X X
257
+ sync_wrapper@1.0.2 X
258
+ synstructure@0.13.2 X
259
+ thiserror@2.0.18 X X
260
+ thiserror-impl@2.0.18 X X
261
+ time@0.3.47 X X
262
+ time-core@0.1.8 X X
263
+ time-macros@0.2.27 X X
264
+ tiny-keccak@2.0.2 X
265
+ tinystr@0.8.3 X
266
+ tokio@1.52.3 X
267
+ tokio-macros@2.7.0 X
268
+ tokio-rustls@0.26.4 X X
269
+ tokio-util@0.7.18 X
270
+ tower@0.5.3 X
271
+ tower-http@0.6.11 X
272
+ tower-layer@0.3.3 X
273
+ tower-service@0.3.3 X
274
+ tracing@0.1.44 X
275
+ tracing-core@0.1.36 X
276
+ try-lock@0.2.5 X
277
+ typenum@1.20.0 X X
278
+ unicode-ident@1.0.24 X X X
279
+ untrusted@0.7.1 X
280
+ untrusted@0.9.0 X
281
+ url@2.5.8 X X
282
+ utf8_iter@1.0.4 X X
283
+ uuid@1.23.1 X X
284
+ version_check@0.9.5 X X
285
+ walkdir@2.5.0 X X
286
+ want@0.3.1 X
287
+ wasi@0.11.1+wasi-snapshot-preview1 X X X
288
+ wasip2@1.0.1+wasi-0.2.4 X X X
289
+ wasip3@0.4.0+wasi-0.3.0-rc-2026-01-06 X X X
290
+ wasm-bindgen@0.2.121 X X
291
+ wasm-bindgen-futures@0.4.71 X X
292
+ wasm-bindgen-macro@0.2.121 X X
293
+ wasm-bindgen-macro-support@0.2.121 X X
294
+ wasm-bindgen-shared@0.2.121 X X
295
+ wasm-streams@0.5.0 X X
296
+ web-sys@0.3.98 X X
297
+ web-time@1.1.0 X X
298
+ webpki-root-certs@1.0.7 X
299
+ winapi@0.3.9 X X
300
+ winapi-i686-pc-windows-gnu@0.4.0 X X
301
+ winapi-util@0.1.11 X X
302
+ winapi-x86_64-pc-windows-gnu@0.4.0 X X
303
+ windows-link@0.2.1 X X
304
+ windows-sys@0.61.2 X X
305
+ wit-bindgen@0.46.0 X X X
306
+ wit-bindgen@0.51.0 X X X
307
+ writeable@0.6.3 X
308
+ xattr@1.6.1 X X
309
+ yoke@0.8.2 X
310
+ yoke-derive@0.8.2 X
311
+ zerocopy@0.8.48 X X X
312
+ zerofrom@0.1.8 X
313
+ zerofrom-derive@0.1.7 X
314
+ zeroize@1.8.2 X X
315
+ zerotrie@0.2.4 X
316
+ zerovec@0.11.6 X
317
+ zerovec-derive@0.11.3 X
318
+ zmij@1.0.21 X
data/Gemfile ADDED
@@ -0,0 +1,33 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ # frozen_string_literal: true
19
+
20
+ source "https://rubygems.org"
21
+
22
+ # Includes runtime dependencies from opendal.gemspec
23
+ gemspec
24
+
25
+ group :development, :test do
26
+ gem "rake", ">= 13.2"
27
+ gem "minitest", "~> 6.0.6" # test library
28
+ gem "minitest-reporters", "~> 1.8.0" # better test output
29
+ gem "activesupport", "~> 8.1.3" # testing support
30
+ gem "standard", "~> 1.54" # linter with pre-specified rules
31
+ gem "redcarpet", "~> 3.6" # for documentation markdown parsing
32
+ gem "yard-rustdoc", "~> 0.4.2" # to generate YARD documentation from Ruby and Rust source
33
+ end
data/README.md ADDED
@@ -0,0 +1,67 @@
1
+ # Apache OpenDAL™ Ruby Binding
2
+
3
+ [![Gem Version](https://img.shields.io/gem/v/opendal)](https://rubygems.org/gems/opendal)
4
+ [![Gem Downloads (for latest version)](https://img.shields.io/gem/dtv/opendal)](https://rubygems.org/gems/opendal)
5
+
6
+ OpenDAL's Ruby [gem](https://rubygems.org/gems/opendal): access S3, GCS, Azure Blob, the local filesystem, and 50+ more services through one API.
7
+
8
+ ![](https://github.com/apache/opendal/assets/5351546/87bbf6e5-f19e-449a-b368-3e283016c887)
9
+
10
+ > **Note**: This binding has its own independent version number, which may differ from the Rust core version. When checking for updates or compatibility, always refer to this binding's version rather than the core version.
11
+
12
+ ## Useful Links
13
+
14
+ - [User guide](https://opendal.apache.org/docs/bindings/ruby)
15
+ - [Services & configuration](https://opendal.apache.org/services)
16
+ - [API reference](https://opendal.apache.org/docs/ruby/)
17
+ - [Rust core documentation](https://docs.rs/opendal/latest/opendal/index.html)
18
+
19
+ ## Installation
20
+
21
+ ```shell
22
+ gem install opendal
23
+ ```
24
+
25
+ Or add it to your `Gemfile`:
26
+
27
+ ```ruby
28
+ # Gemfile
29
+ gem "opendal"
30
+ ```
31
+
32
+ ## Quickstart
33
+
34
+ ```ruby
35
+ require "opendal"
36
+
37
+ op = OpenDal::Operator.new("memory", {})
38
+ op.write("hello.txt", "Hello, World!")
39
+ puts op.read("hello.txt") # => "Hello, World!"
40
+
41
+ op.list("").each do |entry|
42
+ puts entry.path
43
+ end
44
+
45
+ op.delete("hello.txt")
46
+ ```
47
+
48
+ Point it at a real backend by changing the scheme and passing its configuration:
49
+
50
+ ```ruby
51
+ op = OpenDal::Operator.new("s3", {
52
+ "bucket" => "my-bucket",
53
+ "region" => "us-east-1",
54
+ })
55
+ ```
56
+
57
+ See the [user guide](https://opendal.apache.org/docs/bindings/ruby) for connecting to storage, common tasks, middlewares, and error handling.
58
+
59
+ ## Contributing
60
+
61
+ Development setup and contribution instructions live in [CONTRIBUTING.md](CONTRIBUTING.md).
62
+
63
+ ## License and Trademarks
64
+
65
+ Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
66
+
67
+ Apache OpenDAL, OpenDAL, and Apache are either registered trademarks or trademarks of the Apache Software Foundation.