CINXE.COM
<html> <script type="text/javascript" src="https://web-static.archive.org/_static/js/bundle-playback.js?v=7YQSqjSh" charset="utf-8"></script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://rubyhacker.com/clrFAQ.html","20240305080602","https://web.archive.org/","web","https://web-static.archive.org/_static/", "1709625962"); </script> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/banner-styles.css?v=p7PEIJWi" /> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <body> <center><font color="red" size="+2">comp.lang.ruby FAQ</font><br></center> <hr color="red"> <p> <i>Last Revised: 2005-04-14</i> <p> This FAQ contains information for those who want to: <ol> <li>learn more about Ruby, and want to <li>post to comp.lang.ruby or to the ruby-lang mail list, or want to <li>provide anonymous feedback to help us improve Ruby. </ol> <p> This FAQ will be posted monthly. If you are reading this material on the mailing list or the newsgroup, note that you can find it on the web at: <a href="https://web.archive.org/web/20240305080602/http://rubyhacker.com/clrFAQ.html">http://rubyhacker.com/clrFAQ.html</a> <!-- added Sept 2003 HF --> <p> A German version of this FAQ is maintained by Josef Schugt. It can be found at: <a href="https://web.archive.org/web/20240305080602/http://oss.erdfunkstelle.de/ruby/">http://oss.edrfunkstelle.de/ruby/</a> <p> Note that this is <i>not</i> the Ruby language FAQ! That FAQ can be found <a href="https://web.archive.org/web/20240305080602/http://www.rubygarden.org/iowa/faqtotum/">here</a>. <hr color="red"> <p> <font color="red">TABLE OF CONTENTS</font><br> <a name="toc"> <ul> <li><a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#tag1">1 About Ruby</a> <li> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#tag11">1.1 What is Ruby?</a> <li> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#tag12">1.2 Where can I find out more about Ruby?</a> <li><a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#tag2">2 About comp.lang.ruby.</a> <li> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#tag21">2.1 Tell me about comp.lang.ruby.</a> <li> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#tag22">2.2 Tell me the posting guidelines for comp.lang.ruby.</a> <li> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#tag23">2.3 Tell me about the prolific Matz poster.</a> <li> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#tag24">2.4 How do the mailing list and newsgroup interrelate?</a> <li> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#tag25">2.5 What are these 6-digit message numbers?</a> <!-- Sept 2003 HF added line --> <li> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#tag26">2.6 What is "POLS"?</a> <li><a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#tag3">3 Anything else?</a> </ul> <hr color="red"> <a name="tag1"> <font color="red">1 About Ruby</font><br> <a name="tag11"> <font color="red">1.1 What is Ruby?</font><br><br> <p> Ruby is a very high level, fully OO programming language. Indeed, Ruby is one of the relatively few pure OO languages. Yet despite its conceptual simplicity, Ruby is still a powerful and practical "industrial strength" development language. <p> Ruby selectively integrates many good ideas taken from Perl, Python, Smalltalk, Eiffel, ADA, CLU, and LISP. Ruby combines these ideas in a natural, well-coordinated system that embodies the principles of least effort and least surprise to a substantially greater extent than most comparable languages — i.e., you get more bang for your buck, and what you write is more likely to give you what you expected to get. Ruby is thus a relatively easy to learn, easy to read, and easy to maintain language; yet it is very powerful and sophisticated. <p> In addition to common OO features, Ruby also has threads, singleton methods, mixins, fully integrated closures and iterators, plus proper meta-classes. Ruby has a true mark-and-sweep garbage collector, which makes code more reliable and simplifies writing extensions. In summary, Ruby provides a very powerful and very easy to deploy "standing on the shoulders of giants" OO scaffolding/framework so that you can more quickly and easily build what you want to build, to do what you want to do. <p> You will find many former (and current) Perl, Python, Java, and C++ users on comp.lang.ruby that can help you get up to speed in Ruby. <p> Finally, Ruby is an "open source" development programming language. <p> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#toc">Back to TOC</a> <br> <br> <hr color="red"> <p> <a name="tag12"> <font color="red">1.2 Where can I find out more about Ruby?</font><br><br> <p> If you're into IRC, check out #ruby-lang on FreeNode. There are also other channels -- see http://rubygarden.org/ruby?RubyOnIRC. <p> There are also many web and print resources listed below: <dl> <dt><a href="https://web.archive.org/web/20240305080602/http://www.ruby-lang.org/en/">Ruby's home web site</a> <dd>Follow the links to documentation, downloads, the Ruby Application Archive, the Ruby mail list archives, and lots of other interesting information. <!-- Nov 2004 added RubyForge, ruby-doc.org --> <dt><a href="https://web.archive.org/web/20240305080602/http://rubyforge.org/">RubyForge</a> <dd>A major repository with hundreds of Ruby projects. <dt><a href="https://web.archive.org/web/20240305080602/http://ruby-doc.org/">RubyDoc.org</a> <dd>A large source of Ruby documentation. <!-- Sept 2003 HF added .COM --> <dt><a href="https://web.archive.org/web/20240305080602/http://www.rubycentral.com/">RubyCentral.COM</a> <dd>Ruby's other major on-line documentation and links site. <!-- Sept 2003 HF added next two --> <dt><a href="https://web.archive.org/web/20240305080602/http://www.rubycentral.org/">RubyCentral.ORG</a> <dd>Home of RubyCentral, Inc. <dt><a href="https://web.archive.org/web/20240305080602/http://www.rubygarden.org/">RubyGarden</a> <dd>An important wiki site, very content-rich <dt><a href="https://web.archive.org/web/20240305080602/http://www.rubygarden.org/iowa/faqtotum/">Ruby FAQ</a> <dt><a href="https://web.archive.org/web/20240305080602/http://www.rubyist.net/~slagell/ruby/index.html">Ruby User's Guide</a> (introductory tutorial) <dt><a href="https://web.archive.org/web/20240305080602/http://poignantguide.net/ruby/">_Why's Poignant Guide to Ruby</a> <dd>A Ruby tutorial on acid, featuring cartoon foxes. <dt><a href="https://web.archive.org/web/20240305080602/http://www.ruby-lang.org/en/doc.html">Ruby Reference Manual</a> <dt><a href="https://web.archive.org/web/20240305080602/http://www.rubycentral.com/ref/">Ruby core reference</a> <dt><b>Note:</b> The list of books below is now frozen. I don't want to maintain this forever. We all hope the number of Ruby books increases. <dt><b>English language Ruby books (recent publication order):</b> <ul> <li><i>Programming Ruby: A Pragmatic Guide</i><br> 2nd edition. See below. <li><i>Making Use of Ruby</i> by Suresh Mahadevan<br> Wiley; ISBN 0-471-21972-X (2002) <li><i>Teach Yourself Ruby in 21 Days</i><br> by Mark Slagell<br> Sams; ISBN: 0672322528 (March, 2002) <li><i>Ruby Developer's Guide</i><br> by Michael Neumann, Robert Feldt, Lyle Johnson<br> Publishers Group West; ISBN: 1928994644 (February, 2002) <li><i>The Ruby Way</i><br> by Hal Fulton<br> Sams; ISBN: 0672320835 (December, 2001) <li><i>Ruby In A Nutshell</i><br> by Yukihiro Matsumoto<br> O'Reilly & Associates; ISBN: 0596002149 (November, 2001) <li><i>Programming Ruby: A Pragmatic Guide</i><br> by Dave Thomas and Andrew Hunt<br> Addison Wesley; ISBN: 0201710897 (2000)<br> (As of Sept 2004, there is a second edition. It is not open- sourced at this time.) <a href="https://web.archive.org/web/20240305080602/http://www.rubycentral.com/book/">Online version</a><br> <!-- Sept 2003 HF added next line --> (Note that this is a <i>legal</i> first edition.)<br> <a href="https://web.archive.org/web/20240305080602/http://www.pragmaticprogrammer.com/downloads/book.html">Download</a> <a href="https://web.archive.org/web/20240305080602/http://www.pragmaticprogrammer.com/ruby/errata/errata.html">Errata</a> </ul> <br> <!-- Sept 2003 HF deleted mention of canceled projects --> <dt><b>German language Ruby books (author alpha order):</b> <ul> <li><i>Das Einsteigerseminar Ruby. Der methodische und ausf黨rliche Einstieg.</i><br> by Dirk Engel and Klaus Spreckelsen<br> ISBN: 3826672429 <li><i>Programmieren mit Ruby</i><br> by Armin Roehrl, Stefan Schmiedl, Clemens Wyss, etc.<br> dpunkt.de; ISBN 3898641511 (February, 2002)<br> Online at: http://www.approximity.com/rubybuch2/node1_main.html <!-- Sept 2003 HF updated next para --> <li><i>Programmieren mit Ruby. Handbuch f黵 den pragmatischen Programmierer</i> (Dave Thomas & Andy Hunt), <br> Addison-Wesley, 2002; ISBN 382731965X. A German translation of the "Pickaxe" (<i>Programming Ruby</i>). <br> <!-- Sept 2003 HF added --> <li><a href="https://web.archive.org/web/20240305080602/http://home.vr-web.de/juergen.katins/ruby/buch/">Pickaxe translation by Juergen Katins</a> </ul> <dt>Search past postings to comp.lang.ruby or the ruby-lang mail list (which have been mirrored to each other since mid-2000): <dd><a href="https://web.archive.org/web/20240305080602/http://groups.google.com/groups?q=comp.lang.ruby">Search comp.lang.ruby</a><br> <a href="https://web.archive.org/web/20240305080602/http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml">Search ruby-talk</a> <dt>Local Ruby users and groups in your area: <dd><a href="https://web.archive.org/web/20240305080602/http://www.pragprog.com/ruby?RubyUserGroups">Ruby User Groups</a> </dl> <p> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#toc">Back to TOC</a> <br> <br> <hr color="red"> <p> <a name="tag2"> <font color="red">2 About comp.lang.ruby</font><br> <a name="tag21"> <font color="red">2.1 Tell me about comp.lang.ruby</font><br><br> comp.lang.ruby was officially approved in early May, 2000. (Conrad Schneiker, the former maintainer of this FAQ, was responsible for the "net paperwork" of creating this group.) Here is the official charter: <pre> CHARTER: comp.lang.ruby The comp.lang.ruby newsgroup is devoted to discussions of the Ruby programming language and related issues. Examples of relevant postings include, but are not limited to, the following subjects: - Bug reports - Announcements of software written with Ruby - Examples of Ruby code - Suggestions for Ruby developers - Requests for help from new Ruby programmers The newsgroup is not moderated. Binaries are prohibited (except the small PGP type). Advertising is prohibited (except for announcements of new Ruby-related products). END CHARTER. </pre> <p> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#toc">Back to TOC</a> <br> <br> <hr color="red"> <p> <a name="tag22"> <font color="red">2.2 Tell me the posting guidelines for comp.lang.ruby.</font><br><br> You should also follow these guidelines for the ruby-list mail list, since it is mirrored to comp.lang.ruby. <ol> <li>ALWAYS be friendly, considerate, tactful, and tasteful. We want to keep this forum hospitable to the growing ranks of newbies, very young people, and their teachers, as well as cater to fire breathing wizards. :-) <li> Keep your content relevant and easy to follow. Try to keep your content brief and to the point, but also try to include all relevant information. <ol type="a" start="a"> <li>The general format guidelines (aka USENET Netiquette) are matters of common sense and common courtesy that make life easier for 3rd parties to follow along (in real time or when perusing archives): <ul> <li>PLEASE NOTE! Include quoted text from previous posts <b>before</b> your responses. And <b>selectively</b> quote as much as is relevant. <li>Use <b>plain</b> text; don't use HTML, RTF, or Word. Most mail or newsreader programs have an option for this; if yours doesn't, get a (freeware) program or use a web- based service that does. <li>Include examples from files as <b>in-line</b> text; don't use attachments. </ul> <li>If reporting a problem, give <b>all</b> the relevant information the first time; this isn't the psychic friends newsgroup. :-) When appropriate, include: <ul> <li>The version of Ruby. ("ruby -v") <li>The compiler name and version used to build Ruby. <li>The OS type and level. ("uname -a") <li>The actual error messages. <li>An example (preferably simple) that produces the problem. </ul> <!-- obsolete since helium was cracked <li>If reporting a bug, please copy (cc:) your post to <a href=mailto:ruby-bugs@ruby-lang.org>ruby-bugs</a>. This will enter your report into the Ruby bug database. You can <a href=http://www.ruby-lang.org/cgi-bin/ruby-bugs>browse the database here.</a> --> </ol> <li>Make the subject line maximally informative, so that people who should be interested will read your post and so that people who wouldn't be interested can easily avoid it. <p><b>Usefully</b> describe the contents of your post.<br> This is OK: <ul> <li>"How can I do x with y on z?" <li>"Problem: did x, expected y, got z." <li>"BUG: doing x with module y crashed z." </ul> This is <b>not</b> OK: <ul> <li>"Please help!!!" <li>"Newbie question" <li>"Need Ruby guru to tell me what's wrong" </ul> These prefixes have become common for subject lines: <ul> <li>[ANN] (for announcements) <li>[BUG] (for bug reports) <li>[OT] (for off-topic, if you must post off-topic) </ul> <li>Finally, be considerate: Don't be too lazy. If you are seeking information, first make a reasonable effort to look it up. As appropriate, check the Ruby home page, check the Ruby FAQ and other documentation, use google.com to search past comp.lang.ruby postings, and so on. </ol> <p> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#toc">Back to TOC</a> <br> <br> <hr color="red"> <p> <a name="tag23"> <font color="red">2.3 Tell me about the prolific Matz poster.</font><br><br> Matz (aka Yukihiro Matsumoto) is the wizard who created Ruby for us, so be nice to him. He is very busy, so be patient when asking questions. See the Ruby home page to find out more about him and his work. I (Conrad Schneiker) founded comp.lang.ruby at his suggestion. Contrary to lots of skepticism, it was approved on the first attempt, with 200 yes votes. <p> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#toc">Back to TOC</a> <br> <br> <hr color="red"> <p> <a name="tag24"> <font color="red">2.4 How do the mailing list and newsgroup interrelate?</font><br><br> The mailing list is older. When the newsgroup was created, they diverged. In mid-2001, Dave Thomas created a two-way gateway that would "mirror" the newsgroup to the list and vice versa. (This was accomplished in 200 lines of Ruby code.) It is not perfect; because of variability in the news feed, sometimes messages are dropped or duplicated. <p> The online archive of the mailing list therefore includes most of the traffic on the newsgroup, excluding the posts that were made before the creation of the gateway. <p> <b>Note:</b> Spam or other inappropriate messages are <i>not</i> the responsibility of Dennis Oelkers, who now maintains the gateway. He does everything in his power to deal with this issue. Do <b>not</b> report spam to his ISP merely because the messages come from his server. <p> Also note that there are some header-related glitches that affect the behavior of the newsreaders and the gateway. Feel free to report any problems you see, but there will always be a certain (very small) percentage of problems that we can't seem to correct. <p> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#toc">Back to TOC</a> <br> <br> <hr color="red"> <p> <a name="tag25"> <font color="red">2.5 What are these 6-digit message numbers?</font><br><br> Historically, every item on the mailing list had a subject starting with a string like: [ruby-talk:99999] <p> The message numbers were convenient since they were strictly serial and formed a good way to refer to a past message. But they interfered with threading; Matz removed them after the matter was put to a vote in early 2002. <p> The news header still refers to this number, should anyone wish to retrieve it. On the mailing list this number can now be found in the <b>X-Mail-Count:</b> header. <p> You can point to a specific message by appending it onto the ruby-talk.com URL; i.e., <code>http://ruby-talk.com/12345</code> will refer to message 12345. (<b>Note</b>: The above was true, but is not currently working.) <p> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#toc">Back to TOC</a> <br> <br> <hr color="red"> <p> <!-- Sept 2003 HF added section --> <a name="tag26"> <font color="red">2.6 What is "POLS"?</font><br><br> <p> POLS is an abbreviation for "Principle of Least Surprise" (also called the <i>Law of Least Astonishment</i>). <p> This term certainly did not originate in the Ruby community, but it has been frequently used there— even overused or abused at times. After all, <i>every</i> language or software system seeks at some level to adhere to this principle. Is any system designed to be unintuitive? <p> It is inappropriate to invoke POLS as a "magic word" when one's individual expectations are not met. Ruby continues to evolve, and Matz often makes changes based on people wishes, needs, or suggestions. But he cannot be bribed or threatened. Make suggestions if you wish, but think twice before mentioning POLS. <p> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#toc">Back to TOC</a> <br> <br> <hr color="red"> <p> <a name="tag3"> <font color="red">3. Anything else?</font><br><br> If you are new to Ruby (or haven't previously taken the Ruby User Survey), please take a moment to anonymously tell us about your programming background and about your Ruby-related interests. The results will be reported back to the Ruby community from time to time. This helps us do a better job of helping each other, and to more effectively expand the Ruby community for our mutual benefit. The survey is <a href="https://web.archive.org/web/20240305080602/http://dev.rubycentral.com/survey.html">here</a>. <p> <!-- Sept 2003 HF deleted Conrad's mail link, no longer accurate --> This FAQ was originally produced by Conrad Schneiker. It is now maintained by <a href="https://web.archive.org/web/20240305080602/mailto:hal9000@hypermetrics.com">Hal Fulton</a>. <p> I'm interested in corrections and suggestions, but remember that the purpose of this FAQ is to be a brief and simple introduction for new comp.lang.ruby readers. <p> In closing, one of the reasons that Ruby was designed to be relatively simple, uniform, yet very powerful was to make serious programming (among other kinds) fun. We hope you will help us keep comp.lang.ruby fun as well. Enjoy. :-) <p> <a href="https://web.archive.org/web/20240305080602/http://hypermetrics.com/rubyhacker/clrFAQ.html#toc">Back to TOC</a> <br> <br> <hr color="red"> <p> </body> </html> <!-- FILE ARCHIVED ON 08:06:02 Mar 05, 2024 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 17:43:27 Mar 01, 2025. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.564 exclusion.robots: 0.031 exclusion.robots.policy: 0.019 esindex: 0.01 cdx.remote: 46.715 LoadShardBlock: 898.518 (3) PetaboxLoader3.datanode: 908.24 (4) PetaboxLoader3.resolve: 87.771 (2) load_resource: 129.313 -->