Module: MemFs
- Extended by:
- MemFs
- Included in:
- MemFs
- Defined in:
- lib/memfs.rb,
lib/memfs/dir.rb,
lib/memfs/file.rb,
lib/memfs/version.rb,
lib/memfs/fake/file.rb,
lib/memfs/file/stat.rb,
lib/memfs/fake/entry.rb,
lib/memfs/file_system.rb,
lib/memfs/fake/symlink.rb,
lib/memfs/fake/directory.rb,
lib/memfs/fake/file/content.rb,
lib/memfs/filesystem_access.rb
Overview
Provides a clean way to interact with a fake file system.
Defined Under Namespace
Modules: Fake, FilesystemAccess Classes: Dir, File, FileSystem
Constant Summary collapse
- OriginalDir =
Keeps track of the original Ruby Dir class.
::Dir
- OriginalFile =
Keeps track of the original Ruby File class.
::File
- VERSION =
'0.4.1'
Instance Method Summary collapse
-
#activate { ... } ⇒ Object
Calls the given block with MemFs activated.
-
#activate! ⇒ Object
Activates the fake file system.
-
#deactivate! ⇒ Object
Deactivates the fake file system.
-
#touch(*paths) ⇒ Object
Creates a file and all its parent directories.
Instance Method Details
#activate { ... } ⇒ Object
Calls the given block with MemFs activated.
The advantage of using #activate against #activate! is that, in case an exception occurs, MemFs is deactivated.
53 54 55 56 57 58 |
# File 'lib/memfs.rb', line 53 def activate activate! yield ensure deactivate! end |
#activate! ⇒ Object
Don’t forget to call #deactivate! to disable the fake file system, you may have some issues in your scripts or tests otherwise.
Activates the fake file system.
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/memfs.rb', line 74 def activate! Object.class_eval do remove_const :Dir remove_const :File const_set :Dir, MemFs::Dir const_set :File, MemFs::File end MemFs::FileSystem.instance.clear! end |
#deactivate! ⇒ Object
This method should always be called when using activate!
Deactivates the fake file system.
92 93 94 95 96 97 98 99 100 |
# File 'lib/memfs.rb', line 92 def deactivate! Object.class_eval do remove_const :Dir remove_const :File const_set :Dir, MemFs::OriginalDir const_set :File, MemFs::OriginalFile end end |
#touch(*paths) ⇒ Object
Creates a file and all its parent directories.
107 108 109 110 111 112 113 114 115 116 |
# File 'lib/memfs.rb', line 107 def touch(*paths) if ::File != MemFs::File fail 'Always call MemFs.touch inside a MemFs active context.' end paths.each do |path| FileUtils.mkdir_p File.dirname(path) FileUtils.touch path end end |