[#345382] Nice algorithm for 'spreading' indexes across an array? — Max Williams <toastkid.williams@...>

Little ruby algorithm puzzle...

13 messages 2009/09/01

[#345437] clogger 0.0.4 - configurable request logging for Rack — Eric Wong <normalperson@...>

* http://clogger.rubyforge.org/

10 messages 2009/09/02
[#345439] Re: [ANN] clogger 0.0.4 - configurable request logging for Rack — Iñaki Baz Castillo <ibc@...> 2009/09/02

2009/9/2 Eric Wong <normalperson@yhbt.net>:

[#345446] rdoc — Oleg Puchinin <ruby_talk@...>

Hello !

17 messages 2009/09/02
[#346260] Ruby 1.9 rdoc never ends (Re: rdoc) — James Britt <james.britt@...> 2009/09/12

Oleg Puchinin wrote:

[#346267] Re: Ruby 1.9 rdoc never ends (Re: rdoc) — Ryan Davis <ryand-ruby@...> 2009/09/12

[#346276] Re: Ruby 1.9 rdoc never ends (Re: rdoc) — Roger Pack <rogerpack2005@...> 2009/09/12

Ryan Davis wrote:

[#345493] What licensing info is needed in code headers? — "Shot (Piotr Szotkowski)" <shot@...>

Disclaimer: I know that some of you live in jurisdictions that do not

10 messages 2009/09/02

[#345535] Simple New Ruby Programmer Problem with $stdin.gets — Mason Kelsey <masonkelsey@...>

I'm having difficulty getting any command to work to pick up input from a

14 messages 2009/09/02

[#345573] Type checking function parameters — Nick Green <cruzmail.ngreen@...>

More or less all my functions look something like

22 messages 2009/09/03
[#345593] Re: Type checking function parameters — Eleanor McHugh <eleanor@...> 2009/09/03

On 3 Sep 2009, at 05:04, Nick Green wrote:

[#345606] Re: Type checking function parameters — Paul Smith <paul@...> 2009/09/03

My first stab at some Ruby started like this too.

[#345667] Re: Type checking function parameters — Nick Green <cruzmail.ngreen@...> 2009/09/03

OK...

[#345676] Re: Type checking function parameters — Eleanor McHugh <eleanor@...> 2009/09/04

On 3 Sep 2009, at 23:47, Nick Green wrote:

[#345687] Re: Type checking function parameters — James Edward Gray II <james@...> 2009/09/04

On Sep 3, 2009, at 7:30 PM, Eleanor McHugh wrote:

[#345745] Re: Type checking function parameters — Eleanor McHugh <eleanor@...> 2009/09/04

On 4 Sep 2009, at 03:56, James Edward Gray II wrote:

[#345828] Re: Type checking function parameters — spiralofhope <spiralofhope@...> 2009/09/06

Along the lines of this thread..

[#345835] Re: Type checking function parameters — "David A. Black" <dblack@...> 2009/09/06

Hi --

[#345773] Rubyscript instead of javascript — Damjan Rems <d_rems@...>

30 messages 2009/09/05
[#345970] Re: Rubyscript instead of javascript — Jg W Mittag <JoergWMittag+Usenet@...> 2009/09/08

David Masover wrote:

[#345774] how to compare two object instances? is "m1.to_yaml.eql?(m2.to_yaml)" a good way? — Greg Hauptmann <greg.hauptmann.ruby@...>

Hi,

8 messages 2009/09/05

[#345848] i need to strip \n and nil — Bigmac Turdsplash <i8igmac@...>

im sending files back and forth form a client and a server using

16 messages 2009/09/06

[#345883] Executing system commands in threads under Ruby 1.8.6 — vhaerun vh <etaern@...>

I tried to write a script that makes use of external binaries. Each

17 messages 2009/09/07
[#345889] Re: Executing system commands in threads under Ruby 1.8.6 — Robert Klemme <shortcutter@...> 2009/09/07

2009/9/7 vhaerun vh <etaern@yahoo.com>:

[#345893] Re: Executing system commands in threads under Ruby 1.8.6 — vhaerun vh <etaern@...> 2009/09/07

Here's a link to the question I asked on SO:

[#345901] Re: Executing system commands in threads under Ruby 1.8.6 — Eleanor McHugh <eleanor@...> 2009/09/07

On 7 Sep 2009, at 09:55, vhaerun vh wrote:

[#345904] Re: Executing system commands in threads under Ruby 1.8.6 — Bertram Scharpf <lists@...> 2009/09/07

Hi,

[#345886] Ruby 1.9, Rubygems, and .gemspec warnings — Rob Sanheim <rsanheim@...>

Hi all

14 messages 2009/09/07

[#346018] Tutorial challenge program help — Chris Logan <t-logan3@...>

Hello all im really new to ruby as in a few days and getting into it. i

20 messages 2009/09/09
[#346023] Re: Tutorial challenge program help — 7stud -- <bbxx789_05ss@...> 2009/09/09

Chris Logan wrote:

[#346027] Re: Tutorial challenge program help — Chris Logan <t-logan3@...> 2009/09/09

7stud -- wrote:

[#346091] How Are Variables Kept Independent of Each Other Yet Pass Values? — Mason Kelsey <masonkelsey@...>

Somewhere in the several books I've been learning Ruby from there was the

14 messages 2009/09/10
[#346096] Re: How Are Variables Kept Independent of Each Other Yet Pass Values? — venkatesh Peddi <venkat.peddi@...> 2009/09/10

[#346106] Asynchronous http POST? — Ivan Shevanski <ocelot117@...>

Hey everyone, I'm new to Ruby and to the mailing list, so go easy.

14 messages 2009/09/10
[#346166] Re: Asynchronous http POST? — Ezra Zygmuntowicz <ezmobius@...> 2009/09/10

[#346193] populating a hash from an array using inject — Glenn Jackman <glennj@...>

I was looking at this problem on Stack Overflow (this one:

12 messages 2009/09/10

[#346324] module to overwrite method defined via define_method — Gaspard Bucher <gaspard@...>

Hi List !

17 messages 2009/09/13
[#346326] Re: module to overwrite method defined via define_method — "David A. Black" <dblack@...> 2009/09/13

Hi --

[#346328] Re: module to overwrite method defined via define_method — Gaspard Bucher <gaspard@...> 2009/09/13

David A. Black wrote:

[#346347] FasterCSV.foreach loop — Dot Baiki <dot_baiki@...>

Hello community,

16 messages 2009/09/13

[#346367] .map.with_object(3){|v|v+3} #=> 3 Is this a bug? — ErMaker <ermaker@...>

At ruby 1.9.2dev (2009-07-18 trunk 24186) [i386-mswin32_90]

15 messages 2009/09/14

[#346383] Pre-allocate large amount of memory? — Carsten Gehling <carsten@...>

I've created a small daemon, that serves certain data very fast to our

15 messages 2009/09/14
[#346404] Re: Pre-allocate large amount of memory? — Robert Klemme <shortcutter@...> 2009/09/14

2009/9/14 Carsten Gehling <carsten@sarum.dk>:

[#346419] whats the best way to package deploy a Ruby app to windows??? (no UI, also standalone if possible) — Greg Hauptmann <greg.hauptmann.ruby@...>

Hi,

8 messages 2009/09/14

[#346452] Command line — Rong <ron.green@...>

Please forgive this stupid newb question but I thought it was possible

13 messages 2009/09/15

[#346500] Array of Hashes in an array of hashes - Complicated! — Matt Brooks <mattbrooks@...>

I have an unique problem that I can't solve. I am sorry this is long,

17 messages 2009/09/15
[#346505] Re: Array of Hashes in an array of hashes - Complicated! — John W Higgins <wishdev@...> 2009/09/15

Morning Matt,

[#346508] Re: Array of Hashes in an array of hashes - Complicated! — Matt Brooks <mattbrooks@...> 2009/09/15

Hi John,

[#346510] Re: Array of Hashes in an array of hashes - Complicated! — John W Higgins <wishdev@...> 2009/09/15

Matt,

[#346515] Re: Array of Hashes in an array of hashes - Complicated! — Aldric Giacomoni <aldric@...> 2009/09/15

+1 on object creation

[#346574] string to array — Re BR <rereis@...>

Hello all,

15 messages 2009/09/16

[#346611] block issues... — Dylan Lukes <revenantphoenix@...>

In the following block, each plugin in the constant hash PLUGINS is

17 messages 2009/09/16

[#346621] Monkey Patching 2 Methods, Overrides One Method, Not The Other — MaggotChild <hsomob1999@...>

I'm monkey patching 2 methods of an existing module: some_method() and

18 messages 2009/09/17

[#346645] Mucking about with dynamically adding methods to objects — Paul Smith <paul@...>

I've been toying with Ruby for a while, but only now am I beginning to

12 messages 2009/09/17
[#346652] Re: Mucking about with dynamically adding methods to objects — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2009/09/17

On Thu, Sep 17, 2009 at 11:44 AM, Paul Smith <paul@pollyandpaul.co.uk> wrote:

[#346665] Re: Mucking about with dynamically adding methods to objects — Paul Smith <paul@...> 2009/09/17

2009/9/17 Jes俍 Gabriel y Gal疣 <jgabrielygalan@gmail.com>:

[#346676] Value isn't appended in puts statement(appears on next line) — Mrmaster Mrmaster <mrsolarlife@...>

Hello,

13 messages 2009/09/17
[#346678] Re: Value isn't appended in puts statement(appears on next line) — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2009/09/17

On Thu, Sep 17, 2009 at 8:51 PM, Mrmaster Mrmaster

[#346759] Newbie: Are Ruby regexp's a subset, superset, or equal to Perl's? — Harry <simonsharry@...>

Hi,

13 messages 2009/09/18

[#346774] Exceptional Rails Developer — Richard Price <richard.price100@...>

Hi all,

32 messages 2009/09/18
[#347451] Re: Exceptional Rails Developer — Ilan Berci <ilan.berci@...> 2009/09/30

Richard Price wrote:

[#347452] Re: Exceptional Rails Developer — Zundra Daniel <zundra.daniel@...> 2009/09/30

At least he didn't say "Rockstar" or "Ninja"

[#347476] Re: Exceptional Rails Developer — David Masover <ninja@...> 2009/09/30

On Wednesday 30 September 2009 01:45:27 pm Zundra Daniel wrote:

[#347477] Re: Exceptional Rails Developer — Greg Donald <gdonald@...> 2009/09/30

On Wed, Sep 30, 2009 at 6:44 PM, David Masover <ninja@slaphack.com> wrote:

[#347482] Re: Exceptional Rails Developer — David Masover <ninja@...> 2009/10/01

On Wednesday 30 September 2009 06:54:16 pm Greg Donald wrote:

[#347514] Re: Exceptional Rails Developer — Eleanor McHugh <eleanor@...> 2009/10/01

On 1 Oct 2009, at 01:32, David Masover wrote:

[#347551] Re: Exceptional Rails Developer — David Masover <ninja@...> 2009/10/01

On Thursday 01 October 2009 08:20:26 am Eleanor McHugh wrote:

[#347592] Re: Exceptional Rails Developer — Eleanor McHugh <eleanor@...> 2009/10/02

On 1 Oct 2009, at 19:15, David Masover wrote:

[#347596] Re: Exceptional Rails Developer — Aldric Giacomoni <aldric@...> 2009/10/02

[#346775] Determining if a file is binary or text — James Masters <james.d.masters@...>

Hi all,

15 messages 2009/09/18

[#346891] Incrementing variable names in a loop? — Matt Brooks <mattbrooks@...>

I have a function write_log that takes in a string and it prints to

10 messages 2009/09/21

[#347044] the great ruby editor and ide roundup — Martin DeMello <martindemello@...>

https://spreadsheets.google.com/ccc?key=0Al_hzYODcgxwdG9tUFhqcVVoUDVaLTlqT2YtNjV1N0E&hl=en

26 messages 2009/09/23
[#347045] Re: the great ruby editor and ide roundup — Rajinder Yadav <devguy.ca@...> 2009/09/23

On Wed, Sep 23, 2009 at 4:02 PM, Martin DeMello <martindemello@gmail.com> wrote:

[#347058] How do you limit the line length of the output commands? Where is pqueue library documented? — Mason Kelsey <masonkelsey@...>

There must be an easy way to solve the problem of controlling the length of

12 messages 2009/09/23

[#347156] Roulette & rand — Semih Ozkoseoglu <ozansemih@...>

Hi,

22 messages 2009/09/25
[#347161] Re: Roulette & rand — Stefano Crocco <stefano.crocco@...> 2009/09/25

On Friday 25 September 2009, Semih Ozkoseoglu wrote:

[#347164] Re: Roulette & rand — Semih Ozkoseoglu <ozansemih@...> 2009/09/25

Hi again Stefano,

[#347171] Re: Roulette & rand — Stefano Crocco <stefano.crocco@...> 2009/09/25

On Friday 25 September 2009, Semih Ozkoseoglu wrote:

[#347173] Re: Roulette & rand — Semih Ozkoseoglu <ozansemih@...> 2009/09/25

Stefano, Paul,

[#347179] Re: Roulette & rand — Semih Ozkoseoglu <ozansemih@...> 2009/09/25

Hi again,

[#347193] How to remove duplicate elements in a 2D array — Li Chen <chen_li3@...>

Hi all,

20 messages 2009/09/25

[#347202] Backporting Enumerator.new { ... } to Ruby 1.8.7 — "Shot (Piotr Szotkowski)" <shot@...>

Hello, good people of ruby-talk.

12 messages 2009/09/25

[#347260] handling of regexp objects that aren't referenced by variables, arrays, tables or objects — ThomasW <x.zupftom@...>

Hi,

12 messages 2009/09/27

[#347354] How do I use nitpick — "Michael W. Ryder" <_mwryder@...>

I was looking for a program like lint in C and came across nitpick. I

23 messages 2009/09/29
[#347366] Re: How do I use nitpick — Hassan Schroeder <hassan.schroeder@...> 2009/09/29

On Mon, Sep 28, 2009 at 9:25 PM, Michael W. Ryder

[#347397] Re: How do I use nitpick — "Michael W. Ryder" <_mwryder@...> 2009/09/29

Hassan Schroeder wrote:

[#347398] Re: How do I use nitpick — Ryan Davis <ryand-ruby@...> 2009/09/29

[#347364] Group by unique entries of a hash — Ne Scripter <stuart.clarke@...>

I have two data sets loaded into a hash to give the following output

15 messages 2009/09/29

[#347443] Get current working copy version in subversion/git — Anthony Metcalf <anthony.metcalf@...>

Hi,

11 messages 2009/09/30

[#347456] SystemStackError: stack level too deep > how make it deeper? — Joshua Muheim <forum@...>

Hi all

15 messages 2009/09/30
[#347459] Re: SystemStackError: stack level too deep > how make it deeper? — Jason Roelofs <jameskilton@...> 2009/09/30

On Wed, Sep 30, 2009 at 3:47 PM, Joshua Muheim <forum@josh.ch> wrote:

Re: Can not catch PTY::ChildExited exception

From: Ehsanul Hoque <ehsanul_g3@...>
Date: 2009-09-11 02:27:18 UTC
List: ruby-talk #346206
Well, I'm sure I have nowhere as good an idea of PTY.spawn() as Matsumoto does, but let me try to explain what your code is doing, and how to get your desired result.

First, you might want to consider using other methods for what you're doing. You probably don't really need a pseudo terminal, which is what PTY gives you, and you can use more well documented methods. These two links give a good overview of some of the other ways you can start subprocesses in ruby:
http://devver.net/blog/2009/06/a-dozen-or-so-ways-to-start-sub-processes-in-ruby-part-1/
http://devver.net/blog/2009/07/a-dozen-or-so-ways-to-start-sub-processes-in-ruby-part-2/

If you still think you really need to use a pseudo terminal, then read on.

PTY.spawn() doesn't block your ruby program like a call to system() would. It simply starts the process given the command, and lets you continue. In your first email, you mentioned that when you took out the "sleep 10" line in your code, no exception took place at all. The reason for this is that your script ended before the child did, since the ten seconds of sleep were taken out. And so ruby did not have a chance to raise an exception. Similarly, in your latest code example, "TEST END" was never printed because the
begin block had an exception before you even reached the 'printf "TEST END\n"' line. The exception occurred while
it was in "sleep 10".  I hope that's clear, it messed me up too in the past.

To get what you want, you might want to use the block form for PTY.spawn() instead. I just find it cleaner, and using the limited scope for the variables pipe_read etc makes sense. The variables are gone when the pseudo terminal is gone.

What I've done is put a loop inside the PTY.spawn() block, which can be used to handle the output from the subprocess, or feed it input. If you don't need to do that, you probably don't need to use PTY anyways, but you can be the judge of that. Now, this loop stops when the subprocess exits, and then the rest of the ruby script continues.

It seems like you also want to run some code in parallel to the subprocess, but not in the loop I mentioned. For this case, the code below also has a thread. Only when the child exits does the thread stop, and "t.join" finally allows the code to continue. Before "t.join" and after the thread block though, you can run code in parallel to the subprocess. And then, "Test End" is printed after the subprocess has exited. Here's the code:

require 'pty'

cmd = "/home3/cman/work/product/integrator/test/syb2/OCS-15_0/bin/isql -Uuser2 -Puser2 -Scman2"

t = Thread.new do
  begin
    PTY.spawn(cmd) do |pipe_read, pipe_write, pid|
      loop do
        # Code here can handle output given by your command, and feed it input, etc
        # But the infinite loop will be broken by the exception caused when the child process exits, and your script continues
        # Or you could just terminate this loop in advance, but remember, you might reach the end of your ruby script
        # before the child exits, in case that's a problem.
      end
    end
  rescue PTY::ChildExited => msg
    puts "The child has exited"
  rescue => msg
    puts "A different exception:\n" + msg
  end
end

puts "Doing stuff in parallel to the subprocess here"
t.join
puts "Test End"


I hope that was useful/clear. It was certainly too long.

- Ehsan


> Date: Fri, 11 Sep 2009 09:56:15 +0900
> From: denis.berezhnoy@gmail.com
> Subject: Re: Can not catch PTY::ChildExited exception
> To: ruby-talk@ruby-lang.org
> 
> Yukihiro Matsumoto wrote:
> > Hi,
> > 
> > In message "Re: Can not catch PTY::ChildExited exception"
> >     on Wed, 9 Sep 2009 15:14:09 +0900, Denis Berezhnoy 
> > <denis.berezhnoy@gmail.com> writes:
> > 
> > |I have problem that I can not catch PTY::ChildExited exception. Here is
> > |the code:
> > 
> > The exception was raised when the child process terminated
> > (asynchronously), so you need to wrap not only spawn but everything.
> > 
> >               matz.
> 
> Hello Matsumoto-san,
> 
> Thank you very much for clarifications! I tried to wrap around whole 
> code with begin rescue block and I can catch ChildExited exception.  So 
> now I have code like this:
> 
> require 'pty'
> 
> cmd = "/home3/cman/work/product/integrator/test/syb2/OCS-15_0/bin/isql 
> -Uuser2 -Puser2 -Scman2"
> 
> begin
> 
> pipe_read, pipe_write, pid = PTY.spawn(cmd)
> 
> sleep 10
> 
> printf "TEST END\n"
> 
> rescue PTY::ChildExited => msg
>     puts "Caught child exited exception!"
> rescue => msg
>     puts "Caught exception!"
> rescue => e
>     puts e.msg
>     puts e.type
> end
> 
> 
> But now the problem is that ChildExited exception can occur at any 
> moment after spawn and interrupt program in random place. In my test 
> above I never get TEST END printed.
> 
> How can I handle this in right way?
> 
> Best regards,
> Denis
> -- 
> Posted via http://www.ruby-forum.com/.
> 

_________________________________________________________________
With Windows Live, you can organize, edit, and share your photos.
http://www.windowslive.com/Desktop/PhotoGallery

In This Thread