Giter Site home page Giter Site logo

leveldb-ruby's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

leveldb-ruby's Issues

How to check if Snappy library is used

hi,

i installed snappy library (compression library) on my macbook pro (osx 10.7.3 + xcode 4.2.1) using homebrew

brew install snappy

which will install snappy into /usr/local/Cellar/snappy/1.0.4
homebrew adds these path to $PATH
my question is, how to get the information if snappy is used properly?

Gem installation failing on documentation.

$ sudo gem install leveldb-ruby
Fetching: leveldb-ruby-0.15.gem (100%)
Building native extensions. This could take a while...
Successfully installed leveldb-ruby-0.15
Parsing documentation for leveldb-ruby-0.15
Before reporting this, could you check that the file you're documenting
has proper syntax:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -c ext/leveldb/leveldb.cc

RDoc is not a full Ruby parser and will fail when fed invalid ruby programs.

The internal error was:

(RegexpError) Stack overflow in regexp matcher: /.*((?>\/\*.*?\*\/\s+))
                     ([\w\.\s]+\s* = \s+)?rb_define_(class|module).*?"(LevelDB)"/mx

ERROR: While executing gem ... (RegexpError)
Stack overflow in regexp matcher: /.((?>/_.?_/\s+))
([\w.\s]+\s* = \s+)?rb_define_(class|module).*?"(LevelDB)"/mx

Gem install fails on MacOS

Running gem install leveldb-ruby on MacOS (10.15.7) fails with

 gem install leveldb-ruby
Building native extensions. This could take a while...
ERROR:  Error installing leveldb-ruby:
        ERROR: Failed to build gem native extension.

    current directory: /Users/studnev/.rvm/gems/ruby-2.6.3/gems/leveldb-ruby-0.15/ext/leveldb
/Users/studnev/.rvm/rubies/ruby-2.6.3/bin/ruby -I /Users/studnev/.rvm/rubies/ruby-2.6.3/lib/ruby/site_ruby/2.6.0 -r ./siteconf20210520-85857-33fmh7.rb extconf.rb
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/builder.cc -o db/builder.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/c.cc -o db/c.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/db_impl.cc -o db/db_impl.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/db_iter.cc -o db/db_iter.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/dbformat.cc -o db/dbformat.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/filename.cc -o db/filename.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/log_reader.cc -o db/log_reader.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/log_writer.cc -o db/log_writer.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/memtable.cc -o db/memtable.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/repair.cc -o db/repair.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/table_cache.cc -o db/table_cache.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/version_edit.cc -o db/version_edit.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/version_set.cc -o db/version_set.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/write_batch.cc -o db/write_batch.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/block.cc -o table/block.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/block_builder.cc -o table/block_builder.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/filter_block.cc -o table/filter_block.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/format.cc -o table/format.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/iterator.cc -o table/iterator.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/merger.cc -o table/merger.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/table.cc -o table/table.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/table_builder.cc -o table/table_builder.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/two_level_iterator.cc -o table/two_level_iterator.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/arena.cc -o util/arena.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/bloom.cc -o util/bloom.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/cache.cc -o util/cache.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/coding.cc -o util/coding.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/comparator.cc -o util/comparator.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/crc32c.cc -o util/crc32c.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/env.cc -o util/env.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/env_posix.cc -o util/env_posix.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/filter_policy.cc -o util/filter_policy.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/hash.cc -o util/hash.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/histogram.cc -o util/histogram.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/logging.cc -o util/logging.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/options.cc -o util/options.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/status.cc -o util/status.o
g++ -I. -I./include -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c port/port_posix.cc -o port/port_posix.o
rm -f libleveldb.a
ar -rs libleveldb.a db/builder.o db/c.o db/db_impl.o db/db_iter.o db/dbformat.o db/filename.o db/log_reader.o db/log_writer.o db/memtable.o db/repair.o db/table_cache.o db/version_edit.o db/version_set.o db/write_batch.o table/block.o table/block_builder.o table/filter_block.o table/format.o table/iterator.o table/merger.o table/table.o table/table_builder.o table/two_level_iterator.o util/arena.o util/bloom.o util/cache.o util/coding.o util/comparator.o util/crc32c.o util/env.o util/env_posix.o util/filter_policy.o util/hash.o util/histogram.o util/logging.o util/options.o util/status.o port/port_posix.o
ar: creating archive libleveldb.a
setting build environment for x86_64-darwin18...
creating Makefile

