fssm 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,11 @@
1
+ *.gem
2
+ *.rbc
3
+ *.sw?
4
+ .DS_Store
5
+ .bundle
6
+ .idea
7
+ Gemfile.lock
8
+ coverage
9
+ nbproject
10
+ pkg/*
11
+ rdoc
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 Travis Tilley
1
+ Copyright (c) 2011 Travis Tilley
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -1,59 +1,11 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "fssm"
8
- gem.summary = %Q{file system state monitor}
9
- gem.description = %Q{file system state monitor}
10
- gem.email = "ttilley@gmail.com"
11
- gem.homepage = "http://github.com/ttilley/fssm"
12
- gem.authors = ["Travis Tilley"]
13
- gem.add_development_dependency "rspec"
14
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
- end
16
- rescue LoadError
17
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
18
- end
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
19
3
 
20
4
  require 'spec/rake/spectask'
21
5
  Spec::Rake::SpecTask.new(:spec) do |spec|
22
6
  spec.libs << 'lib' << 'spec'
23
7
  spec.spec_files = FileList['spec/**/*_spec.rb']
24
- end
25
-
26
- Spec::Rake::SpecTask.new(:rcov) do |spec|
27
- spec.libs << 'lib' << 'spec'
28
- spec.pattern = 'spec/**/*_spec.rb'
29
- spec.rcov = true
30
- end
31
-
32
- task :spec => :check_dependencies
33
-
34
- begin
35
- require 'reek/rake_task'
36
- Reek::RakeTask.new do |t|
37
- t.fail_on_error = true
38
- t.verbose = false
39
- t.source_files = 'lib/**/*.rb'
40
- end
41
- rescue LoadError
42
- task :reek do
43
- abort "Reek is not available. In order to run reek, you must: sudo gem install reek"
44
- end
45
- end
46
-
47
- begin
48
- require 'roodi'
49
- require 'roodi_task'
50
- RoodiTask.new do |t|
51
- t.verbose = false
52
- end
53
- rescue LoadError
54
- task :roodi do
55
- abort "Roodi is not available. In order to run roodi, you must: sudo gem install roodi"
56
- end
8
+ spec.spec_opts = ['--format', 'specdoc']
57
9
  end
58
10
 
59
11
  task :default => :spec
@@ -1,80 +1,24 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "fssm/version"
5
4
 
6
5
  Gem::Specification.new do |s|
