| |   |
| 1 | GNU GENERAL PUBLIC LICENSE |
| 2 | Version 2, June 1991 |
| 3 | |
| 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. |
| 5 | 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 6 | Everyone is permitted to copy and distribute verbatim copies |
| 7 | of this license document, but changing it is not allowed. |
| 8 | |
| 9 | Preamble |
| 10 | |
| 11 | The licenses for most software are designed to take away your |
| 12 | freedom to share and change it. By contrast, the GNU General Public |
| 13 | License is intended to guarantee your freedom to share and change free |
| 14 | software--to make sure the software is free for all its users. This |
| 15 | General Public License applies to most of the Free Software |
| 16 | Foundation's software and to any other program whose authors commit to |
| 17 | using it. (Some other Free Software Foundation software is covered by |
| 18 | the GNU Library General Public License instead.) You can apply it to |
| 19 | your programs, too. |
| 20 | |
| 21 | When we speak of free software, we are referring to freedom, not |
| 22 | price. Our General Public Licenses are designed to make sure that you |
| 23 | have the freedom to distribute copies of free software (and charge for |
| 24 | this service if you wish), that you receive source code or can get it |
| 25 | if you want it, that you can change the software or use pieces of it |
| 26 | in new free programs; and that you know you can do these things. |
| 27 | |
| 28 | To protect your rights, we need to make restrictions that forbid |
| 29 | anyone to deny you these rights or to ask you to surrender the rights. |
| 30 | These restrictions translate to certain responsibilities for you if you |
| 31 | distribute copies of the software, or if you modify it. |
| 32 | |
| 33 | For example, if you distribute copies of such a program, whether |
| 34 | gratis or for a fee, you must give the recipients all the rights that |
| 35 | you have. You must make sure that they, too, receive or can get the |
| 36 | source code. And you must show them these terms so they know their |
| 37 | rights. |
| 38 | |
| 39 | We protect your rights with two steps: (1) copyright the software, and |
| 40 | (2) offer you this license which gives you legal permission to copy, |
| 41 | distribute and/or modify the software. |
| 42 | |
| 43 | Also, for each author's protection and ours, we want to make certain |
| 44 | that everyone understands that there is no warranty for this free |
| 45 | software. If the software is modified by someone else and passed on, we |
| 46 | want its recipients to know that what they have is not the original, so |
| 47 | that any problems introduced by others will not reflect on the original |
| 48 | authors' reputations. |
| 49 | |
| 50 | Finally, any free program is threatened constantly by software |
| 51 | patents. We wish to avoid the danger that redistributors of a free |
| 52 | program will individually obtain patent licenses, in effect making the |
| 53 | program proprietary. To prevent this, we have made it clear that any |
| 54 | patent must be licensed for everyone's free use or not licensed at all. |
| 55 | |
| 56 | The precise terms and conditions for copying, distribution and |
| 57 | modification follow. |
| 58 | |
| 59 | GNU GENERAL PUBLIC LICENSE |
| 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
| 61 | |
| 62 | 0. This License applies to any program or other work which contains |
| 63 | a notice placed by the copyright holder saying it may be distributed |
| 64 | under the terms of this General Public License. The "Program", below, |
| 65 | refers to any such program or work, and a "work based on the Program" |
| 66 | means either the Program or any derivative work under copyright law: |
| 67 | that is to say, a work containing the Program or a portion of it, |
| 68 | either verbatim or with modifications and/or translated into another |
| 69 | language. (Hereinafter, translation is included without limitation in |
| 70 | the term "modification".) Each licensee is addressed as "you". |
| 71 | |
| 72 | Activities other than copying, distribution and modification are not |
| 73 | covered by this License; they are outside its scope. The act of |
| 74 | running the Program is not restricted, and the output from the Program |
| 75 | is covered only if its contents constitute a work based on the |
| 76 | Program (independent of having been made by running the Program). |
| 77 | Whether that is true depends on what the Program does. |
| 78 | |
| 79 | 1. You may copy and distribute verbatim copies of the Program's |
| 80 | source code as you receive it, in any medium, provided that you |
| 81 | conspicuously and appropriately publish on each copy an appropriate |
| 82 | copyright notice and disclaimer of warranty; keep intact all the |
| 83 | notices that refer to this License and to the absence of any warranty; |
| 84 | and give any other recipients of the Program a copy of this License |
| 85 | along with the Program. |
| 86 | |
| 87 | You may charge a fee for the physical act of transferring a copy, and |
| 88 | you may at your option offer warranty protection in exchange for a fee. |
| 89 | |
| 90 | 2. You may modify your copy or copies of the Program or any portion |
| 91 | of it, thus forming a work based on the Program, and copy and |
| 92 | distribute such modifications or work under the terms of Section 1 |
| 93 | above, provided that you also meet all of these conditions: |
| 94 | |
| 95 | a) You must cause the modified files to carry prominent notices |
| 96 | stating that you changed the files and the date of any change. |
| 97 | |
| 98 | b) You must cause any work that you distribute or publish, that in |
| 99 | whole or in part contains or is derived from the Program or any |
| 100 | part thereof, to be licensed as a whole at no charge to all third |
| 101 | parties under the terms of this License. |
| 102 | |
| 103 | c) If the modified program normally reads commands interactively |
| 104 | when run, you must cause it, when started running for such |
| 105 | interactive use in the most ordinary way, to print or display an |
| 106 | announcement including an appropriate copyright notice and a |
| 107 | notice that there is no warranty (or else, saying that you provide |
| 108 | a warranty) and that users may redistribute the program under |
| 109 | these conditions, and telling the user how to view a copy of this |
| 110 | License. (Exception: if the Program itself is interactive but |
| 111 | does not normally print such an announcement, your work based on |
| 112 | the Program is not required to print an announcement.) |
| 113 | |
| 114 | These requirements apply to the modified work as a whole. If |
| 115 | identifiable sections of that work are not derived from the Program, |
| 116 | and can be reasonably considered independent and separate works in |
| 117 | themselves, then this License, and its terms, do not apply to those |
| 118 | sections when you distribute them as separate works. But when you |
| 119 | distribute the same sections as part of a whole which is a work based |
| 120 | on the Program, the distribution of the whole must be on the terms of |
| 121 | this License, whose permissions for other licensees extend to the |
| 122 | entire whole, and thus to each and every part regardless of who wrote it. |
| 123 | |
| 124 | Thus, it is not the intent of this section to claim rights or contest |
| 125 | your rights to work written entirely by you; rather, the intent is to |
| 126 | exercise the right to control the distribution of derivative or |
| 127 | collective works based on the Program. |
| 128 | |
| 129 | In addition, mere aggregation of another work not based on the Program |
| 130 | with the Program (or with a work based on the Program) on a volume of |
| 131 | a storage or distribution medium does not bring the other work under |
| 132 | the scope of this License. |
| 133 | |
| 134 | 3. You may copy and distribute the Program (or a work based on it, |
| 135 | under Section 2) in object code or executable form under the terms of |
| 136 | Sections 1 and 2 above provided that you also do one of the following: |
| 137 | |
| 138 | a) Accompany it with the complete corresponding machine-readable |
| 139 | source code, which must be distributed under the terms of Sections |
| 140 | 1 and 2 above on a medium customarily used for software interchange; or, |
| 141 | |
| 142 | b) Accompany it with a written offer, valid for at least three |
| 143 | years, to give any third party, for a charge no more than your |
| 144 | cost of physically performing source distribution, a complete |
| 145 | machine-readable copy of the corresponding source code, to be |
| 146 | distributed under the terms of Sections 1 and 2 above on a medium |
| 147 | customarily used for software interchange; or, |
| 148 | |
| 149 | c) Accompany it with the information you received as to the offer |
| 150 | to distribute corresponding source code. (This alternative is |
| 151 | allowed only for noncommercial distribution and only if you |
| 152 | received the program in object code or executable form with such |
| 153 | an offer, in accord with Subsection b above.) |
| 154 | |
| 155 | The source code for a work means the preferred form of the work for |
| 156 | making modifications to it. For an executable work, complete source |
| 157 | code means all the source code for all modules it contains, plus any |
| 158 | associated interface definition files, plus the scripts used to |
| 159 | control compilation and installation of the executable. However, as a |
| 160 | special exception, the source code distributed need not include |
| 161 | anything that is normally distributed (in either source or binary |
| 162 | form) with the major components (compiler, kernel, and so on) of the |
| 163 | operating system on which the executable runs, unless that component |
| 164 | itself accompanies the executable. |
| 165 | |
| 166 | If distribution of executable or object code is made by offering |
| 167 | access to copy from a designated place, then offering equivalent |
| 168 | access to copy the source code from the same place counts as |
| 169 | distribution of the source code, even though third parties are not |
| 170 | compelled to copy the source along with the object code. |
| 171 | |
| 172 | 4. You may not copy, modify, sublicense, or distribute the Program |
| 173 | except as expressly provided under this License. Any attempt |
| 174 | otherwise to copy, modify, sublicense or distribute the Program is |
| 175 | void, and will automatically terminate your rights under this License. |
| 176 | However, parties who have received copies, or rights, from you under |
| 177 | this License will not have their licenses terminated so long as such |
| 178 | parties remain in full compliance. |
| 179 | |
| 180 | 5. You are not required to accept this License, since you have not |
| 181 | signed it. However, nothing else grants you permission to modify or |
| 182 | distribute the Program or its derivative works. These actions are |
| 183 | prohibited by law if you do not accept this License. Therefore, by |
| 184 | modifying or distributing the Program (or any work based on the |
| 185 | Program), you indicate your acceptance of this License to do so, and |
| 186 | all its terms and conditions for copying, distributing or modifying |
| 187 | the Program or works based on it. |
| 188 | |
| 189 | 6. Each time you redistribute the Program (or any work based on the |
| 190 | Program), the recipient automatically receives a license from the |
| 191 | original licensor to copy, distribute or modify the Program subject to |
| 192 | these terms and conditions. You may not impose any further |
| 193 | restrictions on the recipients' exercise of the rights granted herein. |
| 194 | You are not responsible for enforcing compliance by third parties to |
| 195 | this License. |
| 196 | |
| 197 | 7. If, as a consequence of a court judgment or allegation of patent |
| 198 | infringement or for any other reason (not limited to patent issues), |
| 199 | conditions are imposed on you (whether by court order, agreement or |
| 200 | otherwise) that contradict the conditions of this License, they do not |
| 201 | excuse you from the conditions of this License. If you cannot |
| 202 | distribute so as to satisfy simultaneously your obligations under this |
| 203 | License and any other pertinent obligations, then as a consequence you |
| 204 | may not distribute the Program at all. For example, if a patent |
| 205 | license would not permit royalty-free redistribution of the Program by |
| 206 | all those who receive copies directly or indirectly through you, then |
| 207 | the only way you could satisfy both it and this License would be to |
| 208 | refrain entirely from distribution of the Program. |
| 209 | |
| 210 | If any portion of this section is held invalid or unenforceable under |
| 211 | any particular circumstance, the balance of the section is intended to |
| 212 | apply and the section as a whole is intended to apply in other |
| 213 | circumstances. |
| 214 | |
| 215 | It is not the purpose of this section to induce you to infringe any |
| 216 | patents or other property right claims or to contest validity of any |
| 217 | such claims; this section has the sole purpose of protecting the |
| 218 | integrity of the free software distribution system, which is |
| 219 | implemented by public license practices. Many people have made |
| 220 | generous contributions to the wide range of software distributed |
| 221 | through that system in reliance on consistent application of that |
| 222 | system; it is up to the author/donor to decide if he or she is willing |
| 223 | to distribute software through any other system and a licensee cannot |
| 224 | impose that choice. |
| 225 | |
| 226 | This section is intended to make thoroughly clear what is believed to |
| 227 | be a consequence of the rest of this License. |
| 228 | |
| 229 | 8. If the distribution and/or use of the Program is restricted in |
| 230 | certain countries either by patents or by copyrighted interfaces, the |
| 231 | original copyright holder who places the Program under this License |
| 232 | may add an explicit geographical distribution limitation excluding |
| 233 | those countries, so that distribution is permitted only in or among |
| 234 | countries not thus excluded. In such case, this License incorporates |
| 235 | the limitation as if written in the body of this License. |
| 236 | |
| 237 | 9. The Free Software Foundation may publish revised and/or new versions |
| 238 | of the General Public License from time to time. Such new versions will |
| 239 | be similar in spirit to the present version, but may differ in detail to |
| 240 | address new problems or concerns. |
| 241 | |
| 242 | Each version is given a distinguishing version number. If the Program |
| 243 | specifies a version number of this License which applies to it and "any |
| 244 | later version", you have the option of following the terms and conditions |
| 245 | either of that version or of any later version published by the Free |
| 246 | Software Foundation. If the Program does not specify a version number of |
| 247 | this License, you may choose any version ever published by the Free Software |
| 248 | Foundation. |
| 249 | |
| 250 | 10. If you wish to incorporate parts of the Program into other free |
| 251 | programs whose distribution conditions are different, write to the author |
| 252 | to ask for permission. For software which is copyrighted by the Free |
| 253 | Software Foundation, write to the Free Software Foundation; we sometimes |
| 254 | make exceptions for this. Our decision will be guided by the two goals |
| 255 | of preserving the free status of all derivatives of our free software and |
| 256 | of promoting the sharing and reuse of software generally. |
| 257 | |
| 258 | NO WARRANTY |
| 259 | |
| 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY |
| 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN |
| 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES |
| 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED |
| 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS |
| 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE |
| 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, |
| 268 | REPAIR OR CORRECTION. |
| 269 | |
| 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
| 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
| 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
| 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING |
| 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED |
| 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY |
| 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER |
| 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
| 278 | POSSIBILITY OF SUCH DAMAGES. |
| 279 | |
| 280 | END OF TERMS AND CONDITIONS |
| 281 | |
| 282 | How to Apply These Terms to Your New Programs |
| 283 | |
| 284 | If you develop a new program, and you want it to be of the greatest |
| 285 | possible use to the public, the best way to achieve this is to make it |
| 286 | free software which everyone can redistribute and change under these terms. |
| 287 | |
| 288 | To do so, attach the following notices to the program. It is safest |
| 289 | to attach them to the start of each source file to most effectively |
| 290 | convey the exclusion of warranty; and each file should have at least |
| 291 | the "copyright" line and a pointer to where the full notice is found. |
| 292 | |
| 293 | <one line to give the program's name and a brief idea of what it does.> |
| 294 | Copyright (C) <year> <name of author> |
| 295 | |
| 296 | This program is free software; you can redistribute it and/or modify |
| 297 | it under the terms of the GNU General Public License as published by |
| 298 | the Free Software Foundation; either version 2 of the License, or |
| 299 | (at your option) any later version. |
| 300 | |
| 301 | This program is distributed in the hope that it will be useful, |
| 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 304 | GNU General Public License for more details. |
| 305 | |
| 306 | You should have received a copy of the GNU General Public License |
| 307 | along with this program; if not, write to the Free Software |
| 308 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 309 | |
| 310 | |
| 311 | Also add information on how to contact you by electronic and paper mail. |
| 312 | |
| 313 | If the program is interactive, make it output a short notice like this |
| 314 | when it starts in an interactive mode: |
| 315 | |
| 316 | Gnomovision version 69, Copyright (C) year name of author |
| 317 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
| 318 | This is free software, and you are welcome to redistribute it |
| 319 | under certain conditions; type `show c' for details. |
| 320 | |
| 321 | The hypothetical commands `show w' and `show c' should show the appropriate |
| 322 | parts of the General Public License. Of course, the commands you use may |
| 323 | be called something other than `show w' and `show c'; they could even be |
| 324 | mouse-clicks or menu items--whatever suits your program. |
| 325 | |
| 326 | You should also get your employer (if you work as a programmer) or your |
| 327 | school, if any, to sign a "copyright disclaimer" for the program, if |
| 328 | necessary. Here is a sample; alter the names: |
| 329 | |
| 330 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program |
| 331 | `Gnomovision' (which makes passes at compilers) written by James Hacker. |
| 332 | |
| 333 | <signature of Ty Coon>, 1 April 1989 |
| 334 | Ty Coon, President of Vice |
| 335 | |
| 336 | This General Public License does not permit incorporating your program into |
| 337 | proprietary programs. If your program is a subroutine library, you may |
| 338 | consider it more useful to permit linking proprietary applications with the |
| 339 | library. If this is what you want to do, use the GNU Library General |
| 340 | Public License instead of this License. |
| toggle raw diff |
--- /dev/null
+++ b/GPL-LICENSE
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License. |
| |   |
| 1 | | == Welcome to Rails |
| 2 | | |
| 3 | | Rails is a web-application and persistence framework that includes everything |
| 4 | | needed to create database-backed web-applications according to the |
| 5 | | Model-View-Control pattern of separation. This pattern splits the view (also |
| 6 | | called the presentation) into "dumb" templates that are primarily responsible |
| 7 | | for inserting pre-built data in between HTML tags. The model contains the |
| 8 | | "smart" domain objects (such as Account, Product, Person, Post) that holds all |
| 9 | | the business logic and knows how to persist themselves to a database. The |
| 10 | | controller handles the incoming requests (such as Save New Account, Update |
| 11 | | Product, Show Post) by manipulating the model and directing data to the view. |
| 12 | | |
| 13 | | In Rails, the model is handled by what's called an object-relational mapping |
| 14 | | layer entitled Active Record. This layer allows you to present the data from |
| 15 | | database rows as objects and embellish these data objects with business logic |
| 16 | | methods. You can read more about Active Record in |
| 17 | | link:files/vendor/rails/activerecord/README.html. |
| 18 | | |
| 19 | | The controller and view are handled by the Action Pack, which handles both |
| 20 | | layers by its two parts: Action View and Action Controller. These two layers |
| 21 | | are bundled in a single package due to their heavy interdependence. This is |
| 22 | | unlike the relationship between the Active Record and Action Pack that is much |
| 23 | | more separate. Each of these packages can be used independently outside of |
| 24 | | Rails. You can read more about Action Pack in |
| 25 | | link:files/vendor/rails/actionpack/README.html. |
| 26 | | |
| 27 | | |
| 28 | | == Getting Started |
| 29 | | |
| 30 | | 1. At the command prompt, start a new Rails application using the <tt>rails</tt> command |
| 31 | | and your application name. Ex: rails myapp |
| 32 | | (If you've downloaded Rails in a complete tgz or zip, this step is already done) |
| 33 | | 2. Change directory into myapp and start the web server: <tt>script/server</tt> (run with --help for options) |
| 34 | | 3. Go to http://localhost:3000/ and get "Welcome aboard: You’re riding the Rails!" |
| 35 | | 4. Follow the guidelines to start developing your application |
| 36 | | |
| 37 | | |
| 38 | | == Web Servers |
| 39 | | |
| 40 | | By default, Rails will try to use Mongrel and lighttpd if they are installed, otherwise |
| 41 | | Rails will use WEBrick, the webserver that ships with Ruby. When you run script/server, |
| 42 | | Rails will check if Mongrel exists, then lighttpd and finally fall back to WEBrick. This ensures |
| 43 | | that you can always get up and running quickly. |
| 44 | | |
| 45 | | Mongrel is a Ruby-based webserver with a C component (which requires compilation) that is |
| 46 | | suitable for development and deployment of Rails applications. If you have Ruby Gems installed, |
| 47 | | getting up and running with mongrel is as easy as: <tt>gem install mongrel</tt>. |
| 48 | | More info at: http://mongrel.rubyforge.org |
| 49 | | |
| 50 | | If Mongrel is not installed, Rails will look for lighttpd. It's considerably faster than |
| 51 | | Mongrel and WEBrick and also suited for production use, but requires additional |
| 52 | | installation and currently only works well on OS X/Unix (Windows users are encouraged |
| 53 | | to start with Mongrel). We recommend version 1.4.11 and higher. You can download it from |
| 54 | | http://www.lighttpd.net. |
| 55 | | |
| 56 | | And finally, if neither Mongrel or lighttpd are installed, Rails will use the built-in Ruby |
| 57 | | web server, WEBrick. WEBrick is a small Ruby web server suitable for development, but not |
| 58 | | for production. |
| 59 | | |
| 60 | | But of course its also possible to run Rails on any platform that supports FCGI. |
| 61 | | Apache, LiteSpeed, IIS are just a few. For more information on FCGI, |
| 62 | | please visit: http://wiki.rubyonrails.com/rails/pages/FastCGI |
| 63 | | |
| 64 | | |
| 65 | | == Debugging Rails |
| 66 | | |
| 67 | | Sometimes your application goes wrong. Fortunately there are a lot of tools that |
| 68 | | will help you debug it and get it back on the rails. |
| 69 | | |
| 70 | | First area to check is the application log files. Have "tail -f" commands running |
| 71 | | on the server.log and development.log. Rails will automatically display debugging |
| 72 | | and runtime information to these files. Debugging info will also be shown in the |
| 73 | | browser on requests from 127.0.0.1. |
| 74 | | |
| 75 | | You can also log your own messages directly into the log file from your code using |
| 76 | | the Ruby logger class from inside your controllers. Example: |
| 77 | | |
| 78 | | class WeblogController < ActionController::Base |
| 79 | | def destroy |
| 80 | | @weblog = Weblog.find(params[:id]) |
| 81 | | @weblog.destroy |
| 82 | | logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!") |
| 83 | | end |
| 84 | | end |
| 85 | | |
| 86 | | The result will be a message in your log file along the lines of: |
| 87 | | |
| 88 | | Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1 |
| 89 | | |
| 90 | | More information on how to use the logger is at http://www.ruby-doc.org/core/ |
| 91 | | |
| 92 | | Also, Ruby documentation can be found at http://www.ruby-lang.org/ including: |
| 93 | | |
| 94 | | * The Learning Ruby (Pickaxe) Book: http://www.ruby-doc.org/docs/ProgrammingRuby/ |
| 95 | | * Learn to Program: http://pine.fm/LearnToProgram/ (a beginners guide) |
| 96 | | |
| 97 | | These two online (and free) books will bring you up to speed on the Ruby language |
| 98 | | and also on programming in general. |
| 99 | | |
| 100 | | |
| 101 | | == Debugger |
| 102 | | |
| 103 | | Debugger support is available through the debugger command when you start your Mongrel or |
| 104 | | Webrick server with --debugger. This means that you can break out of execution at any point |
| 105 | | in the code, investigate and change the model, AND then resume execution! Example: |
| 106 | | |
| 107 | | class WeblogController < ActionController::Base |
| 108 | | def index |
| 109 | | @posts = Post.find(:all) |
| 110 | | debugger |
| 111 | | end |
| 112 | | end |
| 113 | | |
| 114 | | So the controller will accept the action, run the first line, then present you |
| 115 | | with a IRB prompt in the server window. Here you can do things like: |
| 116 | | |
| 117 | | >> @posts.inspect |
| 118 | | => "[#<Post:0x14a6be8 @attributes={\"title\"=>nil, \"body\"=>nil, \"id\"=>\"1\"}>, |
| 119 | | #<Post:0x14a6620 @attributes={\"title\"=>\"Rails you know!\", \"body\"=>\"Only ten..\", \"id\"=>\"2\"}>]" |
| 120 | | >> @posts.first.title = "hello from a debugger" |
| 121 | | => "hello from a debugger" |
| 122 | | |
| 123 | | ...and even better is that you can examine how your runtime objects actually work: |
| 124 | | |
| 125 | | >> f = @posts.first |
| 126 | | => #<Post:0x13630c4 @attributes={"title"=>nil, "body"=>nil, "id"=>"1"}> |
| 127 | | >> f. |
| 128 | | Display all 152 possibilities? (y or n) |
| 129 | | |
| 130 | | Finally, when you're ready to resume execution, you enter "cont" |
| 131 | | |
| 132 | | |
| 133 | | == Console |
| 134 | | |
| 135 | | You can interact with the domain model by starting the console through <tt>script/console</tt>. |
| 136 | | Here you'll have all parts of the application configured, just like it is when the |
| 137 | | application is running. You can inspect domain models, change values, and save to the |
| 138 | | database. Starting the script without arguments will launch it in the development environment. |
| 139 | | Passing an argument will specify a different environment, like <tt>script/console production</tt>. |
| 140 | | |
| 141 | | To reload your controllers and models after launching the console run <tt>reload!</tt> |
| 142 | | |
| 143 | | |
| 144 | | == Description of Contents |
| 145 | | |
| 146 | | app |
| 147 | | Holds all the code that's specific to this particular application. |
| 148 | | |
| 149 | | app/controllers |
| 150 | | Holds controllers that should be named like weblogs_controller.rb for |
| 151 | | automated URL mapping. All controllers should descend from ApplicationController |
| 152 | | which itself descends from ActionController::Base. |
| 153 | | |
| 154 | | app/models |
| 155 | | Holds models that should be named like post.rb. |
| 156 | | Most models will descend from ActiveRecord::Base. |
| 157 | | |
| 158 | | app/views |
| 159 | | Holds the template files for the view that should be named like |
| 160 | | weblogs/index.erb for the WeblogsController#index action. All views use eRuby |
| 161 | | syntax. |
| 162 | | |
| 163 | | app/views/layouts |
| 164 | | Holds the template files for layouts to be used with views. This models the common |
| 165 | | header/footer method of wrapping views. In your views, define a layout using the |
| 166 | | <tt>layout :default</tt> and create a file named default.erb. Inside default.erb, |
| 167 | | call <% yield %> to render the view using this layout. |
| 168 | | |
| 169 | | app/helpers |
| 170 | | Holds view helpers that should be named like weblogs_helper.rb. These are generated |
| 171 | | for you automatically when using script/generate for controllers. Helpers can be used to |
| 172 | | wrap functionality for your views into methods. |
| 173 | | |
| 174 | | config |
| 175 | | Configuration files for the Rails environment, the routing map, the database, and other dependencies. |
| 176 | | |
| 177 | | db |
| 178 | | Contains the database schema in schema.rb. db/migrate contains all |
| 179 | | the sequence of Migrations for your schema. |
| 180 | | |
| 181 | | doc |
| 182 | | This directory is where your application documentation will be stored when generated |
| 183 | | using <tt>rake doc:app</tt> |
| 184 | | |
| 185 | | lib |
| 186 | | Application specific libraries. Basically, any kind of custom code that doesn't |
| 187 | | belong under controllers, models, or helpers. This directory is in the load path. |
| 188 | | |
| 189 | | public |
| 190 | | The directory available for the web server. Contains subdirectories for images, stylesheets, |
| 191 | | and javascripts. Also contains the dispatchers and the default HTML files. This should be |
| 192 | | set as the DOCUMENT_ROOT of your web server. |
| 193 | | |
| 194 | | script |
| 195 | | Helper scripts for automation and generation. |
| 196 | | |
| 197 | | test |
| 198 | | Unit and functional tests along with fixtures. When using the script/generate scripts, template |
| 199 | | test files will be generated for you and placed in this directory. |
| 200 | | |
| 201 | | vendor |
| 202 | | External libraries that the application depends on. Also includes the plugins subdirectory. |
| 203 | | This directory is in the load path. |
| 1 | Gitorious.org -- Free open source hosting with a twist! |
| 2 | Copyright (C) 2007 Johan Sørensen |
| 3 | |
| 4 | This program is free software; you can redistribute it and/or modify |
| 5 | it under the terms of the GNU General Public License as published by |
| 6 | the Free Software Foundation; either version 2 of the License, or |
| 7 | (at your option) any later version. |
| 8 | |
| 9 | This program is distributed in the hope that it will be useful, |
| 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 12 | GNU General Public License for more details. |
| 13 | |
| 14 | You should have received a copy of the GNU General Public License |
| 15 | along with this program; if not, write to the Free Software |
| 16 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| toggle raw diff |
--- a/README
+++ b/README
@@ -1,203 +1,16 @@
-== Welcome to Rails
-
-Rails is a web-application and persistence framework that includes everything
-needed to create database-backed web-applications according to the
-Model-View-Control pattern of separation. This pattern splits the view (also
-called the presentation) into "dumb" templates that are primarily responsible
-for inserting pre-built data in between HTML tags. The model contains the
-"smart" domain objects (such as Account, Product, Person, Post) that holds all
-the business logic and knows how to persist themselves to a database. The
-controller handles the incoming requests (such as Save New Account, Update
-Product, Show Post) by manipulating the model and directing data to the view.
-
-In Rails, the model is handled by what's called an object-relational mapping
-layer entitled Active Record. This layer allows you to present the data from
-database rows as objects and embellish these data objects with business logic
-methods. You can read more about Active Record in
-link:files/vendor/rails/activerecord/README.html.
-
-The controller and view are handled by the Action Pack, which handles both
-layers by its two parts: Action View and Action Controller. These two layers
-are bundled in a single package due to their heavy interdependence. This is
-unlike the relationship between the Active Record and Action Pack that is much
-more separate. Each of these packages can be used independently outside of
-Rails. You can read more about Action Pack in
-link:files/vendor/rails/actionpack/README.html.
-
-
-== Getting Started
-
-1. At the command prompt, start a new Rails application using the <tt>rails</tt> command
- and your application name. Ex: rails myapp
- (If you've downloaded Rails in a complete tgz or zip, this step is already done)
-2. Change directory into myapp and start the web server: <tt>script/server</tt> (run with --help for options)
-3. Go to http://localhost:3000/ and get "Welcome aboard: You’re riding the Rails!"
-4. Follow the guidelines to start developing your application
-
-
-== Web Servers
-
-By default, Rails will try to use Mongrel and lighttpd if they are installed, otherwise
-Rails will use WEBrick, the webserver that ships with Ruby. When you run script/server,
-Rails will check if Mongrel exists, then lighttpd and finally fall back to WEBrick. This ensures
-that you can always get up and running quickly.
-
-Mongrel is a Ruby-based webserver with a C component (which requires compilation) that is
-suitable for development and deployment of Rails applications. If you have Ruby Gems installed,
-getting up and running with mongrel is as easy as: <tt>gem install mongrel</tt>.
-More info at: http://mongrel.rubyforge.org
-
-If Mongrel is not installed, Rails will look for lighttpd. It's considerably faster than
-Mongrel and WEBrick and also suited for production use, but requires additional
-installation and currently only works well on OS X/Unix (Windows users are encouraged
-to start with Mongrel). We recommend version 1.4.11 and higher. You can download it from
-http://www.lighttpd.net.
-
-And finally, if neither Mongrel or lighttpd are installed, Rails will use the built-in Ruby
-web server, WEBrick. WEBrick is a small Ruby web server suitable for development, but not
-for production.
-
-But of course its also possible to run Rails on any platform that supports FCGI.
-Apache, LiteSpeed, IIS are just a few. For more information on FCGI,
-please visit: http://wiki.rubyonrails.com/rails/pages/FastCGI
-
-
-== Debugging Rails
-
-Sometimes your application goes wrong. Fortunately there are a lot of tools that
-will help you debug it and get it back on the rails.
-
-First area to check is the application log files. Have "tail -f" commands running
-on the server.log and development.log. Rails will automatically display debugging
-and runtime information to these files. Debugging info will also be shown in the
-browser on requests from 127.0.0.1.
-
-You can also log your own messages directly into the log file from your code using
-the Ruby logger class from inside your controllers. Example:
-
- class WeblogController < ActionController::Base
- def destroy
- @weblog = Weblog.find(params[:id])
- @weblog.destroy
- logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!")
- end
- end
-
-The result will be a message in your log file along the lines of:
-
- Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1
-
-More information on how to use the logger is at http://www.ruby-doc.org/core/
-
-Also, Ruby documentation can be found at http://www.ruby-lang.org/ including:
-
-* The Learning Ruby (Pickaxe) Book: http://www.ruby-doc.org/docs/ProgrammingRuby/
-* Learn to Program: http://pine.fm/LearnToProgram/ (a beginners guide)
-
-These two online (and free) books will bring you up to speed on the Ruby language
-and also on programming in general.
-
-
-== Debugger
-
-Debugger support is available through the debugger command when you start your Mongrel or
-Webrick server with --debugger. This means that you can break out of execution at any point
-in the code, investigate and change the model, AND then resume execution! Example:
-
- class We |