current directory: /Users/studnev/.rvm/gems/ruby-2.6.3/gems/leveldb-ruby-0.15/ext/leveldb
make "DESTDIR=" clean

current directory: /Users/studnev/.rvm/gems/ruby-2.6.3/gems/leveldb-ruby-0.15/ext/leveldb
make "DESTDIR="
compiling leveldb.cc
In file included from leveldb.cc:4:
In file included from /usr/local/include/leveldb/db.h:12:
In file included from /usr/local/include/leveldb/iterator.h:19:
/usr/local/include/leveldb/slice.h:43:25: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
  Slice(const Slice&) = default;
                        ^
/usr/local/include/leveldb/slice.h:44:36: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
  Slice& operator=(const Slice&) = default;
                                   ^
In file included from leveldb.cc:4:
In file included from /usr/local/include/leveldb/db.h:12:
In file included from /usr/local/include/leveldb/iterator.h:20:
/usr/local/include/leveldb/status.h:27:11: error: expected ';' at end of declaration list
  Status() noexcept : state_(nullptr) {}
          ^
          ;
/usr/local/include/leveldb/status.h:33:16: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
  Status(Status&& rhs) noexcept : state_(rhs.state_) { rhs.state_ = nullptr; }
               ^
/usr/local/include/leveldb/status.h:33:23: error: expected ';' at end of declaration list
  Status(Status&& rhs) noexcept : state_(rhs.state_) { rhs.state_ = nullptr; }
                      ^
                      ;