7
- s.name = %q{fssm}
8
- s.version = "0.2.4"
6
+ s.name = "fssm"
7
+ s.version = FSSM::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Travis Tilley", "Nathan Weizenbaum", "Chris Eppstein",
10
+ "Jonathan Castello", "Tuomas Kareinen"]
11
+ s.email = ["ttilley@gmail.com"]
12
+ s.homepage = "https://github.com/ttilley/fssm"
13
+ s.summary = %q{File System State Monitor}
14
+ s.description = %q{The File System State Monitor keeps track of the state of any number of paths and will fire events when said state changes (create/update/delete). FSSM supports using FSEvents on MacOS, Inotify on GNU/Linux, and polling anywhere else.}
9
15
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Travis Tilley"]
12
- s.date = %q{2011-01-15}
13
- s.description = %q{file system state monitor}
14
- s.email = %q{ttilley@gmail.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.markdown"
18
- ]
19
- s.files = [
20
- ".document",
21
- "LICENSE",
22
- "README.markdown",
23
- "Rakefile",
24
- "VERSION.yml",
25
- "example.rb",
26
- "fssm.gemspec",
27
- "lib/fssm.rb",
28
- "lib/fssm/backends/fsevents.rb",
29
- "lib/fssm/backends/inotify.rb",
30
- "lib/fssm/backends/polling.rb",
31
- "lib/fssm/backends/rbfsevent.rb",
32
- "lib/fssm/backends/rubycocoa/fsevents.rb",
33
- "lib/fssm/monitor.rb",
34
- "lib/fssm/path.rb",
35
- "lib/fssm/pathname.rb",
36
- "lib/fssm/state/directory.rb",
37
- "lib/fssm/state/file.rb",
38
- "lib/fssm/support.rb",
39
- "lib/fssm/tree.rb",
40
- "profile/prof-cache.rb",
41
- "profile/prof-fssm-pathname.html",
42
- "profile/prof-pathname-rubinius.rb",
43
- "profile/prof-pathname.rb",
44
- "profile/prof-plain-pathname.html",
45
- "profile/prof.html",
46
- "spec/count_down_latch.rb",
47
- "spec/monitor_spec.rb",
48
- "spec/path_spec.rb",
49
- "spec/root/duck/quack.txt",
50
- "spec/root/file.css",
51
- "spec/root/file.rb",
52
- "spec/root/file.yml",
53
- "spec/root/moo/cow.txt",
54
- "spec/spec_helper.rb"
55
- ]
56
- s.homepage = %q{http://github.com/ttilley/fssm}
57
- s.require_paths = ["lib"]
58
- s.rubygems_version = %q{1.4.2}
59
- s.summary = %q{file system state monitor}
60
- s.test_files = [
61
- "spec/count_down_latch.rb",
62
- "spec/monitor_spec.rb",
63
- "spec/path_spec.rb",
64
- "spec/root/file.rb",
65
- "spec/spec_helper.rb"
66
- ]
16
+ s.rubyforge_project = "fssm"
67
17
 
68
- if s.respond_to? :specification_version then
69
- s.specification_version = 3
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
70
22
 
71
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
72
- s.add_development_dependency(%q<rspec>, [">= 0"])
73
- else
74
- s.add_dependency(%q<rspec>, [">= 0"])
75
- end
76
- else
77
- s.add_dependency(%q<rspec>, [">= 0"])
78
- end
23
+ s.add_development_dependency "rspec", "1.3.0"
79
24
  end
80
-
@@ -3,8 +3,8 @@ $LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir)
3
3
 
4
4
  module FSSM
5
5
  FileNotFoundError = Class.new(StandardError)
6
- FileNotRealError = Class.new(StandardError)
7
- CallbackError = Class.new(StandardError)
6
+ FileNotRealError = Class.new(StandardError)
7
+ CallbackError = Class.new(StandardError)
8
8
 
9
9
  class << self
10
10
  def dbg(msg=nil)
@@ -23,6 +23,7 @@ end
23
23
 
24
24
  require 'thread'
25
25
 
26
+ require 'fssm/version'
26
27
  require 'fssm/pathname'
27
28
  require 'fssm/support'
28
29
  require 'fssm/tree'
@@ -10,7 +10,7 @@ module FSSM::Backends
10
10
  def add_handler(handler, preload=true)
11
11
  @handlers[handler.path.to_s] = handler
12
12
 
13
- fsevent = Rucola::FSEvents.new(handler.path.to_s, {:latency => 0.5}) do |events|
13
+ fsevent = Rucola::FSEvents.new(handler.path.to_s, {:latency => 0.5}) do |events|
14
14
  events.each do |event|
15
15
  handler.refresh(event.path)
16
16
  end
@@ -6,7 +6,7 @@ module FSSM::Backends
6
6
 
7
7
  def add_handler(handler, preload=true)
8
8
  @notifier.watch(handler.path.to_s, :recursive, :attrib, :modify, :create,
9
- :delete, :delete_self, :moved_from, :moved_to, :move_self) do |event|
9
+ :delete, :delete_self, :moved_from, :moved_to, :move_self) do |event|
10
10
  path = FSSM::Pathname.for(event.absolute_name)
11
11
  path = path.dirname unless event.name == "" # Event on root directory
12
12
  handler.refresh(path)
@@ -2,7 +2,7 @@ module FSSM::Backends
2
2
  class Polling
