rbpl 0.1 → 0.2
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/perl/engine.pl +9 -5
- data/lib/perl/engine.rb +2 -5
- metadata +12 -6
data/lib/perl/engine.pl
CHANGED
@@ -3,7 +3,11 @@
|
|
3
3
|
use strict;
|
4
4
|
use YAML::Syck;
|
5
5
|
|
6
|
-
|
6
|
+
use IO::Handle;
|
7
|
+
|
8
|
+
open Reader, "<&=", $ENV{ENGINE_READER};
|
9
|
+
open Writer, ">&=", $ENV{ENGINE_WRITER};
|
10
|
+
Writer->autoflush(1);
|
7
11
|
|
8
12
|
our $data;
|
9
13
|
our $data_length;
|
@@ -17,18 +21,18 @@ sub eval_and_respond {
|
|
17
21
|
my $packed_result = Dump($@ ?
|
18
22
|
{ status => "error", error => $@ } :
|
19
23
|
{ status => "ok", result => $result });
|
20
|
-
print pack("L", length($packed_result)).$packed_result;
|
24
|
+
print Writer pack("L", length($packed_result)).$packed_result;
|
21
25
|
$result;
|
22
26
|
}
|
23
27
|
|
24
28
|
while(1) {
|
25
29
|
|
26
|
-
exit 0 if eof(
|
30
|
+
exit 0 if eof(Reader); # Wait for data or exit if the parent closes the pipe
|
27
31
|
|
28
|
-
read(
|
32
|
+
read(Reader, $data_length, 4) == 4 or die "Can not read \$data_length from stdin";
|
29
33
|
$data_length = unpack("L", $data_length);
|
30
34
|
|
31
|
-
read(
|
35
|
+
read(Reader, $data, $data_length) == $data_length or die "Can not read \$data from stdin";
|
32
36
|
$data = Load($data);
|
33
37
|
|
34
38
|
if($data->{request} eq "eval") {
|
data/lib/perl/engine.rb
CHANGED
@@ -29,12 +29,9 @@ class Perl
|
|
29
29
|
|
30
30
|
@pid = fork do
|
31
31
|
writer[1].close
|
32
|
-
STDIN.reopen(writer[0])
|
33
|
-
writer[0].close
|
34
|
-
|
35
32
|
reader[0].close
|
36
|
-
|
37
|
-
reader[1].
|
33
|
+
ENV["ENGINE_READER"] = writer[0].fileno.to_s
|
34
|
+
ENV["ENGINE_WRITER"] = reader[1].fileno.to_s
|
38
35
|
|
39
36
|
exec "perl", PerlFile
|
40
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbpl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 2
|
8
|
+
version: "0.2"
|
5
9
|
platform: ruby
|
6
10
|
authors:
|
7
11
|
- Ayose Cazorla
|
@@ -9,7 +13,7 @@ autorequire:
|
|
9
13
|
bindir: bin
|
10
14
|
cert_chain: []
|
11
15
|
|
12
|
-
date: 2010-06-
|
16
|
+
date: 2010-06-14 00:00:00 +01:00
|
13
17
|
default_executable:
|
14
18
|
dependencies: []
|
15
19
|
|
@@ -22,8 +26,8 @@ extensions: []
|
|
22
26
|
extra_rdoc_files: []
|
23
27
|
|
24
28
|
files:
|
25
|
-
- lib/perl/engine.pl
|
26
29
|
- lib/perl/engine.rb
|
30
|
+
- lib/perl/engine.pl
|
27
31
|
- lib/perl.rb
|
28
32
|
- Rakefile
|
29
33
|
has_rdoc: true
|
@@ -39,18 +43,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
39
43
|
requirements:
|
40
44
|
- - ">="
|
41
45
|
- !ruby/object:Gem::Version
|
46
|
+
segments:
|
47
|
+
- 0
|
42
48
|
version: "0"
|
43
|
-
version:
|
44
49
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
50
|
requirements:
|
46
51
|
- - ">="
|
47
52
|
- !ruby/object:Gem::Version
|
53
|
+
segments:
|
54
|
+
- 0
|
48
55
|
version: "0"
|
49
|
-
version:
|
50
56
|
requirements: []
|
51
57
|
|
52
58
|
rubyforge_project:
|
53
|
-
rubygems_version: 1.3.
|
59
|
+
rubygems_version: 1.3.6
|
54
60
|
signing_key:
|
55
61
|
specification_version: 3
|
56
62
|
summary: Execute Perl code from a Ruby script
|