2.0.0 - 2023/01 UNMAINTAINED

  • Uses ffi-libfuse instead of local C extension
  • Starting filesystems through RFuse.main
  • Require Ruby 2.7+

1.2.0 - 2020/09

  • Fix builds on recent linux
  • Require Ruby 2.4+
  • Release via Travis

1.1.2 - 2015/11/28

  • Bugfixes
  • Re-enable travis

1.1.0 - 2014/MM/DD

  • RFuse::Fuse#trap_signals a clean way of handling signals (with the self-pipe previously used for a graceful exit)
  • Default signal handlers for "INT","TERM" (exit fuse), "USR1" (toggle FuseDelegator debugging)
  • Introduce RFuse.main as Ruby equivalent of fuse_main() convenience method for starting filesystems

1.0.5 - 2014/04/16

Bugfixes

1.0.4 - 2013/12/19

Bugfixes

  • RFuse.parse_options fix if only local options supplied
  • Fixes for extended attributes
  • Prevent old exceptions from raising at unmount

1.0.3 - 2012/08/16

Cleanup compile warnings

Bugfixes

  • RFuse::Fuse#statfs potential segfault
  • RFuse::Fuse#release not receiving FileInfo

1.0.2 - 2012/08/09

Support Ruby 1.8 (tested with 1.8.7)

Bugfixes

  • RFuse::Fuse#utimens fixed to correctly convert time to nanoseconds
  • Exceptions in RFuse::Fuse#getattr fixed to output backtrace etc

1.0.0

Become rfuse once again with Ruby 1.9 support and documentation

Note that 1.0.0 does not signify anything more meaningful than a new release with API breaking changes since the various 0.x.y series of rfuse and rfuse-ng (as per rubygems recommended semantic versioning)

API breaking changes

  • RFuse::Fuse#initialize: combined options arrays (libopts,kernelopts) into a single arg array
  • RFuse::Fuse#mknod: split device integer into major and minor numbers
  • RFuse::Fuse#setxattr: removed unnecessary size parameter
  • RFuse::Fuse#getxattr: removed unnecessary size parameter
  • RFuse::Fuse#listxattr: return a String array which will be packed into a list of NULL terminated strings

Removed methods

  • RFuse::loop_mt - never worked, (see multithread branch on github)
  • RFuse::destroy - callback was being called during finalizer which was not safe

Other major changes

RFuse::Fuse#loop is now done in ruby using IO.select on the underlying FUSE file descriptor and using RFuse::Fuse#process to handle one fuse command at a time. This allows the Ruby interpreter to retain control so you can use other threads, Signal.trap etc...

Various RFuse::Fuse methods will throw RFuse::Error if the filesystem is not mounted, which can be tested after initialisation with RFuse::Fuse#mounted?

Implemented RFuse::FuseDelegator so your filesystem can be implemented (and tested/debugged) without needing to be a subclass of RFuse::Fuse

Implemented RFuse::Stat and RFuse::StatVfs helper classes