backend()
click to toggle source
def backend
@@backend ||= usable_backend
end
jruby?()
click to toggle source
def jruby?
defined?(JRUBY_VERSION)
end
linux?()
click to toggle source
def linux?
RbConfig::CONFIG['target_os'] =~ /linux/
end
lion?()
click to toggle source
def lion?
RbConfig::CONFIG['target_os'] =~ /darwin11/
end
mac?()
click to toggle source
def mac?
RbConfig::CONFIG['target_os'] =~ /darwin/
end
optimal_backend_dependency()
click to toggle source
def optimal_backend_dependency
return case
when mac? then ['rb-fsevent', '>= 0.4.3.1']
when linux? then ['rb-inotify', '>= 0.8.8']
else [nil, nil]
end
end
rb_fsevent?()
click to toggle source
def rb_fsevent?
begin
require 'rb-fsevent'
defined?(FSEvent::VERSION) ? FSEvent::VERSION.to_f >= 0.4 : false
rescue LoadError
false
end
end
rb_inotify?()
click to toggle source
def rb_inotify?
begin
require 'rb-inotify'
if defined?(INotify::VERSION)
version = INotify::VERSION
version[0] > 0 || version[1] >= 6
end
rescue LoadError
false
end
end
usable_backend()
click to toggle source
def usable_backend
case
when mac? && rb_fsevent?
'RBFSEvent'
when linux? && rb_inotify?
'Inotify'
else
'Polling'
end
end
use_block(context, block)
click to toggle source
def use_block(context, block)
return if block.nil?
if block.arity == 1
block.call(context)
else
context.instance_eval(&block)
end
end