0.0
No commit activity in last 3 years
No release in over 3 years
Ruby bindings for CDB Constant Databases.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

>= 0.8.3, ~> 0.8
>= 0
>= 0
 Project Readme
= libcdb-ruby - Ruby bindings for CDB Constant Databases.

== VERSION

This documentation refers to libcdb-ruby version 0.2.1


== DESCRIPTION

The libcdb-ruby library provides Ruby bindings for the
TinyCDB[http://www.corpit.ru/mjt/tinycdb.html] package for
creating and reading {constant databases}[http://cr.yp.to/cdb.html].

  require 'libcdb'

  # creating
  LibCDB::CDB.open('foo.cdb', 'w') { |cdb|
    cdb['a'] = 'one'
    cdb['b'] = '123'
  }

  # reading
  LibCDB::CDB.open('foo.cdb') { |cdb|
    cdb['a']  #=> "one"
    cdb['b']  #=> "123"
    cdb['c']  #=> nil
  }

  # hybrid
  LibCDB::CDB.open('foo.cdb', 'w+') { |cdb|
    cdb['a'] = 'one'
    cdb['b'] = '123'

    cdb['a']  #=> "one"
    cdb['b']  #=> "123"
    cdb['c']  #=> nil

    # database is truncated whenever
    # a new writer is opened:
    cdb['a'] = 'two'
    cdb['c'] = 'xyz'

    cdb['a']  #=> "two"
    cdb['b']  #=> nil
    cdb['c']  #=> "xyz"
  }

  # update existing database
  LibCDB::CDB.open('foo.cdb', 'r+') { |cdb|
    # store existing records
    cdb << cdb.to_h

    # and add a new one
    cdb['d'] = '42'

    cdb['a']  #=> "two"
    cdb['b']  #=> nil
    cdb['c']  #=> "xyz"
    cdb['d']  #=> "42"
  }


== PREREQUISITES

* Ruby 1.9+ (see {below}[rdoc-label:label-SUPPORTED+PLATFORMS] for details)
* TinyCDB[http://www.corpit.ru/mjt/tinycdb.html] headers (not needed when
  installing the fat binary gem on Windows)

  Debian/Ubuntu:: +libcdb-dev+
  Fedora/SuSE::   +tinycdb-devel+
  Gentoo::        +dev-db/tinycdb+


== SUPPORTED PLATFORMS

Linux::   MRI 1.9.3, 2.0 & 2.1 (Tested on 64-bit Ubuntu GNU/Linux
          with 1.9.3p550, 2.0.0p594 and 2.1.5p273)
Windows:: MRI 1.9.3 (Tested on 32-bit Windows XP with 1.9.3p194)


== LINKS

CDB::           http://cr.yp.to/cdb.html
TinyCDB::       http://www.corpit.ru/mjt/tinycdb.html
Documentation:: https://blackwinter.github.com/libcdb-ruby
Source code::   https://github.com/blackwinter/libcdb-ruby
RubyGem::       https://rubygems.org/gems/libcdb-ruby
Travis CI::     https://travis-ci.org/blackwinter/libcdb-ruby


== AUTHORS

* Jens Wille <mailto:jens.wille@gmail.com>


== CREDITS

This project was inspired by ruby-cdb[https://github.com/mbj/ruby-cdb] and
cdb-full[https://rubygems.org/gems/cdb-full]. The code organization, especially the
extension part, was modeled after libxml-ruby[https://github.com/xml4r/libxml-ruby].

And props to the rake-compiler[http://github.com/luislavena/rake-compiler]
team for making extension building such a breeze :)


== LICENSE AND COPYRIGHT

Copyright (C) 2012 University of Cologne,
Albertus-Magnus-Platz, 50923 Cologne, Germany

Copyright (C) 2013-2016 Jens Wille

libcdb-ruby is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your
option) any later version.

libcdb-ruby is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
License for more details.

You should have received a copy of the GNU Affero General Public License
along with libcdb-ruby. If not, see <http://www.gnu.org/licenses/>.