3
3
  def initialize(options={})
4
4
  @handlers = []
5
- @latency = options[:latency] || 1.5
5
+ @latency = options[:latency] || 1.5
6
6
  end
7
7
 
8
8
  def add_handler(handler, preload=true)
@@ -14,7 +14,7 @@ module FSSM::Backends
14
14
  begin
15
15
  loop do
16
16
  start = Time.now.to_f
17
- @handlers.each {|handler| handler.refresh}
17
+ @handlers.each { |handler| handler.refresh }
18
18
  nap_time = @latency - (Time.now.to_f - start)
19
19
  sleep nap_time if nap_time > 0
20
20
  end
@@ -14,7 +14,7 @@ module Rucola
14
14
  # Returns an array of the files/dirs in the path that the event occurred in.
15
15
  # The files are sorted by the modification time, the first entry is the last modified file.
16
16
  def files
17
- Dir.glob("#{File.expand_path(path)}/*").sort_by {|f| File.mtime(f) }.reverse
17
+ Dir.glob("#{File.expand_path(path)}/*").sort_by { |f| File.mtime(f) }.reverse
18
18
  end
19
19
 
20
20
  # Returns the last modified file in the path that the event occurred in.
@@ -88,22 +88,22 @@ module Rucola
88
88
  raise ArgumentError, 'No callback block was specified.' unless block_given?
89
89
 
90
90
  options = params.last.kind_of?(Hash) ? params.pop : {}
91
- @paths = params.flatten
91
+ @paths = params.flatten
92
92
 
93
93
  paths.each { |path| raise ArgumentError, "The specified path (#{path}) does not exist." unless File.exist?(path) }
94
94
 
95
- @allocator = options[:allocator] || OSX::KCFAllocatorDefault
96
- @context = options[:context] || nil
97
- @since = options[:since] || OSX::KFSEventStreamEventIdSinceNow
98
- @latency = options[:latency] || 0.0
99
- @flags = options[:flags] || 0
100
- @stream = options[:stream] || nil
95
+ @allocator = options[:allocator] || OSX::KCFAllocatorDefault
96
+ @context = options[:context] || nil
97
+ @since = options[:since] || OSX::KFSEventStreamEventIdSinceNow
98
+ @latency = options[:latency] || 0.0
99
+ @flags = options[:flags] || 0
100
+ @stream = options[:stream] || nil
101
101
 
102
102
  @user_callback = block
103
- @callback = Proc.new do |stream, client_callback_info, number_of_events, paths_pointer, event_flags, event_ids|
103
+ @callback = Proc.new do |stream, client_callback_info, number_of_events, paths_pointer, event_flags, event_ids|
104
104
  paths_pointer.regard_as('*')
105
105
  events = []
106
- number_of_events.times {|i| events << Rucola::FSEvents::FSEvent.new(self, event_ids[i], paths_pointer[i]) }
106
+ number_of_events.times { |i| events << Rucola::FSEvents::FSEvent.new(self, event_ids[i], paths_pointer[i]) }
107
107
  @user_callback.call(events)
108
108
  end
109
109
  end
@@ -42,7 +42,7 @@ class FSSM::Path
42
42
  private
43
43
 
44
44
  def init_callbacks
45
- do_nothing = lambda {|base, relative|}
45
+ do_nothing = lambda { |base, relative|}
46
46
  @callbacks = Hash.new(do_nothing)
47
47
  end
48
48
 
@@ -82,10 +82,9 @@ class FSSM::Path
82
82
  end
83
83
 
84
84
  def set_path(path)
85
- path = FSSM::Pathname.for(path)
86
- raise FSSM::FileNotFoundError, "No such file or directory - #{path}" unless path.exist?
87
- raise FSSM::FileNotRealError, "Path is virtual - #{path}" if path.is_virtual?
88
- @path = path.expand_path
85
+ @path = FSSM::Pathname.for(path).expand_path
86
+ raise FSSM::FileNotFoundError, "No such file or directory - #{@path}" unless @path.exist?
87
+ raise FSSM::FileNotRealError, "Path is virtual - #{@path}" if @path.is_virtual?
89
88
  end
