rbpl 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/perl/engine.pl +9 -5
  2. data/lib/perl/engine.rb +2 -5
  3. metadata +12 -6
@@ -3,7 +3,11 @@
3
3
  use strict;
4
4
  use YAML::Syck;
5
5
 
6
- $| =1; # autoflush
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(STDIN); # Wait for data or exit if the parent closes the pipe
30
+ exit 0 if eof(Reader); # Wait for data or exit if the parent closes the pipe
27
31
 
28
- read(STDIN, $data_length, 4) == 4 or die "Can not read \$data_length from stdin";
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(STDIN, $data, $data_length) == $data_length or die "Can not read \$data from stdin";
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") {
@@ -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
- STDOUT.reopen(reader[1])
37
- reader[1].close
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
- version: "0.1"
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-13 00:00:00 +01:00
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.5
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