Ruby
Apache OpenDAL™ Ruby Binding
OpenDAL's Ruby gem.
Read OpenDAL's ruby documentation.
You can find Rust documentation here.
Get started
Installation
Install gem:
bundle add opendal
or add it in Gemfile:
# Gemfile
source "https://rubygems.org"
gem 'opendal'
Examples
File operations with an in-memory storage
require 'opendal'
op = OpenDal::Operator.new("memory", {})
op.write("file", "hello world")
puts op.read("file") # => "hello world"
puts ""
puts "List:", op.list("").map { |e| e.path }
puts ""
puts "Stat"
puts op.stat("file").inspect # => #<OpenDal::Metadata mode: File, content_type: , content_length: 11>
puts ""
puts "Deleting 'file'"
op.delete("/file")
puts ""
puts "Exist?", op.exist?("/file") # => false
puts ""
puts "Info:", op.info.inspect # => #<OpenDal::OperatorInfo scheme: "memory", root: "/">
A S3 operator
require 'opendal'
op = OpenDal::Operator.new("s3", {
"endpoint" => "http://localhost:9000",
"access_key_id" => "minioadmin" ,
"secret_access_key" => "minioadmin",
"bucket" => "test",
"region" => "us-east-1",
})
op.write("file", "hello world")
puts op.read("file") # => "hello world"
puts ""
puts "List:", op.list("").map { |e| e.path }
puts ""
puts "Stat"
puts op.stat("file").inspect # => #<OpenDal::Metadata mode: File, content_type: binary/octet-stream, content_length: 11>
puts ""
puts "Deleting 'file'"
op.delete("file")
puts ""
puts "Exist?", op.exist?("file") # => false
puts ""
puts "Info:", op.info.inspect # => #<OpenDal::OperatorInfo scheme: "s3", root: "/">
Use middleware
require 'opendal'
op = OpenDal::Operator.new("s3", {
"endpoint" => "http://localhost:9000",
"access_key_id" => "minioadmin" ,
"secret_access_key" => "minioadmin",
"bucket" => "test",
"region" => "us-east-1",
})
op.middleware(OpenDal::Middleware::ConcurrentLimit.new(5))
op.middleware(OpenDal::Middleware::Retry.new)
op.middleware(OpenDal::Middleware::Timeout.new(1, 2))
op.list("/").map do |e|
puts e.inspect
end
Documentation
More detailed documentation is a work in progress.
- OpenDAL's ruby documentation
- Rust documentation
- Rust documentation for services
- Rust documentation for layers (middlewares in Ruby)
Development
Install gem and its dependencies:
bundle
Build bindings:
bundle exec rake compile
Run tests:
bundle exec rake test
Run linters:
bundle exec rake standard:fix
rustfmt --config-path ../../rustfmt.toml src/*.rs # Run rustfmt for Rust files
cargo clippy --fix --all-targets # Run rust linter clippy
License and Trademarks
Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
Apache OpenDAL, OpenDAL, and Apache are either registered trademarks or trademarks of the Apache Software Foundation.