/usr/local/include/leveldb/status.h:103:16: error: 'Status' is missing exception specification 'throw()'
inline Status::Status(const Status& rhs) {
               ^
                                         throw()
/usr/local/include/leveldb/status.h:24:22: note: previous declaration is here
class LEVELDB_EXPORT Status {
                     ^
/usr/local/include/leveldb/status.h:115:40: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
inline Status& Status::operator=(Status&& rhs) noexcept {
                                       ^
/usr/local/include/leveldb/status.h:115:48: error: expected function body after function declarator
inline Status& Status::operator=(Status&& rhs) noexcept {
                                               ^
In file included from leveldb.cc:4:
In file included from /usr/local/include/leveldb/db.h:12:
/usr/local/include/leveldb/iterator.h:28:31: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  Iterator(const Iterator&) = delete;
                              ^
/usr/local/include/leveldb/iterator.h:29:42: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  Iterator& operator=(const Iterator&) = delete;
                                         ^
/usr/local/include/leveldb/iterator.h:80:27: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
  using CleanupFunction = void (*)(void* arg1, void* arg2);
                          ^
In file included from leveldb.cc:4:
In file included from /usr/local/include/leveldb/db.h:13:
/usr/local/include/leveldb/options.h:49:26: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  bool create_if_missing = false;
                         ^
/usr/local/include/leveldb/options.h:52:24: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  bool error_if_exists = false;
                       ^
/usr/local/include/leveldb/options.h:59:24: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  bool paranoid_checks = false;
                       ^
/usr/local/include/leveldb/options.h:69:20: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  Logger* info_log = nullptr;
                   ^
/usr/local/include/leveldb/options.h:82:28: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  size_t write_buffer_size = 4 * 1024 * 1024;
                           ^
/usr/local/include/leveldb/options.h:87:22: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  int max_open_files = 1000;
                     ^
/usr/local/include/leveldb/options.h:94:22: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  Cache* block_cache = nullptr;
                     ^
/usr/local/include/leveldb/options.h:100:21: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  size_t block_size = 4 * 1024;
                    ^
/usr/local/include/leveldb/options.h:105:30: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  int block_restart_interval = 16;
                             ^
/usr/local/include/leveldb/options.h:115:24: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  size_t max_file_size = 2 * 1024 * 1024;
                       ^
/usr/local/include/leveldb/options.h:131:31: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  CompressionType compression = kSnappyCompression;
                              ^
/usr/local/include/leveldb/options.h:137:19: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  bool reuse_logs = false;
                  ^
/usr/local/include/leveldb/options.h:142:37: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  const FilterPolicy* filter_policy = nullptr;
                                    ^
/usr/local/include/leveldb/options.h:147:19: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
  ReadOptions() = default;
                  ^
/usr/local/include/leveldb/options.h:151:25: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  bool verify_checksums = false;
                        ^
/usr/local/include/leveldb/options.h:155:19: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  bool fill_cache = true;
                  ^
/usr/local/include/leveldb/options.h:161:28: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  const Snapshot* snapshot = nullptr;
                           ^
/usr/local/include/leveldb/options.h:166:20: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
  WriteOptions() = default;
                   ^
/usr/local/include/leveldb/options.h:182:13: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
  bool sync = false;
            ^
In file included from leveldb.cc:4:
/usr/local/include/leveldb/db.h:56:10: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
  DB() = default;
         ^
/usr/local/include/leveldb/db.h:58:19: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  DB(const DB&) = delete;
                  ^
/usr/local/include/leveldb/db.h:59:30: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  DB& operator=(const DB&) = delete;
                             ^
In file included from leveldb.cc:5:
/usr/local/include/leveldb/cache.h:36:13: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
  Cache() = default;
            ^
/usr/local/include/leveldb/cache.h:38:25: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  Cache(const Cache&) = delete;
                        ^
/usr/local/include/leveldb/cache.h:39:36: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
  Cache& operator=(const Cache&) = delete;
                                   ^
In file included from leveldb.cc:7:
/usr/local/include/leveldb/write_batch.h:45:35: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
  WriteBatch(const WriteBatch&) = default;
                                  ^
/usr/local/include/leveldb/write_batch.h:46:46: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
  WriteBatch& operator=(const WriteBatch&) = default;
                                             ^
34 warnings and 4 errors generated.
make: *** [leveldb.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/studnev/.rvm/gems/ruby-2.6.3/gems/leveldb-ruby-0.15 for inspection.
Results logged to /Users/studnev/.rvm/gems/ruby-2.6.3/extensions/x86_64-darwin-18/2.6.0/leveldb-ruby-0.15/gem_make.out

Curious issue when forking

I'm working on a solution that uses forks as a crude concurrency strategy. But I'm noticing odd behavior with corrupted db data. Here's a standalone script to reproduce the issue. I think one (or all) of the forked children are writing to the database on close. Does anyone know how I can avoid having the children writing to the database?

require "leveldb"

db = LevelDB::DB.new("./tmp/db/test.ldb")
205.times.each do |i|
  if i % 20 == 0
    fork do
      # not doing anything
      sleep 10
    end
  end

  db.put("#{i}", "#{i * 100}")
end

[2, 5, 91, 10, 84, 158, 42, 68, 102].each do |i|
  db.delete("#{i}")
end

p db.keys.size

Process.waitall
p db.keys.size

db.close
db = LevelDB::DB.new("./tmp/db/test.ldb")
p db.keys.size

Updating the put and delete to use :sync => true doesn't change the behavior

How to open the already created database after closing the app

i have created the app by

require 'leveldb'
db = LevelDB::DB.new("test14.db")
db.put "one","hi welcome3"
puts db.get "one"

Now after closing this app how to open the database???

i tried

require 'leveldb'
db = LevelDB::DB.new("test14.db")
puts db.get "one"

But the above code throws error

ruby: symbol lookup error: /home/mounarajan/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/extensions/x86_64-linux/2.1.0-static/leveldb-ruby-0.15/leveldb/leveldb.so: undefined symbol: _ZN6snappy19MaxCompressedLengthEm

extconf.rb fails automatically due to no detection of environmental make

I got some really quite surprising errors while trying to install leveldb-ruby:

> MAKE=gmake gem install leveldb-ruby
Building native extensions.  This could take a while...
ERROR:  Error installing leveldb-ruby:
    ERROR: Failed to build gem native extension.

        /home/jashank/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 18: Need an operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 20: Could not find build_config.mk
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 63: Missing dependency operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 65: Missing dependency operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 70: Need an operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 82: Need an operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 87: Need an operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 172: Missing dependency operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 194: Need an operator
make: "/home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb/Makefile" line 200: Need an operator
make: Fatal errors encountered -- cannot continue
make: stopped in /home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/leveldb


Gem files will remain installed in /home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15 for inspection.
Results logged to /home/jashank/.rvm/gems/ruby-1.9.3-p194/gems/leveldb-ruby-0.15/ext/leveldb/gem_make.out

Turns out, having gone bug chasing through rubygems, rbconfig and bundler, it's a bug in the extension -- the extconf.rb calls 'make', which is all well and good, except that isn't guaranteed to be GNU make on a *BSD system. Further, this doesn't honour the MAKE environment variable (or the --with-make-prog handle available from rbconfig).

Iterator interface leaks files

A simple statement like

key, value = db.each(reversed: true).first

will leak an iterator and therefore open file descriptors. (even if the db is closed) Doing enough of these and your Ruby process crashes because it exhausts your file ulimit.

We would need an explicit iterator interface or at the very least a #close method on the iterator so that the open files can be closed.

gem installation failing

Trying to gem install leveldb-ruby, I get an error on make:

technocracy|master⚡ ⇒ gem install leveldb-ruby
Building native extensions.  This could take a while...
ERROR:  Error installing leveldb-ruby:
    ERROR: Failed to build gem native extension.

    current directory: /home/gaudencio/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/leveldb-ruby-0.15/ext/leveldb
/home/gaudencio/.rbenv/versions/2.3.1/bin/ruby -r ./siteconf20160811-16326-g16o2a.rb extconf.rb
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/builder.cc -o db/builder.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/c.cc -o db/c.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/dbformat.cc -o db/dbformat.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/db_impl.cc -o db/db_impl.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/db_iter.cc -o db/db_iter.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/filename.cc -o db/filename.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/log_reader.cc -o db/log_reader.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/log_writer.cc -o db/log_writer.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/memtable.cc -o db/memtable.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/repair.cc -o db/repair.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/table_cache.cc -o db/table_cache.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/version_edit.cc -o db/version_edit.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/version_set.cc -o db/version_set.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c db/write_batch.cc -o db/write_batch.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/block_builder.cc -o table/block_builder.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/block.cc -o table/block.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/filter_block.cc -o table/filter_block.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/format.cc -o table/format.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/iterator.cc -o table/iterator.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/merger.cc -o table/merger.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/table_builder.cc -o table/table_builder.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/table.cc -o table/table.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c table/two_level_iterator.cc -o table/two_level_iterator.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/arena.cc -o util/arena.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/bloom.cc -o util/bloom.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/cache.cc -o util/cache.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/coding.cc -o util/coding.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/comparator.cc -o util/comparator.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/crc32c.cc -o util/crc32c.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/env.cc -o util/env.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/env_posix.cc -o util/env_posix.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/filter_policy.cc -o util/filter_policy.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/hash.cc -o util/hash.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/histogram.cc -o util/histogram.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/logging.cc -o util/logging.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/options.cc -o util/options.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c util/status.cc -o util/status.o
g++ -I. -I./include -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX -O2 -DNDEBUG -fPIC -c port/port_posix.cc -o port/port_posix.o
rm -f libleveldb.a
ar -rs libleveldb.a db/builder.o db/c.o db/dbformat.o db/db_impl.o db/db_iter.o db/filename.o db/log_reader.o db/log_writer.o db/memtable.o db/repair.o db/table_cache.o db/version_edit.o db/version_set.o db/write_batch.o table/block_builder.o table/block.o table/filter_block.o table/format.o table/iterator.o table/merger.o table/table_builder.o table/table.o table/two_level_iterator.o util/arena.o util/bloom.o util/cache.o util/coding.o util/comparator.o util/crc32c.o util/env.o util/env_posix.o util/filter_policy.o util/hash.o util/histogram.o util/logging.o util/options.o util/status.o port/port_posix.o
ar: creating libleveldb.a
setting build environment for x86_64-linux...
checking for epoll_create() in sys/epoll.h... yes
creating Makefile

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /home/gaudencio/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-linux/2.3.0-static/leveldb-ruby-0.15/mkmf.log

current directory: /home/gaudencio/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/leveldb-ruby-0.15/ext/leveldb
make "DESTDIR=" clean

current directory: /home/gaudencio/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/leveldb-ruby-0.15/ext/leveldb
make "DESTDIR="
compiling leveldb.cc
cc1plus: warning: command line option ‘-Wdeclaration-after-statement’ is valid for C/ObjC but not for C++
cc1plus: warning: command line option ‘-Wimplicit-function-declaration’ is valid for C/ObjC but not for C++
leveldb.cc:4:24: fatal error: leveldb/db.h: No such file or directory
compilation terminated.
Makefile:206: recipe for target 'leveldb.o' failed
make: *** [leveldb.o] Error 1

make failed, exit code 2

Gem files will remain installed in /home/gaudencio/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/leveldb-ruby-0.15 for inspection.
Results logged to /home/gaudencio/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-linux/2.3.0-static/leveldb-ruby-0.15/gem_make.out

and this mkmf.log:

have_func: checking for epoll_create() in sys/epoll.h... -------------------- yes

"gcc -o conftest -I/home/gaudencio/.rbenv/versions/2.3.1/include/ruby-2.3.0/x86_64-linux -I/home/gaudencio/.rbenv/versions/2.3.1/include/ruby-2.3.0/ruby/backward -I/home/gaudencio/.rbenv/versions/2.3.1/include/ruby-2.3.0 -I. -I/home/gaudencio/.rbenv/versions/2.3.1/include     -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wno-maybe-uninitialized conftest.c  -L. -L/home/gaudencio/.rbenv/versions/2.3.1/lib -Wl,-R/home/gaudencio/.rbenv/versions/2.3.1/lib -L. -L/home/gaudencio/.rbenv/versions/2.3.1/lib  -fstack-protector -rdynamic -Wl,-export-dynamic     -Wl,-R/home/gaudencio/.rbenv/versions/2.3.1/lib -L/home/gaudencio/.rbenv/versions/2.3.1/lib -lruby-static  -lpthread -ldl -lcrypt -lm   -lc"
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return 0;
6: }
/* end */

"gcc -o conftest -I/home/gaudencio/.rbenv/versions/2.3.1/include/ruby-2.3.0/x86_64-linux -I/home/gaudencio/.rbenv/versions/2.3.1/include/ruby-2.3.0/ruby/backward -I/home/gaudencio/.rbenv/versions/2.3.1/include/ruby-2.3.0 -I. -I/home/gaudencio/.rbenv/versions/2.3.1/include     -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wno-maybe-uninitialized conftest.c  -L. -L/home/gaudencio/.rbenv/versions/2.3.1/lib -Wl,-R/home/gaudencio/.rbenv/versions/2.3.1/lib -L. -L/home/gaudencio/.rbenv/versions/2.3.1/lib  -fstack-protector -rdynamic -Wl,-export-dynamic     -Wl,-R/home/gaudencio/.rbenv/versions/2.3.1/lib -L/home/gaudencio/.rbenv/versions/2.3.1/lib -lruby-static  -lpthread -ldl -lcrypt -lm   -lc"
checked program was:
/* begin */
 1: #include "ruby.h"
 2: 
 3: #include <sys/epoll.h>
 4: 
 5: /*top*/
 6: extern int t(void);
 7: int main(int argc, char **argv)
 8: {
 9:   if (argc > 1000000) {
10:     printf("%p", &t);
11:   }
12: 
13:   return 0;
14: }
15: int t(void) { void ((*volatile p)()); p = (void ((*)()))epoll_create; return !p; }
/* end */

--------------------

The gem is a dependency of cabalist.

undefined symbol: _ZN6snappy19MaxCompressedLengthEm

Hi

I've installed leveldb-ruby and I'm getting this when I try to use

ruby: symbol lookup error: /home/colin/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/leveldb-ruby-0.15/lib/leveldb/leveldb.so: undefined symbol: _ZN6snappy19MaxCompressedLengthEm

I found a reference to this problem in the closed issues but I couldn't see a solution. I have version leveldb-ruby-0.15 installed.

If you have any tips on how to get around this, I'd appreciate it. Thanks.

Colin

Fails when writing

Code as following
100_000.times { |x| db.put x.to_s, "abcdefghijklmnopqrstuvwxyz"}

Error:
.../lib/leveldb/leveldb.so: undefined symbol: _ZN6snappy19MaxCompressedLengthEj
when more than about 79000 keys.

DB folder shows:
-rw-r--r-- 1 root root 4178034 2012-04-18 07:58 000003.log
-rw-r--r-- 1 root root 65536 2012-04-18 07:58 000004.log
-rw-r--r-- 1 root root 0 2012-04-18 07:58 000005.sst
-rw-r--r-- 1 root root 16 2012-04-18 07:58 CURRENT
-rw-r--r-- 1 root root 0 2012-04-18 07:58 LOCK
-rw-r--r-- 1 root root 115 2012-04-18 07:58 LOG
-rw-r--r-- 1 root root 65536 2012-04-18 07:58 MANIFEST-000002

Why ???

Crash when storing large object

 require 'leveldb'
db = LevelDB::DB.new "/tmp/asdf"
db.put "it really", "works" * 1000

gives me

 [BUG] Segmentation fault
ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]

-- control frame ----------
c:0025 p:---- s:0093 b:0093 l:000092 d:000092 CFUNC  :make
c:0024 p:0017 s:0087 b:0087 l:000086 d:000086 METHOD /home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb.rb:11
c:0023 p:0019 s:0083 b:0083 l:000dd4 d:000098 EVAL   (irb):2
c:0022 p:---- s:0080 b:0080 l:000079 d:000079 FINISH
c:0021 p:---- s:0078 b:0078 l:000077 d:000077 CFUNC  :eval
c:0020 p:0028 s:0071 b:0071 l:000070 d:000070 METHOD /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/workspace.rb:80
c:0019 p:0033 s:0064 b:0063 l:000062 d:000062 METHOD /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/context.rb:254
c:0018 p:0031 s:0058 b:0058 l:00083c d:000057 BLOCK  /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb.rb:159
c:0017 p:0042 s:0050 b:0050 l:000049 d:000049 METHOD /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb.rb:273
c:0016 p:0011 s:0045 b:0045 l:00083c d:000044 BLOCK  /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb.rb:156
c:0015 p:0144 s:0041 b:0041 l:000024 d:000040 BLOCK  /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/ruby-lex.rb:243
c:0014 p:---- s:0038 b:0038 l:000037 d:000037 FINISH
c:0013 p:---- s:0036 b:0036 l:000035 d:000035 CFUNC  :loop
c:0012 p:0009 s:0033 b:0033 l:000024 d:000032 BLOCK  /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/ruby-lex.rb:229
c:0011 p:---- s:0031 b:0031 l:000030 d:000030 FINISH
c:0010 p:---- s:0029 b:0029 l:000028 d:000028 CFUNC  :catch
c:0009 p:0023 s:0025 b:0025 l:000024 d:000024 METHOD /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/ruby-lex.rb:228
c:0008 p:0046 s:0022 b:0022 l:00083c d:00083c METHOD /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb.rb:155
c:0007 p:0011 s:0019 b:0019 l:000584 d:000018 BLOCK  /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb.rb:70
c:0006 p:---- s:0017 b:0017 l:000016 d:000016 FINISH
c:0005 p:---- s:0015 b:0015 l:000014 d:000014 CFUNC  :catch
c:0004 p:0183 s:0011 b:0011 l:000584 d:000584 METHOD /home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb.rb:69
c:0003 p:0142 s:0006 b:0006 l:0008e4 d:001fc4 EVAL   /home/ron/.rvm/rubies/ruby-1.9.2-p180/bin/irb:16
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:0008e4 d:0008e4 TOP   
---------------------------
...
-- C level backtrace information -------------------------------------------
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9(rb_vm_bugreport+0x72) [0xaf97b2]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0x9d71f7]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9(rb_bug+0x3a) [0x9d72ea]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xa86e54]
[0x68b410]
/home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZN7leveldb8SkipListIPKcNS_8MemTable13KeyComparatorEE6InsertERKS2_+0x38) [0x40bfc8]
/home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZN7leveldb8MemTable3AddEyNS_9ValueTypeERKNS_5SliceES4_+0x136) [0x40b876]
/home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so [0x4153d9]
/home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZNK7leveldb10WriteBatch7IterateEPNS0_7HandlerE+0x200) [0x415760]
/home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZN7leveldb18WriteBatchInternal10InsertIntoEPKNS_10WriteBatchEPNS_8MemTableE+0x53) [0x415933]
/home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZN7leveldb6DBImpl14RecoverLogFileEyPNS_11VersionEditEPy+0x420) [0x4028d0]
/home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZN7leveldb6DBImpl7RecoverEPNS_11VersionEditE+0x28e) [0x4065ae]
/home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so(_ZN7leveldb2DB4OpenERKNS_7OptionsERKSsPPS0_+0xdf) [0x4067cf]
/home/ron/.rvm/gems/ruby-1.9.2-p180/gems/leveldb-ruby-0.7/lib/leveldb/leveldb.so [0x3fdc05]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xae3909]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xaf47ee]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xae93df]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xaee94a]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xaef2bd]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9(rb_f_eval+0xdc) [0xaef8ec]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xae3958]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xaf47ee]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xae93df]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xaee94a]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9 [0xaf1937]
/home/ron/.rvm/rubies/ruby-1.9.2-p180/lib/libruby.so.1.9(rb_rescue2+0x169) [0x9d9989]
...

Building Native gem fails in windows.

Hi,
I am trying to install leveldb gem in windows 10 for ruby 2.3.3. It is giving error as Unable to build native extension in windows. Please, any assistance or advice is welcomed.

How to turn off compression?

How do I set the option to turn off compression when I open a LevelDB database?

I understand that I need to pass the option when I open a database, but I'm not quite sure how to do it:

ldb = LevelDB::DB.new "/path/to/leveldb/folder", {:compression => nil} # doesn't work

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.