opendal 0.1.6.pre.rc.1-aarch64-linux
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 +7 -0
- data/.standard.yml +20 -0
- data/.tool-versions +1 -0
- data/.yardopts +1 -0
- data/DEPENDENCIES.md +9 -0
- data/DEPENDENCIES.rust.tsv +277 -0
- data/Gemfile +35 -0
- data/README.md +159 -0
- data/Rakefile +149 -0
- data/core/CHANGELOG.md +4929 -0
- data/core/CONTRIBUTING.md +61 -0
- data/core/DEPENDENCIES.md +3 -0
- data/core/DEPENDENCIES.rust.tsv +185 -0
- data/core/LICENSE +201 -0
- data/core/README.md +228 -0
- data/core/benches/README.md +18 -0
- data/core/benches/ops/README.md +26 -0
- data/core/benches/types/README.md +9 -0
- data/core/benches/vs_fs/README.md +35 -0
- data/core/benches/vs_s3/README.md +55 -0
- data/core/edge/README.md +3 -0
- data/core/edge/file_write_on_full_disk/README.md +14 -0
- data/core/edge/s3_aws_assume_role_with_web_identity/README.md +18 -0
- data/core/edge/s3_read_on_wasm/.gitignore +3 -0
- data/core/edge/s3_read_on_wasm/README.md +42 -0
- data/core/edge/s3_read_on_wasm/webdriver.json +15 -0
- data/core/examples/README.md +23 -0
- data/core/examples/basic/README.md +15 -0
- data/core/examples/concurrent-upload/README.md +15 -0
- data/core/examples/multipart-upload/README.md +15 -0
- data/core/fuzz/.gitignore +5 -0
- data/core/fuzz/README.md +68 -0
- data/core/src/docs/comparisons/vs_object_store.md +183 -0
- data/core/src/docs/performance/concurrent_write.md +101 -0
- data/core/src/docs/performance/http_optimization.md +124 -0
- data/core/src/docs/rfcs/0000_example.md +74 -0
- data/core/src/docs/rfcs/0000_foyer_integration.md +111 -0
- data/core/src/docs/rfcs/0041_object_native_api.md +185 -0
- data/core/src/docs/rfcs/0044_error_handle.md +198 -0
- data/core/src/docs/rfcs/0057_auto_region.md +160 -0
- data/core/src/docs/rfcs/0069_object_stream.md +145 -0
- data/core/src/docs/rfcs/0090_limited_reader.md +155 -0
- data/core/src/docs/rfcs/0112_path_normalization.md +79 -0
- data/core/src/docs/rfcs/0191_async_streaming_io.md +328 -0
- data/core/src/docs/rfcs/0203_remove_credential.md +96 -0
- data/core/src/docs/rfcs/0221_create_dir.md +89 -0
- data/core/src/docs/rfcs/0247_retryable_error.md +87 -0
- data/core/src/docs/rfcs/0293_object_id.md +67 -0
- data/core/src/docs/rfcs/0337_dir_entry.md +191 -0
- data/core/src/docs/rfcs/0409_accessor_capabilities.md +67 -0
- data/core/src/docs/rfcs/0413_presign.md +154 -0
- data/core/src/docs/rfcs/0423_command_line_interface.md +268 -0
- data/core/src/docs/rfcs/0429_init_from_iter.md +107 -0
- data/core/src/docs/rfcs/0438_multipart.md +163 -0
- data/core/src/docs/rfcs/0443_gateway.md +73 -0
- data/core/src/docs/rfcs/0501_new_builder.md +111 -0
- data/core/src/docs/rfcs/0554_write_refactor.md +96 -0
- data/core/src/docs/rfcs/0561_list_metadata_reuse.md +210 -0
- data/core/src/docs/rfcs/0599_blocking_api.md +157 -0
- data/core/src/docs/rfcs/0623_redis_service.md +300 -0
- data/core/src/docs/rfcs/0627_split_capabilities.md +89 -0
- data/core/src/docs/rfcs/0661_path_in_accessor.md +126 -0
- data/core/src/docs/rfcs/0793_generic_kv_services.md +209 -0
- data/core/src/docs/rfcs/0926_object_reader.md +93 -0
- data/core/src/docs/rfcs/0977_refactor_error.md +151 -0
- data/core/src/docs/rfcs/1085_object_handler.md +73 -0
- data/core/src/docs/rfcs/1391_object_metadataer.md +110 -0
- data/core/src/docs/rfcs/1398_query_based_metadata.md +125 -0
- data/core/src/docs/rfcs/1420_object_writer.md +147 -0
- data/core/src/docs/rfcs/1477_remove_object_concept.md +159 -0
- data/core/src/docs/rfcs/1735_operation_extension.md +117 -0
- data/core/src/docs/rfcs/2083_writer_sink_api.md +106 -0
- data/core/src/docs/rfcs/2133_append_api.md +88 -0
- data/core/src/docs/rfcs/2299_chain_based_operator_api.md +99 -0
- data/core/src/docs/rfcs/2602_object_versioning.md +138 -0
- data/core/src/docs/rfcs/2758_merge_append_into_write.md +79 -0
- data/core/src/docs/rfcs/2774_lister_api.md +66 -0
- data/core/src/docs/rfcs/2779_list_with_metakey.md +143 -0
- data/core/src/docs/rfcs/2852_native_capability.md +58 -0
- data/core/src/docs/rfcs/2884_merge_range_read_into_read.md +80 -0
- data/core/src/docs/rfcs/3017_remove_write_copy_from.md +94 -0
- data/core/src/docs/rfcs/3197_config.md +237 -0
- data/core/src/docs/rfcs/3232_align_list_api.md +69 -0
- data/core/src/docs/rfcs/3243_list_prefix.md +128 -0
- data/core/src/docs/rfcs/3356_lazy_reader.md +111 -0
- data/core/src/docs/rfcs/3526_list_recursive.md +59 -0
- data/core/src/docs/rfcs/3574_concurrent_stat_in_list.md +80 -0
- data/core/src/docs/rfcs/3734_buffered_reader.md +64 -0
- data/core/src/docs/rfcs/3898_concurrent_writer.md +66 -0
- data/core/src/docs/rfcs/3911_deleter_api.md +165 -0
- data/core/src/docs/rfcs/4382_range_based_read.md +213 -0
- data/core/src/docs/rfcs/4638_executor.md +215 -0
- data/core/src/docs/rfcs/5314_remove_metakey.md +120 -0
- data/core/src/docs/rfcs/5444_operator_from_uri.md +162 -0
- data/core/src/docs/rfcs/5479_context.md +140 -0
- data/core/src/docs/rfcs/5485_conditional_reader.md +112 -0
- data/core/src/docs/rfcs/5495_list_with_deleted.md +81 -0
- data/core/src/docs/rfcs/5556_write_returns_metadata.md +121 -0
- data/core/src/docs/rfcs/5871_read_returns_metadata.md +112 -0
- data/core/src/docs/rfcs/6189_remove_native_blocking.md +106 -0
- data/core/src/docs/rfcs/6209_glob_support.md +132 -0
- data/core/src/docs/rfcs/6213_options_api.md +142 -0
- data/core/src/docs/rfcs/README.md +62 -0
- data/core/src/docs/upgrade.md +1556 -0
- data/core/src/services/aliyun_drive/docs.md +61 -0
- data/core/src/services/alluxio/docs.md +45 -0
- data/core/src/services/azblob/docs.md +77 -0
- data/core/src/services/azdls/docs.md +73 -0
- data/core/src/services/azfile/docs.md +65 -0
- data/core/src/services/b2/docs.md +54 -0
- data/core/src/services/cacache/docs.md +38 -0
- data/core/src/services/cloudflare_kv/docs.md +21 -0
- data/core/src/services/cos/docs.md +55 -0
- data/core/src/services/d1/docs.md +48 -0
- data/core/src/services/dashmap/docs.md +38 -0
- data/core/src/services/dbfs/docs.md +57 -0
- data/core/src/services/dropbox/docs.md +64 -0
- data/core/src/services/etcd/docs.md +45 -0
- data/core/src/services/foundationdb/docs.md +42 -0
- data/core/src/services/fs/docs.md +49 -0
- data/core/src/services/ftp/docs.md +42 -0
- data/core/src/services/gcs/docs.md +76 -0
- data/core/src/services/gdrive/docs.md +65 -0
- data/core/src/services/ghac/docs.md +84 -0
- data/core/src/services/github/docs.md +52 -0
- data/core/src/services/gridfs/docs.md +46 -0
- data/core/src/services/hdfs/docs.md +140 -0
- data/core/src/services/hdfs_native/docs.md +35 -0
- data/core/src/services/http/docs.md +45 -0
- data/core/src/services/huggingface/docs.md +61 -0
- data/core/src/services/ipfs/docs.md +45 -0
- data/core/src/services/ipmfs/docs.md +14 -0
- data/core/src/services/koofr/docs.md +51 -0
- data/core/src/services/lakefs/docs.md +62 -0
- data/core/src/services/memcached/docs.md +47 -0
- data/core/src/services/memory/docs.md +36 -0
- data/core/src/services/mini_moka/docs.md +19 -0
- data/core/src/services/moka/docs.md +42 -0
- data/core/src/services/mongodb/docs.md +49 -0
- data/core/src/services/monoiofs/docs.md +46 -0
- data/core/src/services/mysql/docs.md +47 -0
- data/core/src/services/obs/docs.md +54 -0
- data/core/src/services/onedrive/docs.md +115 -0
- data/core/src/services/opfs/docs.md +18 -0
- data/core/src/services/oss/docs.md +74 -0
- data/core/src/services/pcloud/docs.md +51 -0
- data/core/src/services/persy/docs.md +43 -0
- data/core/src/services/postgresql/docs.md +47 -0
- data/core/src/services/redb/docs.md +41 -0
- data/core/src/services/redis/docs.md +43 -0
- data/core/src/services/rocksdb/docs.md +54 -0
- data/core/src/services/s3/compatible_services.md +126 -0
- data/core/src/services/s3/docs.md +244 -0
- data/core/src/services/seafile/docs.md +54 -0
- data/core/src/services/sftp/docs.md +49 -0
- data/core/src/services/sled/docs.md +39 -0
- data/core/src/services/sqlite/docs.md +46 -0
- data/core/src/services/surrealdb/docs.md +54 -0
- data/core/src/services/swift/compatible_services.md +53 -0
- data/core/src/services/swift/docs.md +52 -0
- data/core/src/services/tikv/docs.md +43 -0
- data/core/src/services/upyun/docs.md +51 -0
- data/core/src/services/vercel_artifacts/docs.md +40 -0
- data/core/src/services/vercel_blob/docs.md +45 -0
- data/core/src/services/webdav/docs.md +49 -0
- data/core/src/services/webhdfs/docs.md +90 -0
- data/core/src/services/yandex_disk/docs.md +45 -0
- data/core/tests/behavior/README.md +77 -0
- data/core/tests/data/normal_dir/.gitkeep +0 -0
- data/core/tests/data/normal_file.txt +1041 -0
- data/core/tests/data/special_dir !@#$%^&()_+-=;',/.gitkeep +0 -0
- data/core/tests/data/special_file !@#$%^&()_+-=;',.txt +1041 -0
- data/core/users.md +13 -0
- data/extconf.rb +24 -0
- data/lib/opendal.rb +25 -0
- data/lib/opendal_ruby/entry.rb +35 -0
- data/lib/opendal_ruby/io.rb +70 -0
- data/lib/opendal_ruby/metadata.rb +44 -0
- data/lib/opendal_ruby/opendal_ruby.so +0 -0
- data/lib/opendal_ruby/operator.rb +29 -0
- data/lib/opendal_ruby/operator_info.rb +26 -0
- data/opendal.gemspec +91 -0
- data/test/blocking_op_test.rb +112 -0
- data/test/capability_test.rb +42 -0
- data/test/io_test.rb +172 -0
- data/test/lister_test.rb +77 -0
- data/test/metadata_test.rb +78 -0
- data/test/middlewares_test.rb +46 -0
- data/test/operator_info_test.rb +35 -0
- data/test/test_helper.rb +36 -0
- metadata +240 -0
data/test/io_test.rb
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
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
|
+
require "test_helper"
|
|
21
|
+
require "tmpdir"
|
|
22
|
+
|
|
23
|
+
class IOTest < ActiveSupport::TestCase
|
|
24
|
+
setup do
|
|
25
|
+
@root = Dir.mktmpdir
|
|
26
|
+
File.write(
|
|
27
|
+
"#{@root}/sample",
|
|
28
|
+
<<~EOF
|
|
29
|
+
Sample data for testing
|
|
30
|
+
A line after title
|
|
31
|
+
EOF
|
|
32
|
+
)
|
|
33
|
+
@op = OpenDal::Operator.new("fs", {"root" => @root})
|
|
34
|
+
@io_read = @op.open("sample", "r")
|
|
35
|
+
@io_write = @op.open("sample_write", "w")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
teardown do
|
|
39
|
+
@io_read.close
|
|
40
|
+
@io_write.close
|
|
41
|
+
FileUtils.remove_entry(@root) if File.exist?(@root)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
test "#binmode? returns" do
|
|
45
|
+
assert_not @io_read.binmode?
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
test "#binmode returns" do
|
|
49
|
+
assert_nothing_raised do
|
|
50
|
+
@io_read.binmode
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
test "#close closes IO" do
|
|
55
|
+
assert_nothing_raised do
|
|
56
|
+
@io_read.close
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
test "#close_read closes reader" do
|
|
61
|
+
assert_nothing_raised do
|
|
62
|
+
@io_read.close_read
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
test "#close_write closes writer" do
|
|
67
|
+
assert_nothing_raised do
|
|
68
|
+
@io_read.close_write
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
test "#closed? returns" do
|
|
73
|
+
assert_not @io_read.closed?
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
test "#closed_read? returns" do
|
|
77
|
+
assert_not @io_read.closed_read?
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
test "#closed_write? returns" do
|
|
81
|
+
assert @io_read.closed_write?
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
test "#read reads" do
|
|
85
|
+
result = @io_read.read
|
|
86
|
+
|
|
87
|
+
assert_equal "Sample data for testing\nA line after title\n", result
|
|
88
|
+
# should be `assert_equal Encoding::UTF_8, result.encoding`
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
test "#read reads with nil" do
|
|
92
|
+
result = @io_read.read(nil)
|
|
93
|
+
|
|
94
|
+
assert_equal "Sample data for testing\nA line after title\n", result
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
test "#read reads with size" do
|
|
98
|
+
result = @io_read.read(6)
|
|
99
|
+
|
|
100
|
+
assert_equal "Sample", result
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
test "#read raises ArgumentError with -1" do
|
|
104
|
+
assert_raise(ArgumentError) do |err|
|
|
105
|
+
@io_read.read(-1)
|
|
106
|
+
|
|
107
|
+
assert_equal "negative length -1 given", err.message
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
test "#read reads to a buffer" do
|
|
112
|
+
buffer = +"hi " # unfreezes string literal
|
|
113
|
+
result = @io_read.read(6, buffer)
|
|
114
|
+
|
|
115
|
+
assert_equal "Sample", result
|
|
116
|
+
assert_equal "hi Sample", buffer
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
test "#write writes" do
|
|
120
|
+
@io_write.write("This is a sentence.")
|
|
121
|
+
@io_write.close
|
|
122
|
+
assert_equal "This is a sentence.", File.read("#{@root}/sample_write")
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
test "#readline reads a line" do
|
|
126
|
+
line = @io_read.readline
|
|
127
|
+
|
|
128
|
+
assert_equal "Sample data for testing\n", line
|
|
129
|
+
# should be `assert_equal Encoding::UTF_8, line.encoding`
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
test "#readlines reads all lines" do
|
|
133
|
+
lines = @io_read.readlines
|
|
134
|
+
|
|
135
|
+
assert_equal ["Sample data for testing\n", "A line after title\n"], lines
|
|
136
|
+
# should be `assert_equal Encoding::UTF_8, lines.first.encoding`
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
test "#tell returns position" do
|
|
140
|
+
assert_equal 0, @io_read.tell
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
test "#pos= moves position" do
|
|
144
|
+
@io_read.pos = 5
|
|
145
|
+
|
|
146
|
+
assert_equal 5, @io_read.pos
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
test "#rewind moves position to start" do
|
|
150
|
+
@io_read.pos = 5
|
|
151
|
+
@io_read.rewind
|
|
152
|
+
|
|
153
|
+
assert_equal 0, @io_read.pos
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
test "#eof returns" do
|
|
157
|
+
assert_not @io_read.eof
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
test "#eof? returns" do
|
|
161
|
+
@io_read.read
|
|
162
|
+
assert @io_read.eof?
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
test "#length returns" do
|
|
166
|
+
assert_equal 43, @io_read.length
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
test "#size returns" do
|
|
170
|
+
assert_equal 43, @io_read.size
|
|
171
|
+
end
|
|
172
|
+
end
|
data/test/lister_test.rb
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
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
|
+
require "test_helper"
|
|
21
|
+
require "tmpdir"
|
|
22
|
+
|
|
23
|
+
class ListerTest < ActiveSupport::TestCase
|
|
24
|
+
setup do
|
|
25
|
+
@root = Dir.mktmpdir
|
|
26
|
+
File.write("#{@root}/sample", "Sample data for testing")
|
|
27
|
+
Dir.mkdir("#{@root}/sub")
|
|
28
|
+
File.write("#{@root}/sub/sample", "Sample data for testing")
|
|
29
|
+
@op = OpenDal::Operator.new("fs", {"root" => @root})
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test "lists the directory" do
|
|
33
|
+
lister = @op.list("")
|
|
34
|
+
|
|
35
|
+
lists = lister.map(&:to_h).map { |e| e[:path] }.sort
|
|
36
|
+
|
|
37
|
+
assert_equal ["/", "sample", "sub/"], lists
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
test "list returns the entry" do
|
|
41
|
+
entry = @op.list("/").first
|
|
42
|
+
|
|
43
|
+
assert entry.is_a?(OpenDal::Entry)
|
|
44
|
+
assert entry.name.length > 0
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
test "entry has the metadata" do
|
|
48
|
+
metadata = @op.list("sample").first.metadata
|
|
49
|
+
|
|
50
|
+
assert metadata.file?
|
|
51
|
+
assert !metadata.dir?
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
test "lists the directory recursively" do
|
|
55
|
+
lister = @op.list("", recursive: true)
|
|
56
|
+
|
|
57
|
+
lists = lister.map(&:to_h).map { |e| e[:path] }.sort
|
|
58
|
+
|
|
59
|
+
assert_equal ["/", "sample", "sub/", "sub/sample"], lists
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
test "lists the directory with limit" do
|
|
63
|
+
lister = @op.list("", limit: 1)
|
|
64
|
+
|
|
65
|
+
lists = lister.map(&:to_h).map { |e| e[:path] }.sort
|
|
66
|
+
|
|
67
|
+
assert_equal ["/", "sample", "sub/"], lists
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
test "lists the directory with start_after" do
|
|
71
|
+
lister = @op.list("", start_after: "sub/")
|
|
72
|
+
|
|
73
|
+
lists = lister.map(&:to_h).map { |e| e[:path] }.sort
|
|
74
|
+
|
|
75
|
+
assert_equal ["/", "sample", "sub/"], lists # fs backend doesn't support start_after
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
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
|
+
require "test_helper"
|
|
21
|
+
|
|
22
|
+
class MetadataTest < ActiveSupport::TestCase
|
|
23
|
+
setup do
|
|
24
|
+
@op = OpenDal::Operator.new("memory", {})
|
|
25
|
+
@op.write("/file", "OpenDAL Ruby is ready.")
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test "returns metadata" do
|
|
29
|
+
metadata = @op.stat("file")
|
|
30
|
+
|
|
31
|
+
assert_nothing_raised do
|
|
32
|
+
metadata.inspect
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
test "#file? works" do
|
|
37
|
+
metadata = @op.stat("file")
|
|
38
|
+
|
|
39
|
+
assert metadata.file?
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
test "#dir? works" do
|
|
43
|
+
metadata = @op.stat("/")
|
|
44
|
+
assert metadata.dir?
|
|
45
|
+
|
|
46
|
+
assert !@op.stat("file").dir?
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
test "#mode works" do
|
|
50
|
+
metadata = @op.stat("file")
|
|
51
|
+
assert_equal OpenDal::Metadata::FILE, metadata.mode
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
test "#content_disposition works" do
|
|
55
|
+
metadata = @op.stat("file")
|
|
56
|
+
assert_nil metadata.content_disposition
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
test "#content_length works" do
|
|
60
|
+
metadata = @op.stat("file")
|
|
61
|
+
assert_equal 22, metadata.content_length
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
test "#content_md5 works" do
|
|
65
|
+
metadata = @op.stat("file")
|
|
66
|
+
assert_nil metadata.content_md5
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
test "#content_type works" do
|
|
70
|
+
metadata = @op.stat("file")
|
|
71
|
+
assert_nil metadata.content_type
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
test "#etag works" do
|
|
75
|
+
metadata = @op.stat("file")
|
|
76
|
+
assert_nil metadata.etag
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
require "test_helper"
|
|
21
|
+
|
|
22
|
+
class MiddlewaresTest < ActiveSupport::TestCase
|
|
23
|
+
test "builds a retry middleware" do
|
|
24
|
+
assert_nothing_raised do
|
|
25
|
+
OpenDal::Middleware::Retry.new
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
test "builds a concurrent limit middleware" do
|
|
30
|
+
assert_nothing_raised do
|
|
31
|
+
OpenDal::Middleware::ConcurrentLimit.new(10)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
test "builds a throttle middleware" do
|
|
36
|
+
assert_nothing_raised do
|
|
37
|
+
OpenDal::Middleware::Throttle.new(100, 10)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
test "builds a timeout middleware" do
|
|
42
|
+
assert_nothing_raised do
|
|
43
|
+
OpenDal::Middleware::Timeout.new(1.23, 1.0)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
require "test_helper"
|
|
21
|
+
|
|
22
|
+
class OperatorInfoTest < ActiveSupport::TestCase
|
|
23
|
+
setup do
|
|
24
|
+
@op = OpenDal::Operator.new("memory", {})
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
test "returns meta information" do
|
|
28
|
+
info = @op.info
|
|
29
|
+
|
|
30
|
+
assert_equal "memory", info.scheme
|
|
31
|
+
assert_equal "/", info.root
|
|
32
|
+
assert info.name.length > 0
|
|
33
|
+
assert info.capability.stat
|
|
34
|
+
end
|
|
35
|
+
end
|
data/test/test_helper.rb
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
require "active_support"
|
|
21
|
+
require "minitest/autorun"
|
|
22
|
+
require "minitest/reporters"
|
|
23
|
+
|
|
24
|
+
Minitest::Reporters.use!([Minitest::Reporters::DefaultReporter.new(color: true)])
|
|
25
|
+
|
|
26
|
+
require "opendal"
|
|
27
|
+
|
|
28
|
+
# Uses `ActiveSupport::TestCase` for additional features including:
|
|
29
|
+
# - additional assertions
|
|
30
|
+
# - file fixtures
|
|
31
|
+
# - parallel worker
|
|
32
|
+
#
|
|
33
|
+
# Read more https://edgeapi.rubyonrails.org/classes/ActiveSupport/TestCase.html
|
|
34
|
+
class ActiveSupport::TestCase
|
|
35
|
+
parallelize(workers: :number_of_processors)
|
|
36
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: opendal
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.6.pre.rc.1
|
|
5
|
+
platform: aarch64-linux
|
|
6
|
+
authors:
|
|
7
|
+
- OpenDAL Contributors
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2025-10-01 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
13
|
+
description:
|
|
14
|
+
email:
|
|
15
|
+
- dev@opendal.apache.org
|
|
16
|
+
executables: []
|
|
17
|
+
extensions: []
|
|
18
|
+
extra_rdoc_files: []
|
|
19
|
+
files:
|
|
20
|
+
- "./extconf.rb"
|
|
21
|
+
- ".standard.yml"
|
|
22
|
+
- ".tool-versions"
|
|
23
|
+
- ".yardopts"
|
|
24
|
+
- DEPENDENCIES.md
|
|
25
|
+
- DEPENDENCIES.rust.tsv
|
|
26
|
+
- Gemfile
|
|
27
|
+
- README.md
|
|
28
|
+
- Rakefile
|
|
29
|
+
- core/CHANGELOG.md
|
|
30
|
+
- core/CONTRIBUTING.md
|
|
31
|
+
- core/DEPENDENCIES.md
|
|
32
|
+
- core/DEPENDENCIES.rust.tsv
|
|
33
|
+
- core/LICENSE
|
|
34
|
+
- core/README.md
|
|
35
|
+
- core/benches/README.md
|
|
36
|
+
- core/benches/ops/README.md
|
|
37
|
+
- core/benches/types/README.md
|
|
38
|
+
- core/benches/vs_fs/README.md
|
|
39
|
+
- core/benches/vs_s3/README.md
|
|
40
|
+
- core/edge/README.md
|
|
41
|
+
- core/edge/file_write_on_full_disk/README.md
|
|
42
|
+
- core/edge/s3_aws_assume_role_with_web_identity/README.md
|
|
43
|
+
- core/edge/s3_read_on_wasm/.gitignore
|
|
44
|
+
- core/edge/s3_read_on_wasm/README.md
|
|
45
|
+
- core/edge/s3_read_on_wasm/webdriver.json
|
|
46
|
+
- core/examples/README.md
|
|
47
|
+
- core/examples/basic/README.md
|
|
48
|
+
- core/examples/concurrent-upload/README.md
|
|
49
|
+
- core/examples/multipart-upload/README.md
|
|
50
|
+
- core/fuzz/.gitignore
|
|
51
|
+
- core/fuzz/README.md
|
|
52
|
+
- core/src/docs/comparisons/vs_object_store.md
|
|
53
|
+
- core/src/docs/performance/concurrent_write.md
|
|
54
|
+
- core/src/docs/performance/http_optimization.md
|
|
55
|
+
- core/src/docs/rfcs/0000_example.md
|
|
56
|
+
- core/src/docs/rfcs/0000_foyer_integration.md
|
|
57
|
+
- core/src/docs/rfcs/0041_object_native_api.md
|
|
58
|
+
- core/src/docs/rfcs/0044_error_handle.md
|
|
59
|
+
- core/src/docs/rfcs/0057_auto_region.md
|
|
60
|
+
- core/src/docs/rfcs/0069_object_stream.md
|
|
61
|
+
- core/src/docs/rfcs/0090_limited_reader.md
|
|
62
|
+
- core/src/docs/rfcs/0112_path_normalization.md
|
|
63
|
+
- core/src/docs/rfcs/0191_async_streaming_io.md
|
|
64
|
+
- core/src/docs/rfcs/0203_remove_credential.md
|
|
65
|
+
- core/src/docs/rfcs/0221_create_dir.md
|
|
66
|
+
- core/src/docs/rfcs/0247_retryable_error.md
|
|
67
|
+
- core/src/docs/rfcs/0293_object_id.md
|
|
68
|
+
- core/src/docs/rfcs/0337_dir_entry.md
|
|
69
|
+
- core/src/docs/rfcs/0409_accessor_capabilities.md
|
|
70
|
+
- core/src/docs/rfcs/0413_presign.md
|
|
71
|
+
- core/src/docs/rfcs/0423_command_line_interface.md
|
|
72
|
+
- core/src/docs/rfcs/0429_init_from_iter.md
|
|
73
|
+
- core/src/docs/rfcs/0438_multipart.md
|
|
74
|
+
- core/src/docs/rfcs/0443_gateway.md
|
|
75
|
+
- core/src/docs/rfcs/0501_new_builder.md
|
|
76
|
+
- core/src/docs/rfcs/0554_write_refactor.md
|
|
77
|
+
- core/src/docs/rfcs/0561_list_metadata_reuse.md
|
|
78
|
+
- core/src/docs/rfcs/0599_blocking_api.md
|
|
79
|
+
- core/src/docs/rfcs/0623_redis_service.md
|
|
80
|
+
- core/src/docs/rfcs/0627_split_capabilities.md
|
|
81
|
+
- core/src/docs/rfcs/0661_path_in_accessor.md
|
|
82
|
+
- core/src/docs/rfcs/0793_generic_kv_services.md
|
|
83
|
+
- core/src/docs/rfcs/0926_object_reader.md
|
|
84
|
+
- core/src/docs/rfcs/0977_refactor_error.md
|
|
85
|
+
- core/src/docs/rfcs/1085_object_handler.md
|
|
86
|
+
- core/src/docs/rfcs/1391_object_metadataer.md
|
|
87
|
+
- core/src/docs/rfcs/1398_query_based_metadata.md
|
|
88
|
+
- core/src/docs/rfcs/1420_object_writer.md
|
|
89
|
+
- core/src/docs/rfcs/1477_remove_object_concept.md
|
|
90
|
+
- core/src/docs/rfcs/1735_operation_extension.md
|
|
91
|
+
- core/src/docs/rfcs/2083_writer_sink_api.md
|
|
92
|
+
- core/src/docs/rfcs/2133_append_api.md
|
|
93
|
+
- core/src/docs/rfcs/2299_chain_based_operator_api.md
|
|
94
|
+
- core/src/docs/rfcs/2602_object_versioning.md
|
|
95
|
+
- core/src/docs/rfcs/2758_merge_append_into_write.md
|
|
96
|
+
- core/src/docs/rfcs/2774_lister_api.md
|
|
97
|
+
- core/src/docs/rfcs/2779_list_with_metakey.md
|
|
98
|
+
- core/src/docs/rfcs/2852_native_capability.md
|
|
99
|
+
- core/src/docs/rfcs/2884_merge_range_read_into_read.md
|
|
100
|
+
- core/src/docs/rfcs/3017_remove_write_copy_from.md
|
|
101
|
+
- core/src/docs/rfcs/3197_config.md
|
|
102
|
+
- core/src/docs/rfcs/3232_align_list_api.md
|
|
103
|
+
- core/src/docs/rfcs/3243_list_prefix.md
|
|
104
|
+
- core/src/docs/rfcs/3356_lazy_reader.md
|
|
105
|
+
- core/src/docs/rfcs/3526_list_recursive.md
|
|
106
|
+
- core/src/docs/rfcs/3574_concurrent_stat_in_list.md
|
|
107
|
+
- core/src/docs/rfcs/3734_buffered_reader.md
|
|
108
|
+
- core/src/docs/rfcs/3898_concurrent_writer.md
|
|
109
|
+
- core/src/docs/rfcs/3911_deleter_api.md
|
|
110
|
+
- core/src/docs/rfcs/4382_range_based_read.md
|
|
111
|
+
- core/src/docs/rfcs/4638_executor.md
|
|
112
|
+
- core/src/docs/rfcs/5314_remove_metakey.md
|
|
113
|
+
- core/src/docs/rfcs/5444_operator_from_uri.md
|
|
114
|
+
- core/src/docs/rfcs/5479_context.md
|
|
115
|
+
- core/src/docs/rfcs/5485_conditional_reader.md
|
|
116
|
+
- core/src/docs/rfcs/5495_list_with_deleted.md
|
|
117
|
+
- core/src/docs/rfcs/5556_write_returns_metadata.md
|
|
118
|
+
- core/src/docs/rfcs/5871_read_returns_metadata.md
|
|
119
|
+
- core/src/docs/rfcs/6189_remove_native_blocking.md
|
|
120
|
+
- core/src/docs/rfcs/6209_glob_support.md
|
|
121
|
+
- core/src/docs/rfcs/6213_options_api.md
|
|
122
|
+
- core/src/docs/rfcs/README.md
|
|
123
|
+
- core/src/docs/upgrade.md
|
|
124
|
+
- core/src/services/aliyun_drive/docs.md
|
|
125
|
+
- core/src/services/alluxio/docs.md
|
|
126
|
+
- core/src/services/azblob/docs.md
|
|
127
|
+
- core/src/services/azdls/docs.md
|
|
128
|
+
- core/src/services/azfile/docs.md
|
|
129
|
+
- core/src/services/b2/docs.md
|
|
130
|
+
- core/src/services/cacache/docs.md
|
|
131
|
+
- core/src/services/cloudflare_kv/docs.md
|
|
132
|
+
- core/src/services/cos/docs.md
|
|
133
|
+
- core/src/services/d1/docs.md
|
|
134
|
+
- core/src/services/dashmap/docs.md
|
|
135
|
+
- core/src/services/dbfs/docs.md
|
|
136
|
+
- core/src/services/dropbox/docs.md
|
|
137
|
+
- core/src/services/etcd/docs.md
|
|
138
|
+
- core/src/services/foundationdb/docs.md
|
|
139
|
+
- core/src/services/fs/docs.md
|
|
140
|
+
- core/src/services/ftp/docs.md
|
|
141
|
+
- core/src/services/gcs/docs.md
|
|
142
|
+
- core/src/services/gdrive/docs.md
|
|
143
|
+
- core/src/services/ghac/docs.md
|
|
144
|
+
- core/src/services/github/docs.md
|
|
145
|
+
- core/src/services/gridfs/docs.md
|
|
146
|
+
- core/src/services/hdfs/docs.md
|
|
147
|
+
- core/src/services/hdfs_native/docs.md
|
|
148
|
+
- core/src/services/http/docs.md
|
|
149
|
+
- core/src/services/huggingface/docs.md
|
|
150
|
+
- core/src/services/ipfs/docs.md
|
|
151
|
+
- core/src/services/ipmfs/docs.md
|
|
152
|
+
- core/src/services/koofr/docs.md
|
|
153
|
+
- core/src/services/lakefs/docs.md
|
|
154
|
+
- core/src/services/memcached/docs.md
|
|
155
|
+
- core/src/services/memory/docs.md
|
|
156
|
+
- core/src/services/mini_moka/docs.md
|
|
157
|
+
- core/src/services/moka/docs.md
|
|
158
|
+
- core/src/services/mongodb/docs.md
|
|
159
|
+
- core/src/services/monoiofs/docs.md
|
|
160
|
+
- core/src/services/mysql/docs.md
|
|
161
|
+
- core/src/services/obs/docs.md
|
|
162
|
+
- core/src/services/onedrive/docs.md
|
|
163
|
+
- core/src/services/opfs/docs.md
|
|
164
|
+
- core/src/services/oss/docs.md
|
|
165
|
+
- core/src/services/pcloud/docs.md
|
|
166
|
+
- core/src/services/persy/docs.md
|
|
167
|
+
- core/src/services/postgresql/docs.md
|
|
168
|
+
- core/src/services/redb/docs.md
|
|
169
|
+
- core/src/services/redis/docs.md
|
|
170
|
+
- core/src/services/rocksdb/docs.md
|
|
171
|
+
- core/src/services/s3/compatible_services.md
|
|
172
|
+
- core/src/services/s3/docs.md
|
|
173
|
+
- core/src/services/seafile/docs.md
|
|
174
|
+
- core/src/services/sftp/docs.md
|
|
175
|
+
- core/src/services/sled/docs.md
|
|
176
|
+
- core/src/services/sqlite/docs.md
|
|
177
|
+
- core/src/services/surrealdb/docs.md
|
|
178
|
+
- core/src/services/swift/compatible_services.md
|
|
179
|
+
- core/src/services/swift/docs.md
|
|
180
|
+
- core/src/services/tikv/docs.md
|
|
181
|
+
- core/src/services/upyun/docs.md
|
|
182
|
+
- core/src/services/vercel_artifacts/docs.md
|
|
183
|
+
- core/src/services/vercel_blob/docs.md
|
|
184
|
+
- core/src/services/webdav/docs.md
|
|
185
|
+
- core/src/services/webhdfs/docs.md
|
|
186
|
+
- core/src/services/yandex_disk/docs.md
|
|
187
|
+
- core/tests/behavior/README.md
|
|
188
|
+
- core/tests/data/normal_dir/.gitkeep
|
|
189
|
+
- core/tests/data/normal_file.txt
|
|
190
|
+
- core/tests/data/special_dir !@#$%^&()_+-=;',/.gitkeep
|
|
191
|
+
- core/tests/data/special_file !@#$%^&()_+-=;',.txt
|
|
192
|
+
- core/users.md
|
|
193
|
+
- lib/opendal.rb
|
|
194
|
+
- lib/opendal_ruby/entry.rb
|
|
195
|
+
- lib/opendal_ruby/io.rb
|
|
196
|
+
- lib/opendal_ruby/metadata.rb
|
|
197
|
+
- lib/opendal_ruby/opendal_ruby.so
|
|
198
|
+
- lib/opendal_ruby/operator.rb
|
|
199
|
+
- lib/opendal_ruby/operator_info.rb
|
|
200
|
+
- opendal.gemspec
|
|
201
|
+
- test/blocking_op_test.rb
|
|
202
|
+
- test/capability_test.rb
|
|
203
|
+
- test/io_test.rb
|
|
204
|
+
- test/lister_test.rb
|
|
205
|
+
- test/metadata_test.rb
|
|
206
|
+
- test/middlewares_test.rb
|
|
207
|
+
- test/operator_info_test.rb
|
|
208
|
+
- test/test_helper.rb
|
|
209
|
+
homepage: https://opendal.apache.org/
|
|
210
|
+
licenses:
|
|
211
|
+
- Apache-2.0
|
|
212
|
+
metadata:
|
|
213
|
+
homepage_uri: https://opendal.apache.org/
|
|
214
|
+
source_code_uri: https://github.com/apache/opendal
|
|
215
|
+
changelog_uri: https://github.com/apache/opendal/releases
|
|
216
|
+
rubygems_mfa_required: 'true'
|
|
217
|
+
post_install_message:
|
|
218
|
+
rdoc_options: []
|
|
219
|
+
require_paths:
|
|
220
|
+
- lib
|
|
221
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
222
|
+
requirements:
|
|
223
|
+
- - ">="
|
|
224
|
+
- !ruby/object:Gem::Version
|
|
225
|
+
version: '3.2'
|
|
226
|
+
- - "<"
|
|
227
|
+
- !ruby/object:Gem::Version
|
|
228
|
+
version: 3.5.dev
|
|
229
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
230
|
+
requirements:
|
|
231
|
+
- - ">="
|
|
232
|
+
- !ruby/object:Gem::Version
|
|
233
|
+
version: '0'
|
|
234
|
+
requirements:
|
|
235
|
+
- Rust >= 1.82
|
|
236
|
+
rubygems_version: 3.5.22
|
|
237
|
+
signing_key:
|
|
238
|
+
specification_version: 4
|
|
239
|
+
summary: OpenDAL Ruby Binding
|
|
240
|
+
test_files: []
|