Apache OpenDAL™ Ruby Binding
A native Ruby binding for OpenDAL: access S3, GCS, Azure Blob, the local filesystem, and 50+ more services through one API, with the performance of the Rust core underneath.
New to the model behind the API? Read Concepts first — service, operator, layer, operation are the same four ideas in every language.
note
This binding has its own version number, independent of the Rust core. Check compatibility against the binding's version, not the core's.
Status
Released and published to RubyGems.
Capabilities
- Synchronous — every operation runs on the calling thread; there is no async API.
- One API for every service — the gem bundles all backends, selected by a scheme string at construction time.
- File-like
IO—op.open(path, "r")returns a familiar read/write/seek/readlineobject you can stream through. - Middlewares (OpenDAL layers) for retry, concurrency limits, throttling, and timeouts — see Going to production.
Installation
gem install opendal
Or add it to your Gemfile:
# Gemfile
gem "opendal"
Useful Links
- API reference: opendal.apache.org/docs/ruby
- Services & configuration: /services
- Rust core docs: docs.rs/opendal
- Source & examples:
bindings/ruby/
Next steps
- Getting started — a runnable program, then a real backend.
- Connecting to your storage — build an operator for any service.
- Common tasks — read, write, stream, list, copy, and rename.
- Going to production — middlewares, errors, and capability checks.