ruby-fsevent 0.2.0 → 0.2.1
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.
- data/History.md +7 -1
- data/README.md +22 -14
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/examples/restart.rb +1 -2
- data/ext/fsevent.c +6 -5
- data/ruby-fsevent.gemspec +9 -8
- data/spec/fsevent_spec.rb +8 -0
- metadata +5 -4
data/History.md
CHANGED
@@ -1,12 +1,18 @@
|
|
1
1
|
History
|
2
2
|
=======
|
3
|
+
0.2.1 2009-01-21
|
4
|
+
----------------
|
5
|
+
|
6
|
+
**enhancements**
|
7
|
+
|
8
|
+
- Ruby 1.9.1 compatibility thanks to troyk
|
3
9
|
|
4
10
|
0.2.0 2009-10-23
|
5
11
|
----------------
|
6
12
|
|
7
13
|
**enhancements**
|
8
14
|
|
9
|
-
- No More Forking! The event loop used to fork to ensure signal handlers would be observed.
|
15
|
+
- No More Kernel Forking! The event loop used to fork to ensure signal handlers would be observed.
|
10
16
|
A custom signal handling solution has replaced the need to fork.
|
11
17
|
- The Event listener can now be stopped and restarted using FSEvent#stop and FSEvent#restart
|
12
18
|
|
data/README.md
CHANGED
@@ -2,25 +2,33 @@ ruby-fsevent
|
|
2
2
|
============
|
3
3
|
|
4
4
|
A native extension exposing the OS X FSEvent API.
|
5
|
-
Register directories you want to watch and a callback will fire whenever a
|
6
|
-
change occurs in the registered directories.
|
7
5
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
Register the directories you want to watch, create a custom callback, and your
|
7
|
+
callback will fire everytime a change occurs in the registered directories.
|
8
|
+
|
9
|
+
I'm tired of recompiling RubyCocoa just get Rspactor working whenever I switch Ruby versions. Hopefully, this gem will break that dependency.
|
10
|
+
|
11
|
+
Watchr and Kicker have recently grabbed my attention. They allow you to watch
|
12
|
+
directories for changes and create custom event handlers. Unfortunately, Watchr
|
13
|
+
has a 4-5 second delay when using it with Rev (recommended) before your
|
14
|
+
callback is fires. Without Rev, Watchr degrades to a 0.5 second Ruby loop
|
15
|
+
which we all know is not resource-friendly. Now, Watchr could easily add native
|
16
|
+
FSEvents as a new backend for Mac users.
|
17
|
+
|
18
|
+
Kicker already uses the FSEvents API but it requires RubyCocoa just like
|
19
|
+
Rspactor. They could easily switch their dependency to this native extension
|
20
|
+
and remove the need for RubyCocoa.
|
21
|
+
|
22
|
+
With a generic, native interface to the FSEvent API we, as Rubyists can harness
|
23
|
+
the power of OSX FSEvents without depending on RubyCocoa.
|
13
24
|
|
14
25
|
Demo
|
15
26
|
----
|
16
27
|
|
17
|
-
1.
|
18
|
-
2. ruby
|
19
|
-
3.
|
20
|
-
4.
|
21
|
-
5. ruby examples/print_changes.rb
|
22
|
-
6. Notice that the examples directory and the /tmp directories are being monitored
|
23
|
-
7. Make a change to either directory and watch the callback fire
|
28
|
+
1. rake make
|
29
|
+
2. ruby examples/print_changes.rb
|
30
|
+
3. Notice that the examples directory and the /tmp directory are being monitored
|
31
|
+
4. Make a change to either directory and watch the callback fire
|
24
32
|
|
25
33
|
TODO
|
26
34
|
----
|
data/Rakefile
CHANGED
@@ -12,7 +12,7 @@ begin
|
|
12
12
|
gem.email = "sandro.turriate@gmail.com"
|
13
13
|
gem.homepage = "http://github.com/sandro/ruby-fsevent"
|
14
14
|
gem.authors = ["Sandro Turriate"]
|
15
|
-
gem.add_development_dependency "rspec", '
|
15
|
+
gem.add_development_dependency "rspec", '1.2.9'
|
16
16
|
gem.require_paths = %w(lib ext)
|
17
17
|
gem.extensions << 'ext/extconf.rb'
|
18
18
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
data/examples/restart.rb
CHANGED
data/ext/fsevent.c
CHANGED
@@ -35,12 +35,12 @@ void callback(
|
|
35
35
|
void watch_directory(VALUE self) {
|
36
36
|
VALUE rb_registered_directories = rb_iv_get(self, "@registered_directories");
|
37
37
|
int i, dir_size;
|
38
|
-
dir_size =
|
38
|
+
dir_size = RARRAY_LEN(rb_registered_directories);
|
39
39
|
|
40
|
-
VALUE *rb_dir_names =
|
40
|
+
VALUE *rb_dir_names = RARRAY_PTR(rb_registered_directories);
|
41
41
|
CFStringRef dir_names[dir_size];
|
42
42
|
for (i = 0; i < dir_size; i++) {
|
43
|
-
dir_names[i] = CFStringCreateWithCString(NULL, (char *)
|
43
|
+
dir_names[i] = CFStringCreateWithCString(NULL, (char *)RSTRING_PTR(rb_dir_names[i]), kCFStringEncodingUTF8);
|
44
44
|
}
|
45
45
|
|
46
46
|
CFArrayRef pathsToWatch = CFArrayCreate(NULL, (const void **)&dir_names, dir_size, NULL);
|
@@ -76,12 +76,13 @@ static VALUE t_init(VALUE self) {
|
|
76
76
|
}
|
77
77
|
|
78
78
|
static VALUE t_on_change(VALUE self, VALUE original_directory_name) {
|
79
|
-
|
79
|
+
rb_raise(rb_eNotImpError, "You must define #on_change in your subclass");
|
80
|
+
return self;
|
80
81
|
}
|
81
82
|
|
82
83
|
static VALUE t_watch_directories(VALUE self, VALUE directories) {
|
83
84
|
if (TYPE(directories) == T_ARRAY) {
|
84
|
-
rb_iv_set(self, "@registered_directories", rb_ary_new4(
|
85
|
+
rb_iv_set(self, "@registered_directories", rb_ary_new4(RARRAY_LEN(directories), RARRAY_PTR(directories)));
|
85
86
|
}
|
86
87
|
else {
|
87
88
|
rb_iv_set(self, "@registered_directories", rb_ary_new3(1, directories));
|
data/ruby-fsevent.gemspec
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ruby-fsevent}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Sandro Turriate"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-01-21}
|
13
13
|
s.description = %q{
|
14
14
|
A native extension exposing the OS X FSEvent API. Register directories you want to watch and a callback will fire whenever a change occurs in the registered directories.
|
15
15
|
}
|
16
16
|
s.email = %q{sandro.turriate@gmail.com}
|
17
|
-
s.extensions = ["ext/extconf.rb"]
|
17
|
+
s.extensions = ["ext/extconf.rb", "ext/extconf.rb"]
|
18
18
|
s.extra_rdoc_files = [
|
19
19
|
"LICENSE",
|
20
20
|
"README.md"
|
@@ -54,11 +54,12 @@ Gem::Specification.new do |s|
|
|
54
54
|
s.specification_version = 3
|
55
55
|
|
56
56
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
57
|
-
s.add_development_dependency(%q<rspec>, ["
|
57
|
+
s.add_development_dependency(%q<rspec>, ["= 1.2.9"])
|
58
58
|
else
|
59
|
-
s.add_dependency(%q<rspec>, ["
|
59
|
+
s.add_dependency(%q<rspec>, ["= 1.2.9"])
|
60
60
|
end
|
61
61
|
else
|
62
|
-
s.add_dependency(%q<rspec>, ["
|
62
|
+
s.add_dependency(%q<rspec>, ["= 1.2.9"])
|
63
63
|
end
|
64
64
|
end
|
65
|
+
|
data/spec/fsevent_spec.rb
CHANGED
@@ -24,6 +24,14 @@ describe FSEvent do
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
describe "#on_change" do
|
28
|
+
it "raises NotImplementedError" do
|
29
|
+
expect do
|
30
|
+
subject.on_change(nil)
|
31
|
+
end.to raise_error(NotImplementedError)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
27
35
|
describe "API" do
|
28
36
|
it { should respond_to(:on_change) }
|
29
37
|
it { should respond_to(:start) }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-fsevent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sandro Turriate
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-21 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -18,9 +18,9 @@ dependencies:
|
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
|
-
- - "
|
21
|
+
- - "="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 1.2.
|
23
|
+
version: 1.2.9
|
24
24
|
version:
|
25
25
|
description: "\n A native extension exposing the OS X FSEvent API. Register directories you want to watch and a callback will fire whenever a change occurs in the registered directories.\n "
|
26
26
|
email: sandro.turriate@gmail.com
|
@@ -28,6 +28,7 @@ executables: []
|
|
28
28
|
|
29
29
|
extensions:
|
30
30
|
- ext/extconf.rb
|
31
|
+
- ext/extconf.rb
|
31
32
|
extra_rdoc_files:
|
32
33
|
- LICENSE
|
33
34
|
- README.md
|