Create a new FSDirectory at
/path/to/index/
which must be a valid path on your file
system. If it doesn't exist it will be created. You can also specify
the create
parameter. If create
is true the FSDirectory will be refreshed as new. That is
to say, any existing files in the directory will be deleted. The default
value for create
is false.
path to index directory. Must be a valid path on your system
set to true if you want any existing files in the directory to be deleted
static VALUE frb_fsdir_new(int argc, VALUE *argv, VALUE klass) { VALUE self, rpath, rcreate; Store *store; bool create; rb_scan_args(argc, argv, "11", &rpath, &rcreate); StringValue(rpath); create = RTEST(rcreate); if (create) { frb_create_dir(rpath); } if (!rb_funcall(rb_cFile, id_is_directory, 1, rpath)) { rb_raise(rb_eIOError, "No directory <%s> found. Use :create => true" " to create one.", rs2s(rpath)); } store = open_fs_store(rs2s(rpath)); if (create) store->clear_all(store); if ((self = object_get(store)) == Qnil) { self = Data_Wrap_Struct(klass, NULL, &frb_dir_free, store); object_add(store, self); rb_ivar_set(self, id_ref_cnt, INT2FIX(0)); } else { int ref_cnt = FIX2INT(rb_ivar_get(self, id_ref_cnt)) + 1; rb_ivar_set(self, id_ref_cnt, INT2FIX(ref_cnt)); DEREF(store); } return self; }