1. DBM module is inconsistent with Ruby design
The DBM.open(dbname[, mode]) method requires its optional mode
argument to be an octal integer; it will not accept the mode
strings like "r" or "w" that are required for the built-in Ruby
function open() or the related methods in Ruby's IO and File
classes.
2. When I try to store a large value (eg., 6kb) in a DBM object,
I get the following error:
RuntimeError: dbm_store failed
Smaller values (eg., 256b) don't seem to cause any problems.
The ext/dbm.c source code for fdbm_store has
if (dbm_store(dbm, key, val, DBM_REPLACE)) {
#ifdef HAVE_DBM_CLEARERR
dbm_clearerr(dbm);
#endif
if (errno == EPERM) rb_sys_fail(0);
rb_raise(rb_eRuntimeError, "dbm_store failed");
}
which suggests to me that this may be a known problem with DBM.
Another possible cause is that this error is occurring on a 64 bit
machine (Alpha/OSF4.0D) with a deprecated libdbm.a library.
Any suggestions would be appreciated.
Thank you,
Eric