90
89
 
91
90
  def set_glob(glob)
@@ -4,32 +4,32 @@ require 'pathname'
4
4
 
5
5
  module FSSM
6
6
  class Pathname < ::Pathname
7
- ROOT = '/'.freeze
8
7
  VIRTUAL_REGEX = /^file:([^!]*)!/
9
8
 
10
9
  class << self
11
10
  def for(path)
12
- path.is_a?(Pathname) ? path : new(path)
11
+ path.is_a?(::FSSM::Pathname) ? path : new(path)
13
12
  end
14
13
 
15
14
  alias :[] :glob
16
15
  end
17
-
16
+
18
17
  def is_virtual?
19
18
  !!(VIRTUAL_REGEX =~ to_s)
20
19
  end
21
20
 
22
21
  def segments
23
- path = to_s
22
+ path = to_s
24
23
  array = path.split(File::SEPARATOR)
25
24
  array.delete('')
26
- array.insert(0, ROOT) if path[0,1] == ROOT
25
+ array.insert(0, File::SEPARATOR) if path[0, 1] == File::SEPARATOR
26
+ array[0] += File::SEPARATOR if path[0, 3] =~ SEPARATOR_PAT
27
27
  array
28
28
  end
29
29
 
30
30
  def glob(pattern, flags = 0, &block)
31
31
  patterns = [pattern].flatten
32
- patterns.map! {|p| self.class.glob(to_s + p, flags, &block) }
32
+ patterns.map! { |p| self.class.glob(to_s + p, flags, &block) }
33
33
  patterns.flatten
34
34
  end
35
35
  end
@@ -3,13 +3,14 @@ module FSSM::State
3
3
  attr_reader :path
4
4
 
5
5
  def initialize(path, options={})
6
- @path = path
6
+ @path = path
7
7
  @options = options
8
- @cache = FSSM::Tree::Cache.new
8
+ @cache = FSSM::Tree::Cache.new
9
9
  end
10
10
 
11
11
  def refresh(base=nil, skip_callbacks=false)
12
- previous, current = recache(base || @path.to_pathname)
12
+ base_path = FSSM::Pathname.for(base || @path.to_pathname).expand_path
13
+ previous, current = recache(base_path)
13
14
 
14
15
  unless skip_callbacks
15
16
  deleted(previous, current)
@@ -40,7 +41,7 @@ module FSSM::State
40
41
  end
41
42
 
42
43
  def recache(base)
43
- base = FSSM::Pathname.for(base)
44
+ base = FSSM::Pathname.for(base)
44
45
  previous = cache_entries
45
46
  snapshot(base)
46
47
  current = cache_entries
@@ -50,7 +51,7 @@ module FSSM::State
50
51
  def snapshot(base)
51
52
  base = FSSM::Pathname.for(base)
52
53
  @cache.unset(base)
53
- @path.glob.each {|glob| add_glob(base, glob)}
54
+ @path.glob.each { |glob| add_glob(base, glob) }
54
55
  end
55
56
 
56
57
  def add_glob(base, glob)
@@ -4,23 +4,23 @@ module FSSM::Support
4
4
  class << self
5
5
  def usable_backend
6
6
  choice = case
7
- when mac? && !jruby? && carbon_core?
8
- 'FSEvents'
9
- when mac? && rb_fsevent?
10
- 'RBFSEvent'
11
- when linux? && rb_inotify?
12
- 'Inotify'
13
- else
14
- 'Polling'
15
- end
7
+ when mac? && !jruby? && carbon_core?
8
+ 'FSEvents'
9
+ when mac? && rb_fsevent?
10
+ 'RBFSEvent'
11
+ when linux? && rb_inotify?
12
+ 'Inotify'
13
+ else
14
+ 'Polling'
15
+ end
16
16
 
