[#35036] Intentional Programming — "John" <nojgoalbyspam@...>

Hi all

17 messages 2002/03/01

[#35112] RDoc question — Michael Davis <mdavis@...>

I have a question about RDoc. I would like to reference an external

17 messages 2002/03/02

[#35162] string to array and back — Ron Jeffries <ronjeffries@...>

I am needing to convert strings to arrays of bytes and back. I see pack and

19 messages 2002/03/03

[#35364] file reading impossibly slow? — Ron Jeffries <ronjeffries@...>

So I'm doing this benchmark to work with my set program. Part of the problem is

18 messages 2002/03/07

[#35429] Interesting link on static/dynamic typing... — Robert Feldt <feldt@...>

...relevant to Ruby compared to other languages discussion:

25 messages 2002/03/08
[#35441] Re: Interesting link on static/dynamic typing... — Paul Brannan <paul@...> 2002/03/08

On Fri, Mar 08, 2002 at 05:34:43PM +0900, Robert Feldt wrote:

[#35460] Spam, ruby-talk, and me — Dave Thomas <Dave@...>

14 messages 2002/03/08

[#35537] Confusion — David Corbin <dcorbin@...>

The following is from my debugging through xmlc.rb

16 messages 2002/03/10

[#35579] RE: WIN32OLE and LDAP — "Morris, Chris" <chris.morris@...>

> The new version 0.4.2 of Win32OLE has WIN32OLE.bind method.

16 messages 2002/03/11

[#35652] Method type 'abstract' — Peter Hickman <peter@...>

The one thing I miss in Ruby is the abstract class method to go along

15 messages 2002/03/12

[#35653] Some potential RCRs — "Bob Alexander" <bobalex@...>

Here are a few thing I am considering submitting as RCRs. I'm looking for comments to help decide whether to make them official, so please let know what you think is good and bad about these...

50 messages 2002/03/12
[#35672] Re: Some potential RCRs — matz@... (Yukihiro Matsumoto) 2002/03/12

Hi,

[#35683] Re: Some potential RCRs — Massimiliano Mirra <list@...> 2002/03/12

On Wed, Mar 13, 2002 at 03:58:01AM +0900, Yukihiro Matsumoto wrote:

[#35697] Re: Some potential RCRs — David Alan Black <dblack@...> 2002/03/13

Hello --

[#35694] rpkg 0.3 — Massimiliano Mirra <list@...>

14 messages 2002/03/13
[#35699] RE: [ANN] rpkg 0.3 — <james@...> 2002/03/13

>

[#35787] testunit - setup -> set_up ? — "Morris, Chris" <chris.morris@...>

I'm just starting to use testunit instead of rubyunit ... I noticed with an

21 messages 2002/03/13
[#35793] RE: testunit - setup -> set_up ? — "Nathaniel Talbott" <nathaniel@...> 2002/03/13

Morris, Chris [mailto:chris.morris@snelling.com] wrote:

[#35796] Re: testunit - setup -> set_up ? — Dave Thomas <Dave@...> 2002/03/13

"Nathaniel Talbott" <nathaniel@talbott.ws> writes:

[#35797] RE: testunit - setup -> set_up ? — "Nathaniel Talbott" <nathaniel@...> 2002/03/13

dave@thomases.com [mailto:dave@thomases.com] wrote:

[#35898] camelCase and underscore_style — "Morris, Chris" <chris.morris@...>

First, a question. If underscore_style is the Ruby norm for methods and the

20 messages 2002/03/15
[#35924] Re: camelCase and underscore_style — "Guy N. Hurst" <gnhurst@...> 2002/03/15

Phil Tomson wrote:

[#35930] RE: camelCase and underscore_style — "Nathaniel Talbott" <nathaniel@...> 2002/03/16

Guy N. Hurst [mailto:gnhurst@hurstlinks.com] wrote:

[#35989] ANN: Locana GUI and GUI Builder version 0.81 — Michael Davis <mdavis@...>

I am pleased to announce release 0.81 of Locana. Locana is a GUI

16 messages 2002/03/16

[#35992] XPath — Michael Schuerig <schuerig@...>

27 messages 2002/03/16

[#36034] Mini Rant: Indenting — Thomas Hurst <tom.hurst@...>

Why is it that I see *so* much code like:

14 messages 2002/03/17

[#36049] web templating for static sites? — Massimiliano Mirra <list@...>

I'm using the Template Toolkit for generating static web sites and I

42 messages 2002/03/17
[#36426] web standars (was: web templating for static sites?) — Tobias Reif <tobiasreif@...> 2002/03/20

Albert Wagner wrote:

[#36052] Xml Serialization for Ruby — "Chris Morris" <chrismo@...>

=Xml Serialization for Ruby

20 messages 2002/03/17
[#36059] Re: [ANN] Xml Serialization for Ruby — Massimiliano Mirra <list@...> 2002/03/17

On Mon, Mar 18, 2002 at 05:20:56AM +0900, Chris Morris wrote:

[#36067] eval/Module question — David Corbin <dcorbin@...>

If I have a String src that is similar to the following:

13 messages 2002/03/18

[#36157] Development of Windows version of Ruby — ptkwt@...1.aracnet.com (Phil Tomson)

Now that we've dumped the cygwin requirement for the Windows version of

63 messages 2002/03/18
[#36330] Re: Development of Windows version of Ruby — Ron Jeffries <ronjeffries@...> 2002/03/19

On Tue, 19 Mar 2002 14:05:27 GMT, "Albert L. Wagner" <alwagner@uark.edu> wrote:

[#36431] Re: Development of Windows version of Ruby — Dennis Newbold <dennisn@...> 2002/03/20

[#36458] Windows version of Ruby (proposals) — ptkwt@... (Phil Tomson) 2002/03/21

Dennis Newbold <dennisn@pe.net> wrote in message news:<Pine.GSO.3.96.1020320113603.22242B-100000@shell2>...

[#36482] RE: Windows version of Ruby (proposals) — "Christian Boos" <cboos@...> 2002/03/21

Some thoughts on the 2 first Windows issues, plus a 4th one...

[#36496] Re: Windows version of Ruby (proposals) — Dave Thomas <Dave@...> 2002/03/21

"Christian Boos" <cboos@bct-technology.com> writes:

[#36510] Re: Windows version of Ruby (proposals) — nobu.nokada@... 2002/03/21

Hi,

[#36514] Re: Windows version of Ruby (proposals) — Dave Thomas <Dave@...> 2002/03/21

nobu.nokada@softhome.net writes:

[#36518] Re: Windows version of Ruby (proposals) — nobu.nokada@... 2002/03/21

Hi,

[#36211] dots in Dir.entries — matz@... (Yukihiro Matsumoto)

Hi,

22 messages 2002/03/19

[#36231] style choice — Ron Jeffries <ronjeffries@...>

A style question for the community ... which of the following do you prefer, and

18 messages 2002/03/19

[#36345] ANN: REXML 2.0 — Sean Russell <ser@...>

I have a feeling there will only be three major revisions of REXML. Version

19 messages 2002/03/20

[#36610] Re: Windows version of Ruby (proposals) — Ron Jeffries <ronjeffries@...>

On Thu, 21 Mar 2002 14:11:55 GMT, Dave Thomas <Dave@PragmaticProgrammer.com> wrote:

16 messages 2002/03/22

[#36645] Ruby for Mac OS 10.1 — Jim Freeze <jim@...>

Hi:

28 messages 2002/03/23

[#36768] Re: Difference between 'do' and 'begin' — Clemens Hintze <c.hintze@...>

In <slrna9ulvi.f2h.mwg@fluffy.isd.dp.ua> Wladimir Mutel <mwg@fluffy.isd.dp.ua> writes:

23 messages 2002/03/26
[#36783] RE: Difference between 'do' and 'begin' — <james@...> 2002/03/26

[#36792] Re: Difference between 'do' and 'begin' — Kent Dahl <kentda@...> 2002/03/26

james@rubyxml.com wrote:

[#36808] Error calling Tk in a loop — <james@...>

I'm trying to write some code that pops up a Tk window when for certain

15 messages 2002/03/26

[#36841] RE: Windows version of Ruby (proposals) — "Andres Hidalgo" <sol123@...>

I believe that Ruby has a place in windows (Office), I happened to have

14 messages 2002/03/27

[#36863] Hash.new(Hash.new) doesn't use Hash.new as default value — "Jonas Delfs" <jonas@...>

Hi -

18 messages 2002/03/27

[#37080] Why isn't Math object-oriented? — Bil Kleb <W.L.Kleb@...>

So I'm reading along in the Pixaxe book (yet again), and I am told

15 messages 2002/03/30

[#37121] String#begins?(s) — timsuth@... (Tim Sutherland)

class String

24 messages 2002/03/31

RE: File change notification?

From: Dale Martenson <dmartenson@...>
Date: 2002-03-26 18:44:36 UTC
List: ruby-talk #36807
>> Is there a straightforward way of getting notified when a file
>> changes? In NT I can block a thread on the handle returned by
>> FindFirstChangeNotification. Does something like this exist in Ruby?
>> I'm currently using the Cygwin version but could be convinced to
>> switch.

My first example was a Ruby-way of monitoring a specific file based on it
modification date. Here is a way of call the Win32 API directly from Ruby to
accomplish the task. Is this what you were looking for?


# -----------------------------------------------------------------------
# WARNING: Win32 Specific code to follow -- You have been warned!!
# -----------------------------------------------------------------------

require 'Win32API'

# -----------------------------------------------------------------------
# definitions for Windows constants
# -----------------------------------------------------------------------

INVALID_HANDLE_VALUE = -1

INFINITE = 0xFFFFFFFF

WAIT_OBJECT_0 = 0x00000000

FILE_NOTIFY_CHANGE_FILE_NAME   = 0x00000001   
FILE_NOTIFY_CHANGE_DIR_NAME    = 0x00000002   
FILE_NOTIFY_CHANGE_ATTRIBUTES  = 0x00000004   
FILE_NOTIFY_CHANGE_SIZE        = 0x00000008   
FILE_NOTIFY_CHANGE_LAST_WRITE  = 0x00000010   
FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020   
FILE_NOTIFY_CHANGE_CREATION    = 0x00000040   
FILE_NOTIFY_CHANGE_SECURITY    = 0x00000100   

# -----------------------------------------------------------------------
# Definitions for Windows function calls
# -----------------------------------------------------------------------

# HANDLE FindFirstChangeNotification(
#  LPCTSTR lpPathName,    // directory name
#  BOOL bWatchSubtree,    // monitoring option
#  DWORD dwNotifyFilter   // filter conditions
#);

k32FindFirstChangeNotification = Win32API.new("kernel32",
"FindFirstChangeNotification", ['P', 'I', 'L'], 'L')

# BOOL FindNextChangeNotification(
#  HANDLE hChangeHandle   // handle to change notification
# );

k32FindNextChangeNotification = Win32API.new("kernel32",
"FindNextChangeNotification", ['L'], 'I')

# DWORD WaitForMultipleObjects(
#   DWORD nCount,             // number of handles in array
#   CONST HANDLE *lpHandles,  // object-handle array
#   BOOL bWaitAll,            // wait option
#   DWORD dwMilliseconds      // time-out interval
# );

k32WaitForMultipleObjects = Win32API.new("kernel32",
"WaitForMultipleObjects", ['L', 'P', 'I', 'L'], 'L')

# -----------------------------------------------------------------------
# Create notification events
# -----------------------------------------------------------------------
dwChangeHandles = []

# Watch the C:\WINDOWS directory for file creation and 
# deletion.

dwChangeHandles[0] = k32FindFirstChangeNotification.Call( 
    "C:\\WINDOWS",                 # directory to watch 
    0,                             # do not watch the subtree 
    FILE_NOTIFY_CHANGE_FILE_NAME)  # watch file name changes 
 
if dwChangeHandles[0] == INVALID_HANDLE_VALUE then 
    exit
end    
 
# Watch the C:\ subtree for directory creation and 
# deletion. 
 
dwChangeHandles[1] = k32FindFirstChangeNotification.Call( 
    "C:\\",                        # directory to watch 
    1,                             # watch the subtree 
    FILE_NOTIFY_CHANGE_DIR_NAME);  # watch dir. name changes 
 
if dwChangeHandles[1] == INVALID_HANDLE_VALUE then 
    exit
end    
 
# Create storage for two event handles (LONG)
lp_dwChangeHandles = " " * 8

# Pack event handles into newly created storage area to be used for Win32
call
lp_dwChangeHandles = dwChangeHandles.pack("LL")
 
# Change notification is set. Now wait on both notification 
# handles and refresh accordingly. 

while true 
    # Wait for notification.
 
    dwWaitStatus = k32WaitForMultipleObjects.Call(2, lp_dwChangeHandles, 
        0, INFINITE) 

    case dwWaitStatus
        when WAIT_OBJECT_0 
 
        # A file was created or deleted in C:\WINDOWS. 
        # Do what you need to do and restart the 
        # change notification.

            print "#{Time.now}: A file in C:\\WINDOWS was messed with!\n"
	   
            if k32FindNextChangeNotification.Call( 
                    dwChangeHandles[0] ) == 0 then 
                exit 
	    end
 
        when WAIT_OBJECT_0+1 
 
        # A directory was created or deleted in C:\. 
        # Do what you need to do and restart the 
        # change notification.
 
            print "#{Time.now}: The C:\\ directory was messed with!\n"
	    
            if k32FindNextChangeNotification.Call( 
                    dwChangeHandles[1] ) == 0 then 
                exit
            end   		
 
        else 
            exit
    end 
end 

In This Thread

Prev Next