Ruby Weekly News 5th - 11th June 2006

Discussion in 'Ruby' started by Tim Sutherland, Jun 14, 2006.


    Use the link above for a nicer version of this newsletter that's formatted for
    the web, including links to threads and other sites. You can also subscribe
    to a newsletter-only mailing list, or to RSS/Atom feeds.

    Ruby Weekly News 5th - 11th June 2006

    Ruby Weekly News is a summary of the week's activity for the ruby-talk
    mailing list (and its mirror equivalents the ruby-talk google group and
    the Ruby forum) and the comp.lang.ruby newsgroup.

    This week's newsletter is brought to you by Tim Sutherland.

    [ Contribute to the next newsletter ]

    Articles and Announcements

    * Ruby Whitepapers (ruby-talk)

    Eric Armstrong wrote a series of articles Ruby Makes My Head Explode
    in a one-week spree:

    * Ruby Rocks!
    * Rake Rocks!
    * Getting Started in Ruby
    * Installing Ruby (Linux info added by John Gabriele)
    * Installing Ruby Gems
    * Adding Ruby Extensions
    * Which GUI Language to Use? (FxRuby vs. WxRuby)

    * Feel like contributing? (comp.lang.ruby)

    Gregarican asks for help completing a Ruby telephony library he'd been
    working on before running out of time.

    "It provides a working telephony library that communicates with PBX
    systems for call detail reporting, call control, etc. It's maybe
    50-75% complete and hasn't been updated by me since November 2005.
    This *isn't* a VoIP project. It's CTI."

    User Group News

    * Phoenix Ruby Users Group meeting this Monday, June 12 (ruby-talk)

    The Phoenix Ruby Users Group had their June meeting on the 12th.

    Link of the Week

    * Ruby Inside: Daily Ruby tips, news, code and frivolity

    Ruby Inside is a blog by Peter Cooper that's been running for a couple
    of weeks. So far it's had multiple interesting posts every day,
    ranging from original overviews of little-known Ruby libraries, to
    announcements of new tools, libraries and articles.

    Worth a look.


    Another Look at SELECTOR NAMESPACES (ruby-talk)

    Trans posted some simple code adding partial support for selector
    namespaces in Ruby. It works by making copies of top-level constants, and
    is only for demonstration purposes.

    XML Parsing Speed - ruby libxml & REXML (comp.lang.ruby)

    subimage's code was taking too long to parse XML files (some of which were
    400MB). He tried using libxml instead of REXML, and this helped, but it
    was still too slow.

    rcoder explained that he should use stream (event) parsing for large XML
    documents, instead of parsing entire documents into memory at once (and to
    make things worse, then using XPath to select nodes).

    After switching to REXML's stream-parsing mode, subimage remarked "Ok so I
    finally dug into the stream parser and this is lightning fast!"

    Finally, Mathieu Blondel tested the expat bindings for Ruby a few months
    ago and found its stream-parser to be up to 20 times faster than REXML's.

    Can Ruby play with COM ? (ruby-talk)

    Can Ruby talk to Windows software that has a COM interface? Absolutely,
    with the standard library `win32ole'.

    Runtime debugging tools needed?!! (comp.lang.ruby)

    The web-testing tool Watir brought Jonathan Ni to Ruby, and he now has
    some ideas for speeding up test development. His company has a large and
    complex set of Watir tests for their web application, and need to
    constantly modify the tests as the application they're developing changes.

    They're finding the `run test suite', `fix error in test', `re-run' cycle
    takes too long (partly due to it taking a long time to set up the test
    data), so Jonathan would like to run the tests and have them pause
    whenever an error occurs, allow him to edit the test code, and continue
    without restarting.

    Andrew McDonagh suggested he instead consider whether all his tests really
    need to be "end-to-end" (i.e. act exactly like a normal user, going
    through a web browser). "A more reliable, flexible, less maintenance
    approach is to partition the tests so that very few actually go
    end-to-end." He gave some examples of what he means by tests that aren't

    Jonathan could also look into making the tests more independent, so he can
    fix and re-run each small test without having to wait for the whole lot to

    The original debug/fix/continue idea is a good one though. It would be
    worth looking into the various Ruby debuggers out there. Perhaps the
    ruby-talk readers have some ideas? (It's worth raising awareness that a
    lot of programmers are coming to Ruby through Watir.)

    Ruby Weekly News 29th May - 4th June 2006 (ruby-talk)

    In the thread announcing last week's Ruby Weekly News, James Edward Gray
    II said he was "90% sure" he'd found a new host for the ruby-talk mailing
    list comp.lang.ruby newsgroup gateway. "Give me a couple of weeks to iron
    out all the details...", then hopefully the list and newsgroup will be
    mirrored again.

    Ruby for Highschoolers? (ruby-talk)

    This thread discussed the relative merits of Scheme and Ruby as languages
    for a high-school introductory programming course.

    Scheme is a smaller, simpler language, and there is a lot of teaching
    material already prepared for it. While Ruby has many features (e.g.
    plenty of syntactic sugar) that make it nice to develop in once you know
    the language, these can be confusing to beginners.

    There were also arguments that Ruby is an excellent language for
    beginners. Curt Hibbs points out "Learn To Program" by Chris Pine,
    a book (and online tutorial) that's geared towards those who have never
    programmed before. It teaches programming using Ruby.

    Ruby has an advantage over Scheme in that it has a rich collection of
    libraries, so even new programmers can write useful, real (as well as fun)
    programs - great for motivation.

    iterative question (ruby-talk)

    Joe wants to get an array of all Dates in a range.

    Daniel Schierbeck said (start_date..end_date).to_a would do the trick, and
    Chris showed an alternative approach, using Date#upto to iterate over the
    date range.

    Ruby Quiz Wins Contest (ruby-talk)

    Last week's Ruby Quiz, "Hash to OpenStruct (#81)" by Hans Fugal had
    enough entries to qualify for a signed copy of James Edward Gray II's
    "Best of Ruby Quiz" book.


    Anyone aware of a Ruby-module for ICQ? (ruby-talk)

    Groleo Marius wanted to know if Ruby has any libraries for talking to ICQ.

    Net::IM by Paul Vaillant will support the protocol in the future, and
    Francis Cianfrocca has implemented Oscar/AOL (the AOL instant messaging
    protocol, including ICQ) in Ruby, and has it running on several large
    sites, but has not released the code.

    In the end, Groleo decided to port the Perl library Net::Oscar to Ruby. (ruby-talk)
    -------------------------- is a collection of web forums that are gateways to
    Ruby-related mailing lists. (Posts to the lists show up on the forums, and
    posts from the forums show up on the lists.)

    Unfortunately, many users of the Ruby web forum apparently don't realise
    their messages are sent to the ruby-talk list, so they do things (like not
    quoting messages) which make perfect sense on a web forum, but cause
    inconvenience for everyone else. In addition, posters from the forum are
    often newbies who ask questions that have been answered many times before.

    Matthew Smillie suggests the forum have links to and others,
    to encourage ruby-forum users to check the documentation before posting

    > [...] I'm also of the view that the quality and tone of the questions
    > from ruby-forum often leave something to be desired.
    > I have a hunch this is because google groups and mailing lists tend to
    > be used by people who already know what they're looking for, and already
    > know where the docs live. I'd bet that a number of the people posting
    > from the forum are probably not aware of all the resources available to
    > them.

    The thread turned into a discussion of how to read ruby-talk, which now
    receives over 4000 messages per month. (Eric Hodel linked to some code of
    his for using statistical techniques for selecting "interesting" posts.)

    Dave Burt: "Does anyone read all 4000 posts per month?" Austin Ziegler and
    Hal Fulton say they try. Your Ruby Weekly News editor reads almost every
    subject line :)

    How can I pin a Ruby object in memory? (ruby-talk)

    A C extension question: in .NET your C code can't simply store a pointer
    to a managed object, since the .NET garbage collector can move objects
    around in memory (the main implementation has a compacting garbage
    collector), so you sometimes have to wrap objects in a GCHandle, which is
    guaranteed not to move.

    John Lam asked if the same is required in Ruby C extensions. Minkoo Seo
    said no, since Ruby's collector is not a compacting one.

    (C extensions are allowed to depend on this fact. At least, objects
    referenced by VALUEs on the stack or in registers, or those referenced by
    rb_gc_mark in C extensions, are guaranteed not to move. It would be
    possible in the future to change Ruby to use a partially-collecting
    garbage collector that could move objects not referenced by C extensions.)

    Mauricio Fernandez also posted some information on navigating the source
    code of the Ruby interpreter.

    Serious YAML bug (comp.lang.ruby)

    Frantisek Fuka found a bug with YAML in Ruby 1.8.4 (2005-12-24) shipped
    with his Dapper Drake Linux distribution (Ubuntu) where it is limited to
    reading files < 4096 characters long.

    ts said the bug is fixed with more recent versions of 1.8.4 that you can
    download from CVS.

    Francis Hwang:
    > If you need to stick with YAML, I'd recommend getting Ruby from CVS
    > head; it's supposed to contain a newer version of Syck. If you can get
    > away with it, though, I'd suggest using Marshal instead. It's less cool
    > than YAML, but pretty solid otherwise.

    Problems with rb_struct_define and 64 bit Ruby (ruby-talk)

    ts: "Well, the architecture x86_64 was created to make in sort that C
    programmer understand the difference between (int)0 and (void *)0".

    Read this thread if you don't think there's a difference, or that it
    doesn't matter.

    Modules / Documentation / CPAN like repository?? (ruby-talk)

    Paul D. Kraus wondered if Ruby has an equivalent to perldoc - a
    command-line tool for displaying documentation information on standard
    libraries as well as those installed separately.

    James Edward Gray II said that ri is the Ruby command, for example
    "ri Find" or "ri String#split". He noted that documentation is not
    always automatically installed for Ruby, or for third-party libraries.
    "If you build from source, it's important to make install-all."

    James Britt added that has online documentation.

    Calling a Class Method with a class name (comp.lang.ruby)

    This thread (and a couple of others), asked how to get a class from its
    name, without using eval(class_name). The solution is
    Object.const_get(class_name). If you're using Rails, you can also use
    class_name.constantize, which has the benefit of working even when
    class_name is e.g. "A::B::C".

    Running Coach (#82) (ruby-talk)

    Ruby Quiz this week is inspired by Benjohn Barnes and his girlfriend's
    jogging programme, which includes periods of jogging, brisk walking and

    "I was explaining to a friend that it's incredibly difficult for me to
    look at a stop watch and work out in my head if we're supposed to be
    jogging or walking, how many more jogs we've got to do, and when I can
    stop and rest. He suggested: `why not tape yourself giving prompts about
    when to start and stop'."

    Being programmers, we should of course automate this.

    > Write a program to create the tracks for each of the eight weeks. Make
    > it give helpful and enthusiastic advice like "you've got to run for
    > another minute / 30 seconds / 15 seconds ...", "walk now for two
    > minutes, you've got three jogs left", "you're on jog 2 of 6", or "well
    > done, that's your last jog. Don't forget to cool down and stretch!"

    ruby qt (comp.lang.ruby)

    Shea Martin asked if the Ruby/Qt bindings were unmaintained, since all the
    references to it are old, but Richard J. Dale explained that it's due to a
    name change:

    Bindings for Qt1 and Qt2 were called Ruby/Qt, while the Qt3 and Qt4
    bindings are called QtRuby. The latter is complete and is actively

    The book "Rapid GUI Development with QtRuby" was also recommended.

    Which encoding causes fewest problems in Ruby 1.8.2? (ruby-talk)

    Jim Smith wants to know which string encoding works best with Ruby: UTF-8,
    ISO-8859-1 or ISO-8859-15.

    Matz said that all of them will work (with the appropriate -K? option to
    set the encoding), but for UTF-8 you need to be careful when doing
    character-based operations (length and indexing) - use Regexp-based
    methods for these instead of String ones.

    (For example, String#length may return an incorrect value for a UTF-8
    string, but mystring.split(/./).length returns the correct value. Future
    Ruby releases will have better support for different encodings.)

    Set minimum for random number generator (comp.lang.ruby)

    In Python, random.randint(min, max) returns a random integer between min
    and max (inclusive). OrganicFreeStyle asked what the Ruby equivalent to
    this is. "Rand allows you to set the max, but what about the min?"

    ZeD replied: min + rand(max-min)

    That's the exclusive form; you need min + rand(max-min+1) to include the
    maximum in the possible range of values.

    There have been discussions in the past about having a Range#rand method
    that would behave sensibly for a range of integers. For example,
    (1..10).rand would return an integer between 1 and 10 inclusve if the
    following code was defined:

    class Range
    def rand
    min + Kernel.rand(max-min+1)

    (The above naïve version won't work with ranges of anything other than
    integers - not even floats.)

    Creating a future date (comp.lang.ruby)

    How to create the date for a year from today? JimC posted a nice solution
    that uses Date#>>(n), a method that shifts a date by n months.

    require 'date'
    next_year = >> 12

    Getting a list of Processes (ruby-talk)

    Ways of getting a list of running processes in Windows: use the
    `sys/proctable' library, or use win32ole and `winmgmts'.

    An example of the latter was given by Brad:

    def get_process_info()
    procs = WIN32OLE.connect("winmgmts:\\\\.")
    procs.InstancesOf("win32_process").each do |p|

    I love Ruby - But how bright is Ruby's Future? (ruby-talk)

    A poster asks about Ruby's future - are lots of people using it, will it
    be maintained, has he made the right decision in starting to learn Ruby.

    Jim Freeze said "stay tuned, you have made a good choice", and asked if
    he'd noticed all the press lately (particularly around Rails). Linux
    Journal (cover), Dr. Dobbs (cover), Business Week, Wired, Newsweek, and so

    "The press hype may die down, but the infrastructure that is being built
    (and the fact that people like the language) pretty much secure Ruby's
    existence for some time to come."

    Many posts in the thread say that it's worthwhile learning new languages,
    regardless of their popularity, and others discuss the corporate
    acceptance (and acceptability) of Ruby compared with Python. (Coverage in
    business magazines certainly helps.)

    reading data from excel (ruby-talk)

    Parvinder Ghotra wants to read data from Excel files using Ruby, and was
    recommended to either use Win32OLE to get Excel itself to read the files,
    or to use the `parseexcel' library.

    EURUKO 2006 (ruby-talk)

    Stephan Kämper pondered the location for EURUKO 2006 (European Ruby
    Conference), saying he would quite like Hamburg or Copenhagen, but
    wouldn't mind Munich again.

    Others "voted" on these locations, with Tim Becker adding Köln (Cologne)
    as an option, and Laurent Sansonetti suggesting Brussels, noting that
    FOSDEM (Free and Open Source Developers European Meeting) is successfully
    held there every year.

    Robert Klemme said the location will ultimately be up to whichever person
    or organisation makes the effort to organise it.

    New Releases

    Releases this week include ...

    DRMAA for Ruby (ruby-talk)

    "DRMAA is an interface standard for job submission and control to
    Distributed Resource Manager (DRM) systems such as Condor,
    PBS/OpenPBS/Torque, Platform LSF, Sun's N1 Grid Engine and others."

    Andreas Haas created DRMAA bindings for Ruby (with Ruby/DL).

    Ruby-GetText-Package-1.6.0 (ruby-talk)

    Masao Mutoh released a new Ruby-GetText-Package (a localisation library
    and tool similar to GNU gettext - it assists developers in creating
    programs that can output messages in different languages).

    Chinese (zh_CN) and Italian (it) translations are now included, and the
    management of textdomains is improved.

    RbYAML 0.2: Pure Ruby YAML 1.1 parser and emitter (ruby-talk)

    The pure-Ruby YAML parser and emitter, RbYAML, had a major release, with
    performance improvements, better test cases, bugfixes and more.

    Mongrel Pre-Release 0.3.13 -- Katana Suicide Concurrency (ruby-talk)

    A Mongrel pre-release (Mongrel is a web server for Rails, Camping and
    Nitro web applications) was announced by Zed Shaw. The official 0.3.13
    will be out soon, and will be followed by 0.4 (aka "Enterprisey Edition

    Ruby Reports 0.4.5 (ruby-talk)

    Ruby Reports 0.4.4 and 0.4.5, the "Hey, I've got a brand new formatting
    engine" and "Arbitrary Additions to DataSet" editions were released by
    Gregory Brown.

    Ruby Reports is a 2006 Google Summer of Code project, and Gregory is
    aiming to have a release every 10 days for the rest of (Northern
    Hemisphere) summer.

    Acknowledgements: "Dudley Flanders for his excellent work on DataSets in
    this release."

    Madeleine 0.7.3 (ruby-talk)

    "Madeleine is a Ruby implementation of Object Prevalence: Transparent
    persistence of business objects using command logging and snapshots."

    This release fixes a win32 bug introduced in the last. "The other news is
    that we're moving to Rich Kilmer's basement, i.e. RubyForge, so update
    your links!"

    rubyrss-1.0 (ruby-talk)

    RubyRSS is a new tool for parsing and generating RSS feeds. Kouhei Sutou
    noted that it is similar to RSS Maker, which is part of Ruby's standard

    FreeRIDE 0.9.6 - The Free Ruby IDE (ruby-talk)

    Laurent Julliard announced a bugfix release of FreeRIDE.

    "FreeRIDE aims to be a full-featured, first-class IDE on a par with those
    available for other languages, with all the best-of-breed features that
    you would expect in a high-end IDE."

    ruby-prof for windows (ruby-talk)

    Charlie Savage ported Shugo Maeda's fast Ruby profiler "ruby-prof" to
    Windows, including a binary for easy installation.

    "ruby-prof is a code profiler like the built-in ruby profiler but is
    orders of magnitude faster."

    slave-0.0.1 (ruby-talk)

    Ara.T.Howard issued the first slave release, a library for creating
    master-child processes that communicate via DRb, with heartbeat

    "The purpose of Slaves is to be able to easily set up a collection of
    objects communicating via drb protocols instead of having to use IPC."

    rq-2.3.3 (ruby-talk)

    "ruby queue (rq) is a zero-admin zero-configuration tool used to create
    instant unix clusters."

    Ara.T.Howard fixed some bugs, added the ability to dump
    stdin/stderr/stdout and made `rotate' more robust.
    Tim Sutherland, Jun 14, 2006
    1. Advertisements

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Tim Sutherland

    Ruby Weekly News 30th May - 5th June 2005

    Tim Sutherland, Jun 7, 2005, in forum: Ruby
    Martin DeMello
    Jun 7, 2005
  2. Tim Sutherland
    Christophe Grandsire
    Sep 12, 2005
  3. Tim Sutherland
    Dec 13, 2005
  4. Tim Sutherland
    Tim Sutherland
    Feb 7, 2006
  5. Tim Sutherland
    Tim Sutherland
    Mar 7, 2006

Share This Page