17
17
  if (mac? || linux?) && choice == 'Polling'
18
18
  optimal = case
19
- when mac?
20
- 'rb-fsevent'
21
- when linux?
22
- 'rb-inotify'
23
- end
19
+ when mac?
20
+ 'rb-fsevent'
21
+ when linux?
22
+ 'rb-inotify'
23
+ end
24
24
  STDERR.puts("FSSM: An optimized backend is available for this platform!")
25
25
  STDERR.puts(" gem install #{optimal}")
26
26
  end
@@ -34,8 +34,8 @@ module FSSM::Tree
34
34
  def each(prefix=nil, &block)
35
35
  @children.each do |segment, node|
36
36
  cprefix = prefix ?
37
- FSSM::Pathname.for(prefix).join(segment) :
38
- FSSM::Pathname.for(segment)
37
+ FSSM::Pathname.for(prefix).join(segment) :
38
+ FSSM::Pathname.for(segment)
39
39
  block.call([cprefix, node])
40
40
  node.each(cprefix, &block)
41
41
  end
@@ -54,7 +54,7 @@ module FSSM::Tree
54
54
  end
55
55
 
56
56
  segment = key.pop
57
- node = descendant(key)
57
+ node = descendant(key)
58
58
 
59
59
  return unless node
60
60
 
@@ -84,12 +84,12 @@ module FSSM::Tree
84
84
  end
85
85
 
86
86
  def recurse(key, create=false)
87
- key = key_segments(key)
87
+ key = key_segments(key)
88
88
  node = self
89
89
 
90
90
  until key.empty?
91
91
  segment = key.shift
92
- node = create ? node.child!(segment) : node.child(segment)
92
+ node = create ? node.child!(segment) : node.child(segment)
93
93
  return nil unless node
94
94
  end
95
95
 
@@ -127,7 +127,7 @@ module FSSM::Tree
127
127
  end
128
128
 
129
129
  def from_path(path)
130
- path = FSSM::Pathname.for(path)
130
+ path = FSSM::Pathname.for(path)
131
131
  @ftype = path.ftype
132
132
  # this handles bad symlinks without failing. why handle bad symlinks at
133
133
  # all? well, we could still be interested in their creation and deletion.
@@ -0,0 +1,3 @@
1
+ module FSSM
2
+ VERSION = "0.2.5"
3
+ end
@@ -6,7 +6,7 @@ require 'tempfile'
6
6
 
7
7
  module FSSM::MonitorSpecHelpers
8
8
  def create_tmp_dir
9
- @tmp_dir = Dir.mktmpdir
9
+ @tmp_dir = FSSM::Pathname.for(Dir.mktmpdir).realpath.to_s
10
10
  FileUtils.cp_r File.join(File.dirname(__FILE__), 'root'), @tmp_dir
11
11
  # Because git does not track empty directories, create one ourselves.
12
12
  FileUtils.mkdir_p @tmp_dir + '/root/yawn'
@@ -14,7 +14,7 @@ module FSSM::MonitorSpecHelpers
14
14
  end
15
15
 
16
16
  def remove_tmp_dir
17
- FileUtils.remove_entry_secure @tmp_dir
17
+ FileUtils.remove_entry @tmp_dir
18
18
  end
19
19
 
20
20
  def create_handler(type, latch)
@@ -112,50 +112,50 @@ describe "The File System State Monitor" do
112
112
  run_monitor(1, :directories => true) do
113
113
  FileUtils.mkdir @tmp_dir + "/another_yawn"
114
114
  end
115
- @handler_results[:create].should == [[@tmp_dir, 'another_yawn', :directory]]
115
+ @handler_results[:create].should include([@tmp_dir, 'another_yawn', :directory])
116
116
  end
117
117
 
