Skip to main content

Ruby

Apache OpenDAL™ Ruby Binding

Gem Version Gem Downloads (for latest version)

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.

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.