Skip to content
Kyoto Cabinet library for JRuby
Shell Java Ruby C++ C
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Build Status

This is a Ruby gem providing a JRuby interface for the Kyoto Cabinet database library. It aims to provide an identical interface to the official Ruby library. However, that library uses Ruby's C extension API and thus does not work under JRuby. This is instead implemented atop Kyoto Cabinet's Java API, with a minimal Ruby adaptation layer to compensate for interface differences.


Installation of this gem requires that Kyoto Cabinet (>= 1.2.76) already be installed. See the installation notes for platform-specific instructions. It also requires a C++ compiler and JDK, since it contains a patched copy of the kyotocabinet-java library, which will be compiled upon installation. It does not attempt to install anything outside the RubyGems directory.


$ gem install kyotocabinet-java

Or, if you're using Bundler and want your Ruby code to be able to transparently use Kyoto Cabinet under MRI or JRuby, you might want to add something like this to your Gemfile:

gem "kyotocabinet-ruby", "~> 1.27.1", :platforms => [:mri, :rbx]
gem "kyotocabinet-java", "~> 0.2.0", :platforms => :jruby


This is designed to be a drop-in replacement for kyotocabinet-ruby, and so usage should be identical:

require 'kyotocabinet'
db ="%", KyotoCabinet::DB::OWRITER | KyotoCabinet::DB::OCREATE)
db["hello"] = "world"


This library was written to maintain indexes for a BioRuby MAF parser. It works for that purpose but has not been exhaustively tested. Other parts of the Kyoto Cabinet API might need some work. The bioruby-maf code relies on storing binary data in Kyoto Cabinet; this works with the Java API methods accepting or returning byte[], but not their String counterparts. Some of these methods have been wrapped to explicitly convert arguments and return values to byte arrays, but not all. See kyotocabinet.rb for examples. Feel free to submit pull requests.

Installation has been tested on Mac OS X 10.7.4 and Debian wheezy, and should work on Ubuntu and Fedora as well. Please report build problems on other Unix platforms; it should be fairly easy to resolve them.

It's not completely clear what it would take to make this work on Windows; shipping a pre-built JAR and the binary DLL provided by FAL Labs might do it. Patches would be welcome.

Contributing to kyotocabinet-java

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
  • Fork the project.
  • Start a feature/bugfix branch.
  • Commit and push until you are happy with your contribution.
  • Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.


Copyright (c) 2012 Clayton Wheeler (packaging, Ruby library) and copyright (c) 2009-2012 FAL Labs. See LICENSE.txt for further details.

You can’t perform that action at this time.