[#354233] Ruby & IRC — Rajinder Yadav <devguy.ca@...>

Hi I am thinking about playing around with IRC Internert Relay Chat

16 messages 2010/01/01

[#354265] "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...>

Hello,

35 messages 2010/01/02
[#354266] Re: "Dummy" IO object to push and pull data? — Ryan Davis <ryand-ruby@...> 2010/01/02

[#354273] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/02

Ryan Davis wrote:

[#354303] Re: "Dummy" IO object to push and pull data? — Brian Candler <b.candler@...> 2010/01/02

Shay Hawkins wrote:

[#354308] Re: "Dummy" IO object to push and pull data? — Brian Candler <b.candler@...> 2010/01/02

Oh, and there is also IO.pipe, which is unidirectional under most Unix

[#354309] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/02

Brian Candler wrote:

[#354311] Re: "Dummy" IO object to push and pull data? — Caleb Clausen <vikkous@...> 2010/01/03

On 1/2/10, Shay Hawkins <gohegdeh@comcast.net> wrote:

[#354352] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/03

Caleb Clausen wrote:

[#354354] Re: "Dummy" IO object to push and pull data? — Tony Arcieri <tony@...> 2010/01/03

On Sun, Jan 3, 2010 at 3:07 PM, Shay Hawkins <gohegdeh@comcast.net> wrote:

[#354358] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/04

Tony Arcieri wrote:

[#354383] Re: "Dummy" IO object to push and pull data? — Brian Candler <b.candler@...> 2010/01/04

Shay Hawkins wrote:

[#354402] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/04

Brian Candler wrote:

[#354381] Is ruby's regex slower? — Ruby Newbee <rubynewbee@...>

Hi,

33 messages 2010/01/04
[#354384] Re: Is ruby's regex slower? — Josh Cheek <josh.cheek@...> 2010/01/04

On Mon, Jan 4, 2010 at 2:54 AM, Ruby Newbee <rubynewbee@gmail.com> wrote:

[#354387] Re: Is ruby's regex slower? — Wybo Dekker <wybo@...> 2010/01/04

[#354433] Re: Is ruby's regex slower? — Roger Pack <rogerpack2005@...> 2010/01/04

[#354448] Re: Is ruby's regex slower? — Kornelius Kalnbach <murphy@...> 2010/01/05

Roger Pack wrote:

[#354453] Re: Is ruby's regex slower? — Marnen Laibow-Koser <marnen@...> 2010/01/05

Kornelius Kalnbach wrote:

[#354461] Re: Is ruby's regex slower? — Robert Klemme <shortcutter@...> 2010/01/05

On 01/05/2010 12:37 PM, Marnen Laibow-Koser wrote:

[#354519] group in the array — Kolya17 Kolya17 <lastdrv@...>

Hi!

15 messages 2010/01/06

[#354619] Non-blocking communication between Ruby processes — Iñaki Baz Castillo <ibc@...>

Hi, I run Unicorn which is a Rack http server using N forked worker processes.

30 messages 2010/01/07
[#354622] Re: Non-blocking communication between Ruby processes — Robert Klemme <shortcutter@...> 2010/01/07

On 01/07/2010 02:18 PM, Iki Baz Castillo wrote:

[#354625] Re: Non-blocking communication between Ruby processes — Iki Baz Castillo <ibc@...> 2010/01/07

El Jueves, 7 de Enero de 2010, Robert Klemme escribi

[#354640] Re: Non-blocking communication between Ruby processes — Robert Klemme <shortcutter@...> 2010/01/07

On 01/07/2010 03:07 PM, Iki Baz Castillo wrote:

[#354643] Re: Non-blocking communication between Ruby processes — Iki Baz Castillo <ibc@...> 2010/01/07

El Jueves, 7 de Enero de 2010, Robert Klemme escribi鷓

[#354645] Re: Non-blocking communication between Ruby processes — Iki Baz Castillo <ibc@...> 2010/01/07

El Jueves, 7 de Enero de 2010, Iki Baz Castillo escribi

[#354656] Stopping String Escaping. — Phil Cooper-king <phil@...>

Hi,

14 messages 2010/01/07
[#354664] Re: Stopping String Escaping. — Brian Candler <b.candler@...> 2010/01/07

Phil Cooper-king wrote:

[#354746] Ruby editing style rules and recommendation? — Nathan Oyama <nate@...>

I asked a question 'Decimal in for loop?' and two members were kind

12 messages 2010/01/09

[#354781] The Ruby GUI debacle — Ruby Student <ruby.student@...>

Team,

40 messages 2010/01/10
[#354794] Re: The Ruby GUI debacle — James Britt <james.britt@...> 2010/01/10

Ruby Student wrote:

[#354803] Re: The Ruby GUI debacle — Ruby Student <ruby.student@...> 2010/01/11

James, I don't remember if the problems was with Netbeans or something

[#354825] Re: The Ruby GUI debacle — Florian Gilcher <flo@...> 2010/01/11

>

[#354874] bellhop 1.0.0 released — Gregory Brown <gregory.t.brown@...>

Hi folks,

12 messages 2010/01/11

[#354910] Is 'rescue' expensive ? — "R. Kumar" <sentinel.2001@...>

If i use something like:

12 messages 2010/01/12

[#354915] 3D with Ruby (Ogre ?) — Marc-antoine Kruzik <kadelfek@...>

Hello, I'm french, sorry for my mistakes.

24 messages 2010/01/12
[#354920] Re: 3D with Ruby (Ogre ?) — Brian Candler <b.candler@...> 2010/01/12

Marc-antoine Kruzik wrote:

[#354945] NOOB Question on Instance Variable — BlueHandTalking <jet@...>

I have a class photo. It belongs_to a project.

13 messages 2010/01/12

[#354974] WIN32OLE memory leaks — Chuck Remes <cremes.devlist@...>

In my ruby code I am making a call out to a COM object that is

21 messages 2010/01/12
[#354979] Re: WIN32OLE memory leaks — Luis Lavena <luislavena@...> 2010/01/12

On Jan 12, 6:19m, Chuck Remes <cremes.devl...@mac.com> wrote:

[#355014] Re: WIN32OLE memory leaks — Chuck Remes <cremes.devlist@...> 2010/01/13

[#355002] Ruby Regex — Sriram Varahan <sriram.varahan@...>

Hello,

15 messages 2010/01/13

[#355036] Recommended Reading (also: Arrays/Hashes) — Zach Bartels <no@...>

Hi all,

20 messages 2010/01/13

[#355085] How to know the OS architecture (32 or 64 bits)? — Iñaki Baz Castillo <ibc@...>

Hi, is there a reliable way under Ruby to know the OS architecture (32 or 64

27 messages 2010/01/14
[#355136] Re: How to know the OS architecture (32 or 64 bits)? — Walton Hoops <walton@...> 2010/01/15

On 1/14/2010 4:12 PM, I単aki Baz Castillo wrote:

[#355138] Re: How to know the OS architecture (32 or 64 bits)? — Walton Hoops <walton@...> 2010/01/15

On 1/15/2010 9:36 AM, Walton Hoops wrote:

[#355142] Re: How to know the OS architecture (32 or 64 bits)? — Iñaki Baz Castillo <ibc@...> 2010/01/15

El Viernes, 15 de Enero de 2010, Walton Hoops escribi坦:

[#355143] Re: How to know the OS architecture (32 or 64 bits)? — Iñaki Baz Castillo <ibc@...> 2010/01/15

El Viernes, 15 de Enero de 2010, I単aki Baz Castillo escribi坦:

[#355159] Re: How to know the OS architecture (32 or 64 bits)? — Walton Hoops <walton@...> 2010/01/15

On 1/15/2010 9:59 AM, I単aki Baz Castillo wrote:

[#355102] Float Points error — "THAKUR PRASHANT SINGH" <Prashant_Singh.Thakur@...>

Hi,

13 messages 2010/01/15

[#355228] GPGME gem - cannot figure out how to decrypt data — Daniel Frank <ruby-talk-2597@...>

Hello,

11 messages 2010/01/17

[#355266] Can't install gems (Windows) — Sal <salbass575@...>

I am unable to install any gems now on my Windows 7 machine running

25 messages 2010/01/17

[#355281] basic question: passing a modifiable argument to a routine — lalawawa <usenet@...>

Arguments to subroutines seem to be passed by value in ruby

10 messages 2010/01/18

[#355392] Creating GUI applications with Ruby 1.9.1 — Alpha Blue <jdezenzio@...>

I'm wanting to port over a GUI app I created into ruby so that it

24 messages 2010/01/19

[#355461] Looking for object.inherits?(Classname) — Xeno Campanoli <xeno.campanoli@...>

I'm looking for a way to make sure an object being passed is in some class

13 messages 2010/01/20

[#355487] Best practices when writing destructive code — Adam Akhtar <adamtemporary@...>

Im going to be making and removing lots of directories using ruby and Im

10 messages 2010/01/20

[#355530] ruby bounties--list of bounties — Roger Pack <rogerdpack2@...>

Fifth time's a charm (durn spam filters)

34 messages 2010/01/21
[#355574] Re: [ANN] ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/21

On Thu, Jan 21, 2010 at 12:07 AM, Roger Pack <rogerdpack2@gmail.com> wrote:

[#355739] Re: ruby bounties--list of bounties — Roger Pack <rogerpack2005@...> 2010/01/24

[#355742] Re: ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/24

On Sat, Jan 23, 2010 at 11:49 PM, Roger Pack <rogerpack2005@gmail.com> wrote:

[#355766] Re: ruby bounties--list of bounties — Aaron Patterson <aaron@...> 2010/01/25

On Sun, Jan 24, 2010 at 09:15:56PM +0900, Charles Oliver Nutter wrote:

[#355784] Re: ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/25

On Mon, Jan 25, 2010 at 6:29 AM, Aaron Patterson

[#355795] Re: ruby bounties--list of bounties — Mike Dalessio <mike.dalessio@...> 2010/01/25

On Mon, Jan 25, 2010 at 7:37 AM, Charles Oliver Nutter

[#355802] Re: ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/25

On Mon, Jan 25, 2010 at 6:25 PM, Mike Dalessio <mike.dalessio@gmail.com> wrote:

[#355547] Unexpected Hash#first return under Ruby1.9 — Iñaki Baz Castillo <ibc@...>

Hi, Ruby 1.9 implements "first" method for Hash (as Hash are ordered now).

12 messages 2010/01/21

[#355563] Rails ADODB.Connection Error — gregarican <greg.kujawa@...>

I know this isn't exclusively a Rails list, so I apologize in advance.

12 messages 2010/01/21

[#355600] Ruby c extensions on windows — Philliam Auriemma <phil.auriemma@...>

Hey guys,

15 messages 2010/01/22

[#355638] Argh?! :) kEND, $end and kELSE in a simple program — Jet Koten <jetkoten@...>

Hi,

15 messages 2010/01/22

[#355667] How to use WIN32OLE to Save As PDF — Joe Peck <joep@...>

Hi,

12 messages 2010/01/22

[#355797] Nested hash with arrays for default value — Glen Holcomb <damnbigman@...>

I'm trying to find a "nice" way to make a nested hash with an empty array as

12 messages 2010/01/25
[#355803] Re: Nested hash with arrays for default value — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2010/01/25

On Mon, Jan 25, 2010 at 6:48 PM, Glen Holcomb <damnbigman@gmail.com> wrote:

[#355891] Open Source Subversion Hosting — Intransition <transfire@...>

Looking for Rubyist's recommendations for free open-source Subversion

21 messages 2010/01/26
[#355892] Re: Open Source Subversion Hosting — Marnen Laibow-Koser <marnen@...> 2010/01/26

Thomas Sawyer wrote:

[#355939] can't update and install gem — Johny ben <joh13ny@...>

os:win xp

11 messages 2010/01/27

[#355962] Why does `source .bashrc` complain "command not found"? — Adam Akhtar <adamtemporary@...>

Is it just me or is this something that just cant be done?

10 messages 2010/01/27

[#356010] Use Non-Java Version of Gem — Bryan Richardson <btrichardson@...>

Hello all,

12 messages 2010/01/27

[#356042] gsub not working to replace a 'Chinese' Charater. — Ryan Smith <sunraise2005@...>

gsub not works for me when replace 'DBCS'(double byte character set)

12 messages 2010/01/28

[#356076] rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...>

rdoc_osx_dictionary version 1.0.1 has been released!

19 messages 2010/01/28
[#356082] Re: rdoc_osx_dictionary 1.0.1 Released — hi there <johnsonqu@...> 2010/01/29

If installed gems share the same class name, eg. mime-types mimetype-fu

[#356084] Re: rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...> 2010/01/29

[#356120] Re: rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...> 2010/01/29

[#356122] Re: rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...> 2010/01/29

[#356153] "require 'rubygems'" In Your Library/App/Tests Is Wrong? — Joe Wangkauf <tmo1138@...>

16 messages 2010/01/30
[#356154] Re: "require 'rubygems'" In Your Library/App/Tests Is Wrong? — Xavier Noria <fxn@...> 2010/01/30

On Sat, Jan 30, 2010 at 6:05 PM, Joe Wangkauf

[#356158] Re: "require 'rubygems'" In Your Library/App/Tests Is Wrong? — Josh Cheek <josh.cheek@...> 2010/01/30

I wonder how many people _don't_ use rubygems. What creates more work,

[#356162] Refining the use of file joins or file expand_path — Alpha Blue <jdezenzio@...>

Both bits of code process the same result which is finding .rb file

26 messages 2010/01/30
[#356177] Re: Refining the use of file joins or file expand_path — pharrington <xenogenesis@...> 2010/01/31

On Jan 30, 9:24m, Alpha Blue <jdezen...@gmail.com> wrote:

[#356179] Re: Refining the use of file joins or file expand_path — Alpha Blue <jdezenzio@...> 2010/01/31

pharrington wrote:

[#356182] Re: Refining the use of file joins or file expand_path — Ryan Davis <ryand-ruby@...> 2010/01/31

[#356183] Re: Refining the use of file joins or file expand_path — Alpha Blue <jdezenzio@...> 2010/01/31

Ryan Davis wrote:

[#356190] Inheritance related problem — "R. Kumar" <sentinel.2001@...>

Note: this is *not* a ruby bug. its a general query.

20 messages 2010/01/31

Re: "Dummy" IO object to push and pull data?

From: Robert Klemme <shortcutter@...>
Date: 2010-01-05 11:45:08 UTC
List: ruby-talk #354454
On 04.01.2010 14:38, Shay Hawkins wrote:
> Brian Candler wrote:
>> Sorry, I've read that several times and I still don't understand. Can 
>> you post a small example which demonstrates the problem, preferably 
>> standalone?
> 
> My apologies: I'll see if I can elaborate a bit...
> 
> Well, I originally was trying to find a workaround to this, but it seems 
> the root of the problem is in the process' streams. I have a seperate 
> program that I did not create myself (and therefore cannot change the 
> code of) - this program puts output into stderr, and accepts input 
> through stdin.
> 
> I call Open3.popen3 to create the three streams. In a loop, I want to 
> constantly read input from stderr. (Assuming I assigned the pipes to 
> stdin, stdout, and stderr variable names.)
> 
> loop do
>    line = stderr.gets()
>    puts("Output: #{line}")
> end
> 
> Then, if I receive an output of say, 0, I want to input something to the 
> program through stdin five seconds later.
> 
> loop do
>    line = stderr.gets().strip()
>    puts("Output: #{line}")
> 
>    if(line == "0")
>       Thread.new() do
>          sleep(5)
>          stdin.puts("Received 0 five seconds ago.")
>       end
>    end
> end
> 
> It creates the thread properly, but when the sleep expires and it is 
> ready to call stdin.puts(), it cannot do anything, because the loop 
> continued around and it is reading from stderr.

That can't normally be, because the thread runs independently of the
loop.  I am rather suspecting that you are having an issue with not
waiting for all threads to proper finish or do not make sure pipes are
read properly.  You could also have created a dead lock that way, i.e.
by not reading all pipes properly because a process that tries to write
to a filled pipe is blocked.

I have created a pair of test scripts which I will place below. 
Strangely enough, there seems to be an issue with detecting closing of 
the stderr pipe which I need to research separately.  If you just invoke 
the client script with "./clnt.rb 15 x" you will see the interaction 
properly working.  If you, for example, increase the number and omit the 
reading of sin in the client the server will eventually block in one of 
the puts or printf statements.  It may be that this is what you are 
observing.

Kind regards

	robert


Place both files in the same directory.

file clnt.rb:
#!/usr/local/bin/ruby19

# "client" which starts the server and every time a
# zero is read from the server's stderr pipe we send
# a notification to the server's stdin.
# server's stdout is used for logging state and is mirrored
# to this process's stdout with prefix "From server".

require 'open3'

# for debugging
Thread.abort_on_exception = true

Open3.popen3 File.join(File.dirname($0), "serv.rb"), *ARGV do |sin, 
sout, serr|
   sin.sync = true

   # we must make sure all pipes are either read or closed!
   r = Thread.new do
     sout.each do |line|
       puts "From server: #{line}"
     end
   end

   threads = []

   serr.each do |line|
     printf "%-20s read %p\n", Time.now, line

     line.chomp!

     if line == "0"
       threads << Thread.new do
         sleep 5
         sin.puts "Received 0 five seconds ago."
       end
     elsif /finish/i =~ line
       # interestingly enough EOF detection does not
       # work with serv.rb
       break
     end
   end

   puts "finished reading"

   threads.each {|th| th.join}

   puts "finished notifying"

   # init shutdown sequence
   sin.close
   r.join
end


file serv.rb:
#!/usr/local/bin/ruby19

# "server" process which writes a fixed amount of numbers
# to stderr and then closes stderr to indicate it's finished.
# first arg is no of repetitions
# second arg if present says indicate end with a particular
# message to stderr.

$stdout.sync = $stderr.sync = true

puts "started"

th = Thread.new do
   $stdin.each do |line|
     printf "%-30s read %p\n", Time.now, line
   end
end

rep = (ARGV.shift || 10).to_i
ind = ARGV.shift

rep.times do
   $stderr.puts rand(3)
   sleep 1
end

puts "finished writing"

# indicate we are done
$stderr.puts "Finish" if ind
$stderr.close
puts "stderr.closed? #{$stderr.closed?}"

puts "finishing"

th.join

puts "finished"



-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

In This Thread