From: Nathaniel Talbott Date: 2001-09-22T08:22:16+09:00 Subject: [ruby-talk:21504] Replacement for __FILE__ == $0 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C142CA.1FBFB910 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable OK, this will probably end up being an RCR, but first I want to get some feedback. Does this construct bother anybody else?: if __FILE__ =3D=3D $0 ... Do stuff ... end 'Cause it bothers me. Here's what bothers me about it: 1) It looks ugly. It's just my personal opinion, but it violates my = sense of aesthetics. 2) It doesn't communicate. When I first saw it in a file, I thought, = "What in the world are they doing here!" It looked like some kind of black = magic. It seems to violate the "Principle of Least Research," which means that = for most things Ruby, I don't even have to look up what a construct is = doing, it's just obvious. 3) It's duplicated code between each file that uses it. OK, so not very much, but one could type the wrong global or something and not get the expected results. 4) It uses two globals. 'Nuff said. Obviously this is useful functionality, and I can envision a really = nifty replacement. There are two things I'm lacking, though: a name, and an implementation. Here's how I'd like it to behave: run_if_start_file { # This name makes me gag! Help! puts "I will only print if this file is the file ruby was started with" } Does that express intent better? Is it more "Ruby?" Clearly implementation is problematic, since this won't work unless it's defined in the file you're wanting to use it for, which kind of defeats = the purpose: def run_if_start_file if __FILE__ =3D=3D $0 yield end end So if someone has a better name and/or implementation, I'd love to = submit this as an RCR. I'll keep mulling it over myself, too. Nathaniel <:((>< + - - | RoleModel Software, Inc. | EQUIP VI=20 ------=_NextPart_000_0000_01C142CA.1FBFB910 Content-Type: application/ms-tnef; name="winmail.dat" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="winmail.dat" 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 AAADAJIQAAAAAAIBFDoBAAAAEAAAAGRFUi1/hRVJrU5NfeyFuPoDAN4/n04AAAMACVkBAAAAAwBA ZQAAAAALABOACCAGAAAAAADAAAAAAAAARgAAAAADhQAAAAAAAAMAJ4AIIAYAAAAAAMAAAAAAAABG AAAAAAGFAAAAAAAAAwA1gAggBgAAAAAAwAAAAAAAAEYAAAAAEIUAAAAAAAADADaACCAGAAAAAADA AAAAAAAARgAAAABShQAA45ABAB4AN4AIIAYAAAAAAMAAAAAAAABGAAAAAFSFAAABAAAABQAAADEw LjAAAAAACwA4gAggBgAAAAAAwAAAAAAAAEYAAAAABoUAAAAAAAALADmACCAGAAAAAADAAAAAAAAA RgAAAAAOhQAAAAAAAAMAO4AIIAYAAAAAAMAAAAAAAABGAAAAABiFAAAAAAAACwBngAggBgAAAAAA wAAAAAAAAEYAAAAAgoUAAAEAAAACAfgPAQAAABAAAACAqsMSbmtUTJ5ehQ9FyPNSAgH6DwEAAAAQ AAAAgKrDEm5rVEyeXoUPRcjzUgIB+w8BAAAAlgAAAAAAAAA4obsQBeUQGqG7CAArKlbCAABtc3Bz dC5kbGwAAAAAAE5JVEH5v7gBAKoAN9luAAAAQzpcRG9jdW1lbnRzIGFuZCBTZXR0aW5nc1xudGFs Ym90dFxMb2NhbCBTZXR0aW5nc1xBcHBsaWNhdGlvbiBEYXRhXE1pY3Jvc29mdFxPdXRsb29rXE91 dGxvb2sucHN0AAAAAwD+DwUAAAADAA00/TcCAAIBFDQBAAAAEAAAAE5JVEH5v7gBAKoAN9luAAAC AX8AAQAAADEAAAAwMDAwMDAwMDgwQUFDMzEyNkU2QjU0NEM5RTVFODUwRjQ1QzhGMzUyQTQ1RDJD MDAAAAAAAwAGEFxYNNkDAAcQ3gQAAAMAEBAAAAAAAwAREAAAAAAeAAgQAQAAAGUAAABPSyxUSElT V0lMTFBST0JBQkxZRU5EVVBCRUlOR0FOUkNSLEJVVEZJUlNUSVdBTlRUT0dFVFNPTUVGRUVEQkFD S0RPRVNUSElTQ09OU1RSVUNUQk9USEVSQU5ZQk9EWUVMU0U/AAAAAL+v ------=_NextPart_000_0000_01C142CA.1FBFB910--