
Security News
CISA’s 2025 SBOM Guidance Adds Hashes, Licenses, Tool Metadata, and Context
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.
Rubcask is a Bitcask-like log-structured Key/Value storage library.
It ships with a TCP server and client implementing a custom protocol.
It has design very similar to bitcask including merge operation, moving to a next file after reaching a configurable limit; timestamp however is used for expiration only.
https://rubydoc.info/github/mhib/rubcask/master
This library is not production-ready.
Add this line to your application's Gemfile:
gem 'rubcask'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install rubcask
Rubcask's main methods are very similar to ruby's hash.
dir = Rubcask::Directory.new("path_to_directory")
dir["key"] = "value"
dir["key"] # => "value"
dir.delete("key") # => true
dir.close
You can also set value with a ttl.
dir = Rubcask::Directory.new("path_to_directory")
dir.set_with_ttl("key", "value", 10)
dir["key"] # => "value"
sleep(11)
dir["key"] # => nil
dir.close
Rubcask does not store encoding information and stores keys as bytes, so using utf-8 strings is the same as using ASCII strings. The same goes with values.
dir = Rubcask::Directory.new("path_to_directory")
dir["jeż"] = "3"
dir["jeż".b] # => 3
dir.close
Rubcask can be used both as a library and as a server.
See examples/server_runner.rb
for example configuration with a TCP server and a merge worker.
See lib/rubcask/server/client.rb
for server client
By default Rubcask::Directory
is thread safe.
Consider installing concurrent-ruby-ext
for some performance gains.
If you do not want to pay performance penalty for synchronization, it is possible to disable thread synchronization in config.
config = Rubcask::Config.configure { |c| c.threadsafe = false }
dir = Rubcask::Directory.new("path_to_directory", config: config)
It is only safe to do that when using Rubcask as a library; server implementations assumes that Directory is run with threadsafe = true
.
Projects is shipped with threaded server that does not require any dependencies, and with async server that requires async-io
.
They implement the same custom protocol.
Generally async server is faster especially for pipelines as it buffers reads.
Note that async server might not work on JRuby.
Tested against supported versions of CRuby and JRuby. TruffleRuby currently does not work due to some IO
incompatibilities.
bin/
for running server runner easily.After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and the created tag, and push the .gem
file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at https://github.com/mhib/rubcask.
The gem is available as open source under the terms of the MIT License.
FAQs
Unknown package
We found that rubcask demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.
Security News
A clarification on our recent research investigating 60 malicious Ruby gems.
Security News
ESLint now supports parallel linting with a new --concurrency flag, delivering major speed gains and closing a 10-year-old feature request.