Module FuseFS
In: lib/fusefs.rb
lib/fuse/rfusefs-fuse.rb
lib/fuse/fusedir.rb
lib/rfusefs.rb
lib/fusefs/dirlink.rb
lib/fusefs/sqlitemapper.rb
lib/fusefs/metadir.rb
lib/fusefs/pathmapper.rb

This is FuseFS compatible module built over RFuse

Methods

exit   handle_editor   main   mount   mount_under   reader_gid   reader_uid   run   set_root   start   unmount  

Classes and Modules

Class FuseFS::DirLink
Class FuseFS::FileHandle
Class FuseFS::Fuse
Class FuseFS::FuseDir
Class FuseFS::MetaDir
Class FuseFS::PathMapperFS
Class FuseFS::SqliteMapperFS
Class FuseFS::StatsHelper

Constants

RFUSEFS_COMPATIBILITY = false
RFUSEFS_COMPATIBILITY = true unless FuseFS.const_defined?(:RFUSEFS_COMPATIBILITY)   Which raw api should we use?
DEFAULT_FS = FuseDir.new()
HAS_FFI_XATTR = true
HAS_FFI_XATTR = false

Public Class methods

Exit the run loop and teardown FUSE Most useful from Signal.trap() or Kernel.at_exit()

Not supported in RFuseFS.

The original FuseFS had special handling for editor swap/backup files which appears to be a workaround for a bug where zero length files where never written to. This "bug" is fixed since RFuseFS 1.0.2

@deprecated

Convenience method to launch a FuseFS filesystem with nice error messages

@param [Array<String>] argv command line arguments @param [Array<Symbol>] options list of additional options @param [String] option_usage describing additional option usage @param [String] device a description of the device field @param [String] exec the executable file

@yieldparam [Hash<Symbol,String>] options

  options parsed from ARGV including...
    * :device - the optional mount device
    * :mountpoint - required mountpoint
    * :help - true if -h was supplied

@yieldreturn [FuseDir] an RFuseFS filesystem

@example

  MY_OPTIONS = [ :myfs ]
  OPTION_USAGE = "  -o myfs=VAL how to use the myfs option"

  # Normally from the command line...
  ARGV = [ "some/device", "/mnt/point", "-h", "-o", "debug,myfs=aValue" ]

  FuseFS.main(ARGV, MY_OPTIONS, OPTION_USAGE, "/path/to/somedevice", $0) do |options|

      # options ==
         { :device => "some/device",
           :mountpoint => "/mnt/point",
           :help => true,
           :debug => true,
           :myfs => "aValue"
         }

      fs = MyFS.new(options)
  end

Forks {FuseFS.start} so you can access your filesystem with ruby File operations (eg for testing). @note This is an RFuseFS extension @return [void]

This will cause FuseFS to virtually mount itself under the given path. {set_root} must have been called previously. @param [String] mountpoint an existing directory where the filesystem will be virtually mounted @param [Array<String>] args @return [Fuse] the mounted fuse filesystem

 These are as expected by the "mount" command. Note in particular that the first argument
 is expected to be the mount point. For more information, see http://fuse.sourceforge.net
 and the manual pages for "mount.fuse"

@return [Fixnum] the calling process gid

@return [Fixnum] the calling process uid

    You can use this in determining your permissions, or even provide different files
    for different users.

This is the main loop waiting on, then executing, filesystem operations from the kernel.

Note: Running in a separate thread is generally not useful. In particular

      you cannot use Ruby File operations to access your filesystem from
      within the ruby process that calls run.

@note RFuseFS extension

Set the root virtual directory @param root [Object] an object implementing a subset of {FuseFS::API} @return [void]

Start the FuseFS root at mountpoint with opts.

If not previously set, Signal traps for "TERM" and "INT" are added to exit the filesystem

@param [Object] root see {set_root} @param mountpoint [String] {mount_under} @param [String…] opts FUSE mount options see {mount_under} @note RFuseFS extension @return [void]

Unmount a filesystem @param mountpoint [String] If nil?, unmounts the filesystem started with {start}

                           otherwise signals the forked process started with {mount}
                           to exit and unmount.

@note RFuseFS extension @return [void]

[Validate]