118
118
  it "should call delete callback upon directory deletion" do
119
119
  run_monitor(1, :directories => true) do
120
120
  FileUtils.rmdir @tmp_dir + "/root/yawn"
121
121
  end
122
- @handler_results[:delete].should == [[@tmp_dir, 'root/yawn', :directory]]
122
+ @handler_results[:delete].should include([@tmp_dir, 'root/yawn', :directory])
123
123
  end
124
124
 
125
125
  it "should call create, update, and delete callbacks upon directory renaming in the same directory" do
126
126
  run_monitor(3, :directories => true) do
127
127
  FileUtils.mv @tmp_dir + "/root/yawn", @tmp_dir + "/root/old_yawn"
128
128
  end
129
- @handler_results[:create].should == [[@tmp_dir, 'root/old_yawn', :directory]]
130
- @handler_results[:delete].should == [[@tmp_dir, 'root/yawn', :directory]]
131
- @handler_results[:update].should == [[@tmp_dir, 'root', :directory]]
129
+ @handler_results[:create].should include([@tmp_dir, 'root/old_yawn', :directory])
130
+ @handler_results[:delete].should include([@tmp_dir, 'root/yawn', :directory])
131
+ @handler_results[:update].should include([@tmp_dir, 'root', :directory])
132
132
  end
133
133
 
134
134
  it "should call create, update, and delete callbacks upon directory moving to another directory" do
135
135
  run_monitor(3, :directories => true) do
136
136
  FileUtils.mv @tmp_dir + "/root/yawn", @tmp_dir + "/old_yawn"
137
137
  end
138
- @handler_results[:create].should == [[@tmp_dir, 'old_yawn', :directory]]
139
- @handler_results[:delete].should == [[@tmp_dir, 'root/yawn', :directory]]
140
- @handler_results[:update].should == [[@tmp_dir, 'root', :directory]]
138
+ @handler_results[:create].should include([@tmp_dir, 'old_yawn', :directory])
139
+ @handler_results[:delete].should include([@tmp_dir, 'root/yawn', :directory])
140
+ @handler_results[:update].should include([@tmp_dir, 'root', :directory])
141
141
  end
142
142
 
143
143
  it "should call create, update, and delete callbacks upon file renaming in the same directory" do
144
144
  run_monitor(3, :directories => true) do
145
145
  FileUtils.mv @tmp_dir + "/root/file.rb", @tmp_dir + "/root/old_file.rb"
146
146
  end
147
- @handler_results[:create].should == [[@tmp_dir, 'root/old_file.rb', :file]]
148
- @handler_results[:delete].should == [[@tmp_dir, 'root/file.rb', :file]]
149
- @handler_results[:update].should == [[@tmp_dir, 'root', :directory]]
147
+ @handler_results[:create].should include([@tmp_dir, 'root/old_file.rb', :file])
148
+ @handler_results[:delete].should include([@tmp_dir, 'root/file.rb', :file])
149
+ @handler_results[:update].should include([@tmp_dir, 'root', :directory])
150
150
  end
151
151
 
152
152
  it "should call create, update, and delete callbacks upon file moving to another directory" do
153
153
  run_monitor(3, :directories => true) do
154
154
  FileUtils.mv @tmp_dir + "/root/file.rb", @tmp_dir + "/old_file.rb"
155
155
  end
156
- @handler_results[:create].should == [[@tmp_dir, 'old_file.rb', :file]]
157
- @handler_results[:delete].should == [[@tmp_dir, 'root/file.rb', :file]]
158
- @handler_results[:update].should == [[@tmp_dir, 'root', :directory]]
156
+ @handler_results[:create].should include([@tmp_dir, 'old_file.rb', :file])
157
+ @handler_results[:delete].should include([@tmp_dir, 'root/file.rb', :file])
158
+ @handler_results[:update].should include([@tmp_dir, 'root', :directory])
159
159
  end
