Module: FSSM::Support

Defined in:
lib/fssm/support.rb

Class Method Summary collapse

Class Method Details

.backendObject



24
25
26
# File 'lib/fssm/support.rb', line 24

def backend
  @@backend ||= usable_backend
end

.jruby?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/fssm/support.rb', line 28

def jruby?
  defined?(JRUBY_VERSION)
end

.linux?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/fssm/support.rb', line 40

def linux?
  RbConfig::CONFIG['target_os'] =~ /linux/i
end

.lion?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/fssm/support.rb', line 36

def lion?
  RbConfig::CONFIG['target_os'] =~ /darwin11/i
end

.mac?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/fssm/support.rb', line 32

def mac?
  RbConfig::CONFIG['target_os'] =~ /darwin/i
end

.optimal_backend_dependencyObject



16
17
18
19
20
21
22
# File 'lib/fssm/support.rb', line 16

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?Boolean

Returns:

  • (Boolean)


44
45
46
47
48
49
50
51
# File 'lib/fssm/support.rb', line 44

def rb_fsevent?
  begin
    require 'rb-fsevent'
    defined?(FSEvent::VERSION) ? FSEvent::VERSION.to_f >= 0.4 : false
  rescue LoadError
    false
  end
end

.rb_inotify?Boolean

Returns:

  • (Boolean)


53
54
55
56
57
58
59
60
61
62
63
# File 'lib/fssm/support.rb', line 53

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_backendObject



5
6
7
8
9
10
11
12
13
14
# File 'lib/fssm/support.rb', line 5

def usable_backend
  case
    when mac? && rb_fsevent?
      'RBFSEvent'
    when linux? && rb_inotify?
      'Inotify'
    else
      'Polling'
  end
end

.use_block(context, block) ⇒ Object



65
66
67
68
69
70
71
72
# File 'lib/fssm/support.rb', line 65

def use_block(context, block)
  return if block.nil?
  if block.arity == 1
    block.call(context)
  else
    context.instance_eval(&block)
  end
end