theine 0.0.9 → 0.0.10.rc1
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/lib/theine/client.rb +28 -21
- data/lib/theine/worker.rb +11 -21
- metadata +5 -5
data/lib/theine/client.rb
CHANGED
@@ -7,6 +7,7 @@ class IOUndumpedProxy
|
|
7
7
|
|
8
8
|
def initialize(obj)
|
9
9
|
@obj = obj
|
10
|
+
create_method_proxies
|
10
11
|
end
|
11
12
|
|
12
13
|
def completion_proc=(val)
|
@@ -36,36 +37,42 @@ class IOUndumpedProxy
|
|
36
37
|
0
|
37
38
|
end
|
38
39
|
|
39
|
-
def gets(*args)
|
40
|
-
@obj.gets(*args)
|
41
|
-
end
|
42
|
-
|
43
|
-
def puts(*lines)
|
44
|
-
@obj.puts(*lines)
|
45
|
-
end
|
46
|
-
|
47
|
-
def print(*objs)
|
48
|
-
@obj.print(*objs)
|
49
|
-
end
|
50
|
-
|
51
|
-
def write(data)
|
52
|
-
@obj.write data
|
53
|
-
end
|
54
|
-
|
55
40
|
def <<(data)
|
56
41
|
@obj << data
|
57
42
|
self
|
58
43
|
end
|
59
44
|
|
60
|
-
def flush
|
61
|
-
@obj.flush
|
62
|
-
end
|
63
|
-
|
64
45
|
# Some versions of Pry expect $stdout or its output objects to respond to
|
65
46
|
# this message.
|
66
47
|
def tty?
|
67
48
|
false
|
68
49
|
end
|
50
|
+
|
51
|
+
private
|
52
|
+
# http://www.ruby-doc.org/core-1.9.3/IO.html
|
53
|
+
# Creating method proxies. We take this approach so that method.arity will
|
54
|
+
# give the correct result (if we just used *args it would always return -1).
|
55
|
+
# Can't use SimpleDelegator, won't work over DRb
|
56
|
+
def create_method_proxies
|
57
|
+
(@obj.public_methods - public_methods).each do |meth|
|
58
|
+
next unless @obj.respond_to?(meth)
|
59
|
+
arity = @obj.method(meth).arity
|
60
|
+
if arity >= 0
|
61
|
+
args = arity.times.map { |i| "a#{i+1}" }
|
62
|
+
else
|
63
|
+
args = (arity.abs - 1).times.map { |i| "a#{i+1}" }
|
64
|
+
args << "*args"
|
65
|
+
args = args
|
66
|
+
end
|
67
|
+
args = (args + ["&block"]).join(", ")
|
68
|
+
|
69
|
+
singleton_class.class_eval <<-EOS
|
70
|
+
def #{meth}(#{args})
|
71
|
+
@obj.send(:#{meth}, #{args})
|
72
|
+
end
|
73
|
+
EOS
|
74
|
+
end
|
75
|
+
end
|
69
76
|
end
|
70
77
|
|
71
78
|
module Theine
|
@@ -119,7 +126,7 @@ module Theine
|
|
119
126
|
$stderr.puts "\nTheine closed the connection."
|
120
127
|
end
|
121
128
|
|
122
|
-
def load_pry_history
|
129
|
+
def load_pry_history
|
123
130
|
history_file = File.expand_path("~/.pry_history")
|
124
131
|
if File.exist?(history_file)
|
125
132
|
File.readlines(history_file).pop(100).each do |line|
|
data/lib/theine/worker.rb
CHANGED
@@ -3,34 +3,24 @@ APP_PATH = "#{root_path}/config/application"
|
|
3
3
|
require "#{root_path}/config/boot"
|
4
4
|
require "#{root_path}/config/environment"
|
5
5
|
require 'drb/drb'
|
6
|
+
require 'delegate'
|
6
7
|
|
7
8
|
$real_stdout = $stdout
|
8
9
|
$real_stderr = $stderr
|
9
10
|
|
10
11
|
module Theine
|
11
|
-
class
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
when 1 then input.readline(prompt)
|
18
|
-
else input.readline
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def completion_proc=(val)
|
23
|
-
input.completion_proc = val
|
24
|
-
end
|
25
|
-
|
26
|
-
def readline_arity
|
27
|
-
input.readline_arity
|
28
|
-
end
|
29
|
-
|
30
|
-
def gets(*args)
|
31
|
-
input.gets(*args)
|
12
|
+
class InputProxy < SimpleDelegator
|
13
|
+
# Reads a line from the input
|
14
|
+
def readline(prompt)
|
15
|
+
case readline_arity
|
16
|
+
when 1 then __getobj__.readline(prompt)
|
17
|
+
else __getobj__.readline
|
32
18
|
end
|
33
19
|
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class Worker
|
23
|
+
attr_reader :stdin, :stdout, :stderr
|
34
24
|
|
35
25
|
def initialize
|
36
26
|
@pumps = []
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: theine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
version: 0.0.
|
4
|
+
prerelease: 7
|
5
|
+
version: 0.0.10.rc1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jan Berdajs
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-10-
|
12
|
+
date: 2013-10-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pry
|
@@ -61,9 +61,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
61
61
|
none: false
|
62
62
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
63
|
requirements:
|
64
|
-
- - '
|
64
|
+
- - '>'
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version:
|
66
|
+
version: 1.3.1
|
67
67
|
none: false
|
68
68
|
requirements: []
|
69
69
|
rubyforge_project:
|