160
160
 
161
161
  it "should call delete callbacks upon directory structure deletion, in reverse order" do
@@ -2,6 +2,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
 
4
4
  require 'pathname'
5
+ require 'rubygems'
5
6
  require 'fssm'
6
7
 
7
8
  require 'spec'
metadata CHANGED
@@ -2,15 +2,19 @@
2
2
  name: fssm
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.4
5
+ version: 0.2.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Travis Tilley
9
+ - Nathan Weizenbaum
10
+ - Chris Eppstein
11
+ - Jonathan Castello
12
+ - Tuomas Kareinen
9
13
  autorequire:
10
14
  bindir: bin
11
15
  cert_chain: []
12
16
 
13
- date: 2011-01-15 00:00:00 -05:00
17
+ date: 2011-01-22 00:00:00 -05:00
14
18
  default_executable:
15
19
  dependencies:
16
20
  - !ruby/object:Gem::Dependency
@@ -19,26 +23,26 @@ dependencies:
19
23
  requirement: &id001 !ruby/object:Gem::Requirement
20
24
  none: false
21
25
  requirements:
22
- - - ">="
26
+ - - "="
23
27
  - !ruby/object:Gem::Version
24
- version: "0"
28
+ version: 1.3.0
25
29
  type: :development
26
30
  version_requirements: *id001
27
- description: file system state monitor
28
- email: ttilley@gmail.com
31
+ description: The File System State Monitor keeps track of the state of any number of paths and will fire events when said state changes (create/update/delete). FSSM supports using FSEvents on MacOS, Inotify on GNU/Linux, and polling anywhere else.
32
+ email:
33
+ - ttilley@gmail.com
29
34
  executables: []
30
35
 
31
36
  extensions: []
32
37
 
33
- extra_rdoc_files:
34
- - LICENSE
35
- - README.markdown
38
+ extra_rdoc_files: []
39
+
36
40
  files:
37
- - .document
41
+ - .gitignore
42
+ - Gemfile
38
43
  - LICENSE
39
44
  - README.markdown
40
45
  - Rakefile
41
- - VERSION.yml
42
46
  - example.rb
43
47
  - fssm.gemspec
44
48
  - lib/fssm.rb
@@ -54,6 +58,7 @@ files:
54
58
  - lib/fssm/state/file.rb
55
59
  - lib/fssm/support.rb
56
60
  - lib/fssm/tree.rb
61
+ - lib/fssm/version.rb
57
62
  - profile/prof-cache.rb
58
63
  - profile/prof-fssm-pathname.html
59
64
  - profile/prof-pathname-rubinius.rb
@@ -70,7 +75,7 @@ files:
70
75
  - spec/root/moo/cow.txt
71
76
  - spec/spec_helper.rb
72
77
  has_rdoc: true
73
- homepage: http://github.com/ttilley/fssm
78
+ homepage: https://github.com/ttilley/fssm
74
79
  licenses: []
75
80
 
76
81
  post_install_message:
@@ -92,14 +97,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
97
  version: "0"
93
98
  requirements: []
94
99
 
95
- rubyforge_project:
100
+ rubyforge_project: fssm
96
101
  rubygems_version: 1.4.2
97
102
  signing_key:
98
103
  specification_version: 3
99
- summary: file system state monitor
104
+ summary: File System State Monitor
100
105
  test_files:
101
106
  - spec/count_down_latch.rb
102
107
  - spec/monitor_spec.rb
103
108
  - spec/path_spec.rb
109
+ - spec/root/duck/quack.txt
110
+ - spec/root/file.css
104
111
  - spec/root/file.rb
112
+ - spec/root/file.yml
113
+ - spec/root/moo/cow.txt
105
114
  - spec/spec_helper.rb
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
@@ -1,5 +0,0 @@
1
- ---
2
- :major: 0
3
- :minor: 2
4
- :patch: 4
5
- :build: