EM::FS
EM::FS
provides a simple interface to gain simple filesystem access
in eventmachine via EM::SystemCommand
.
EM::FileUtils
attempts to mimic the behavoir of the filesystem API
of the Ruby stdlib. In the background it invokes linux/unix system
commands - like rsync
, mkdir
etc. - via the em-systemcommand
gem.
Furthermore EM::Dir
and EM::File
provide abstractions to crawl
directory structures via find
command without blocking the reactor.
Installation
Add this line to your application's Gemfile:
gem 'em-fs'
And then execute:
$ bundle
Or install it yourself as:
$ gem install em-fs
Usage
EM::FS
using rsync
and find
To invoke bare commands you can either use EM::SystemCommand
directly or the methods EM::FS.rsync
and EM::FS.find
.
EM::FileUtils
for simple filesystem operations
The FileUtils
methods from the Ruby Standard Library may block the
eventmachine reactor. That´s why em-fs
uses EM::SystemCommand
to
provide a similar non-blocking feature set.
EM.run do
EM::FileUtils.cp 'some_file', 'some_copy' do |on|
on.exit do |status|
puts 'Copied!'
end
end
end
For a full list of methods, have a look at the documentation.
Abstraction via EM::Dir
and EM::File
EM::Dir[]
returns a EM::Dir::Glob
object, containing the
information for the find
command. On this object you can invoke
multiple methods to see the resulting filesystem objects:
EM::Dir['./**/*.*'].each do |stat|
puts "Some stat: #{stat.inspect}"
end
EM::Dir['./**/*.lisp'].each_entry do |entry|
puts "Some entry: #{entry}"
end
EM::Dir['./**/*.rb'].each_path do |path|
puts "Some path: #{path}"
end
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request