pageme 0.0.2 → 0.0.3
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/README.md +5 -1
- data/lib/pageme.rb +22 -7
- data/lib/pageme/version.rb +1 -1
- metadata +50 -26
data/README.md
CHANGED
@@ -81,7 +81,11 @@ You can of course enable it again:
|
|
81
81
|
|
82
82
|
## Known bugs
|
83
83
|
|
84
|
-
|
84
|
+
The JRuby support is a little flaky:
|
85
|
+
|
86
|
+
* Closing the pager does not work correctly in some versions of JRuby due to a bug in the Unix domain socket implementation. I've yet to pin down exactly where it's fixed (it might not be fixed in any released versions. It works in head and doesn't work in 1.6.2), but you may see that page continues to block after the pager closes. This is due to JRuby not raising an error when writing to a broken socket and there's not much I can do about it. Sorry.
|
87
|
+
* If the JVM has a melt down and dies without running the ensure block (e.g. because it gets SIGKILLed) your terminal can end up in a messed up state. Typing "stty echo" should fix this
|
88
|
+
* Similarly a JVM meltdown will sometimes leave the unix domain sockets used for communicating lying around
|
85
89
|
|
86
90
|
## Contributing
|
87
91
|
|
data/lib/pageme.rb
CHANGED
@@ -72,23 +72,38 @@ module PageMe
|
|
72
72
|
r.close
|
73
73
|
end
|
74
74
|
|
75
|
-
Kernel.trap("SIGINT"){ Process.kill "INT", child_pid }
|
75
|
+
previous_int_handler = Kernel.trap("SIGINT"){ Process.kill "INT", child_pid }
|
76
|
+
previous_term_handler = Kernel.trap("SIGTERM") do
|
77
|
+
Process.kill "TERM", child_pid
|
78
|
+
Process.wait child_pid, Process::WUNTRACED
|
79
|
+
child_pid = nil
|
80
|
+
if previous_term_handler == "DEFAULT"
|
81
|
+
raise SignalException.new("SIGTERM")
|
82
|
+
else
|
83
|
+
previous_term_handler.call
|
84
|
+
end
|
85
|
+
end
|
76
86
|
|
77
87
|
begin
|
78
88
|
page_to w, args
|
79
89
|
rescue Errno::EPIPE
|
80
90
|
rescue Exception => e
|
81
|
-
|
82
|
-
w.
|
83
|
-
|
84
|
-
|
91
|
+
begin
|
92
|
+
unless w.closed?
|
93
|
+
w.puts "#{e.class}: #{e.message}"
|
94
|
+
e.backtrace.each{|l| w.puts "\t#{l}" }
|
95
|
+
end
|
96
|
+
rescue Errno::EPIPE
|
97
|
+
end
|
98
|
+
|
85
99
|
raise
|
86
100
|
ensure
|
87
101
|
begin
|
88
102
|
w.close unless w.closed?
|
89
103
|
ensure
|
90
|
-
Process.wait child_pid
|
91
|
-
Kernel.trap("SIGINT",
|
104
|
+
Process.wait child_pid, Process::WUNTRACED if child_pid
|
105
|
+
Kernel.trap("SIGINT", previous_int_handler)
|
106
|
+
Kernel.trap("SIGTERM", previous_term_handler)
|
92
107
|
File.delete(t) if t
|
93
108
|
server.close if server
|
94
109
|
end
|
data/lib/pageme/version.rb
CHANGED
metadata
CHANGED
@@ -1,35 +1,49 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: pageme
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- David R. MacIver
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
17
|
+
|
18
|
+
date: 2012-05-01 00:00:00 +01:00
|
13
19
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
16
22
|
name: posix-spawn
|
17
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
18
25
|
none: false
|
19
|
-
requirements:
|
20
|
-
- -
|
21
|
-
- !ruby/object:Gem::Version
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 31
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
- 3
|
33
|
+
- 6
|
22
34
|
version: 0.3.6
|
23
35
|
type: :runtime
|
24
|
-
|
25
|
-
version_requirements: *9034740
|
36
|
+
version_requirements: *id001
|
26
37
|
description: Methods for invoking a pager
|
27
|
-
email:
|
38
|
+
email:
|
28
39
|
- david@drmaciver.com
|
29
40
|
executables: []
|
41
|
+
|
30
42
|
extensions: []
|
43
|
+
|
31
44
|
extra_rdoc_files: []
|
32
|
-
|
45
|
+
|
46
|
+
files:
|
33
47
|
- .gitignore
|
34
48
|
- Gemfile
|
35
49
|
- LICENSE
|
@@ -41,26 +55,36 @@ files:
|
|
41
55
|
has_rdoc: true
|
42
56
|
homepage: https://github.com/DRMacIver/pageme
|
43
57
|
licenses: []
|
58
|
+
|
44
59
|
post_install_message:
|
45
60
|
rdoc_options: []
|
46
|
-
|
61
|
+
|
62
|
+
require_paths:
|
47
63
|
- lib
|
48
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
49
65
|
none: false
|
50
|
-
requirements:
|
51
|
-
- -
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
|
54
|
-
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
hash: 3
|
70
|
+
segments:
|
71
|
+
- 0
|
72
|
+
version: "0"
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
74
|
none: false
|
56
|
-
requirements:
|
57
|
-
- -
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
hash: 3
|
79
|
+
segments:
|
80
|
+
- 0
|
81
|
+
version: "0"
|
60
82
|
requirements: []
|
83
|
+
|
61
84
|
rubyforge_project:
|
62
85
|
rubygems_version: 1.6.2
|
63
86
|
signing_key:
|
64
87
|
specification_version: 3
|
65
88
|
summary: Trivial gem for invoking a pager for your program data
|
66
89
|
test_files: []
|
90
|
+
|