--------------enig38CC852C2FED546CA91A3E9B
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Sebastian Reid wrote:
> Hi all.
> 
>     I've been working on some Ruby projects using the Rails framework
> and getting on well, however recently I've started on some projects
> using Ruby alone and have run into some issues as the task gets a little
> more complicated.
> 
>     One particular script is giving me trouble and I suspect it is due
> to my Perly ways.  Below is a pastebin of the code.  As some I'm sure
> can tell, it is an rbot plugin that right now doesn't do a whole lot.
> 
> http://pastebin.com/822611
> 
>     The highlighted line is flagging up the error:
> 
> TypeError: no implicit conversion from nil to integer
> 
>     on line 18 (highlighted).
> 
>     Now this is looking to me like a variable instantiation issue whichrings us back to Perl.  In Perl that line would be perfectly legal
> (though some would debate its elegance) and hashes and arrays would be
> created as and when required.
> 

In Ruby, only instance variables are autovivified to nil, and that by
itself is a behaviour that gets on my nerves (typo-prone).

From the code it looks @registry should be an object (maybe use a
Struct) instead of a Hash, and you should preinitialise its contents to
empty arrays and whatnot in its initialize method.

> 
>     I'm willing to accept that this may not be the best way to do things
> in Ruby, thus I come to you to ask for a quick rundown on best practices
> in these situations.
> 
>     I've played around with default procs and the like in the
> initialisation routine to no avail.  

Using blocks to initialize hashes / arrays is fine when not nested,
otherwise things get messy. Clean up your data structure initialisation
to be explicit?

David Vallner


--------------enig38CC852C2FED546CA91A3E9B
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (MingW32)

iD8DBQFFV1eAy6MhrS8astoRAl2JAJ0R3f8MDV/VCx2/OhT+1Mxag1vAcgCfRfDG
ZpGORMhRTE0zP3StHYb3oNU3T
-----END PGP SIGNATURE-----

--------------enig38CC852C2FED546CA91A3E9B--