2018-11-02 08:21:59 -04:00
|
|
|
[![Build Status](https://travis-ci.org/ruby/ruby.svg?branch=trunk)](https://travis-ci.org/ruby/ruby)
|
2016-01-22 02:02:37 -05:00
|
|
|
[![Build status](https://ci.appveyor.com/api/projects/status/0sy8rrxut4o0k960/branch/trunk?svg=true)](https://ci.appveyor.com/project/ruby/ruby/branch/trunk)
|
2018-11-02 08:21:59 -04:00
|
|
|
[![wercker status](https://app.wercker.com/status/e5e7e1704f62b76525022aa424aef6ef/s/trunk "wercker status")](https://app.wercker.com/project/byKey/e5e7e1704f62b76525022aa424aef6ef)
|
2016-01-22 02:02:37 -05:00
|
|
|
|
2014-01-22 23:59:24 -05:00
|
|
|
# What's Ruby
|
|
|
|
|
|
|
|
Ruby is the interpreted scripting language for quick and easy object-oriented
|
2017-10-21 11:02:25 -04:00
|
|
|
programming. It has many features to process text files and to do system
|
|
|
|
management tasks (as in Perl). It is simple, straight-forward, and
|
2014-01-22 23:59:24 -05:00
|
|
|
extensible.
|
|
|
|
|
|
|
|
## Features of Ruby
|
|
|
|
|
|
|
|
* Simple Syntax
|
2015-06-28 23:09:14 -04:00
|
|
|
* **Normal** Object-oriented Features (e.g. class, method calls)
|
2017-10-21 11:02:25 -04:00
|
|
|
* **Advanced** Object-oriented Features (e.g. mix-in, singleton-method)
|
2014-01-22 23:59:24 -05:00
|
|
|
* Operator Overloading
|
|
|
|
* Exception Handling
|
|
|
|
* Iterators and Closures
|
|
|
|
* Garbage Collection
|
2015-06-28 23:09:14 -04:00
|
|
|
* Dynamic Loading of Object Files (on some architectures)
|
2014-01-22 23:59:24 -05:00
|
|
|
* Highly Portable (works on many Unix-like/POSIX compatible platforms as
|
2017-10-21 11:02:25 -04:00
|
|
|
well as Windows, macOS, Haiku, etc.) cf.
|
2018-06-14 20:19:05 -04:00
|
|
|
https://github.com/ruby/ruby/blob/trunk/doc/contributing.rdoc#platform-maintainers
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
|
|
|
|
## How to get Ruby
|
|
|
|
|
2015-06-28 23:09:14 -04:00
|
|
|
For a complete list of ways to install Ruby, including using third-party tools
|
2014-01-22 23:59:24 -05:00
|
|
|
like rvm, see:
|
|
|
|
|
2016-09-11 06:33:36 -04:00
|
|
|
https://www.ruby-lang.org/en/downloads/
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
The trunk of the Ruby source tree can be checked out with the following
|
|
|
|
command:
|
|
|
|
|
2016-09-11 06:33:36 -04:00
|
|
|
$ svn co https://svn.ruby-lang.org/repos/ruby/trunk/ ruby
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
Or if you are using git then use the following command:
|
|
|
|
|
2017-12-12 21:43:38 -05:00
|
|
|
$ git clone https://github.com/ruby/ruby.git
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2017-10-21 11:02:25 -04:00
|
|
|
There are some other branches under development. Try the following command
|
2015-06-28 23:09:14 -04:00
|
|
|
to see the list of branches:
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2016-09-11 06:33:36 -04:00
|
|
|
$ svn ls https://svn.ruby-lang.org/repos/ruby/branches/
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
Or if you are using git then use the following command:
|
|
|
|
|
2018-07-27 23:34:30 -04:00
|
|
|
$ git ls-remote https://github.com/ruby/ruby.git
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2015-06-28 23:09:14 -04:00
|
|
|
## Ruby home page
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2015-06-28 23:09:14 -04:00
|
|
|
The URL of the Ruby home page is:
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2016-09-11 06:33:36 -04:00
|
|
|
https://www.ruby-lang.org/
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
## Mailing list
|
|
|
|
|
2016-02-20 00:41:20 -05:00
|
|
|
There is a mailing list to talk about Ruby. To subscribe to this list, please
|
2015-06-28 23:09:14 -04:00
|
|
|
send the following phrase:
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2014-01-25 08:18:47 -05:00
|
|
|
subscribe
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
in the mail body (not subject) to the address
|
2018-03-05 02:21:54 -05:00
|
|
|
<ruby-talk-request@ruby-lang.org>.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
## How to compile and install
|
|
|
|
|
|
|
|
This is what you need to do to compile and install Ruby:
|
|
|
|
|
2017-10-21 11:02:25 -04:00
|
|
|
1. If you want to use Microsoft Visual C++ to compile Ruby, read
|
2017-03-20 20:11:46 -04:00
|
|
|
[win32/README.win32](win32/README.win32) instead of this document.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2017-09-29 09:21:17 -04:00
|
|
|
2. If `./configure` does not exist or is older than `configure.ac`, run
|
2015-09-12 03:07:17 -04:00
|
|
|
`autoconf` to (re)generate configure.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2015-09-12 03:07:17 -04:00
|
|
|
3. Run `./configure`, which will generate `config.h` and `Makefile`.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
Some C compiler flags may be added by default depending on your
|
2017-10-21 11:02:25 -04:00
|
|
|
environment. Specify `optflags=..` and `warnflags=..` as necessary to
|
2014-01-22 23:59:24 -05:00
|
|
|
override them.
|
|
|
|
|
|
|
|
4. Edit `defines.h` if you need. Usually this step will not be needed.
|
|
|
|
|
|
|
|
5. Remove comment mark(`#`) before the module names from `ext/Setup` (or add
|
|
|
|
module names if not present), if you want to link modules statically.
|
|
|
|
|
|
|
|
If you don't want to compile non static extension modules (probably on
|
2014-07-13 03:38:47 -04:00
|
|
|
architectures which do not allow dynamic loading), remove comment mark
|
2014-01-22 23:59:24 -05:00
|
|
|
from the line "`#option nodynamic`" in `ext/Setup`.
|
|
|
|
|
|
|
|
Usually this step will not be needed.
|
|
|
|
|
|
|
|
6. Run `make`.
|
|
|
|
|
2017-01-31 05:37:50 -05:00
|
|
|
* On Mac, set RUBY\_CODESIGN environment variable with a signing identity.
|
|
|
|
It uses the identity to sign `ruby` binary. See also codesign(1).
|
|
|
|
|
2014-01-22 23:59:24 -05:00
|
|
|
7. Optionally, run '`make check`' to check whether the compiled Ruby
|
|
|
|
interpreter works well. If you see the message "`check succeeded`", your
|
2017-10-21 11:02:25 -04:00
|
|
|
Ruby works as it should (hopefully).
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2017-11-07 15:07:33 -05:00
|
|
|
8. Optionally, run `make update-gems` and `make extract-gems`.
|
2017-09-18 22:39:40 -04:00
|
|
|
|
|
|
|
If you want to install bundled gems, run `make update-gems` and
|
2017-11-07 15:07:33 -05:00
|
|
|
`make extract-gems` before running `make install`.
|
2017-09-18 22:39:40 -04:00
|
|
|
|
2017-11-07 15:07:33 -05:00
|
|
|
9. Run '`make install`'.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2016-02-20 00:41:20 -05:00
|
|
|
This command will create the following directories and install files into
|
2014-01-22 23:59:24 -05:00
|
|
|
them.
|
|
|
|
|
|
|
|
* `${DESTDIR}${prefix}/bin`
|
|
|
|
* `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}`
|
2015-04-10 20:48:37 -04:00
|
|
|
* `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
|
2014-01-22 23:59:24 -05:00
|
|
|
* `${DESTDIR}${prefix}/lib`
|
|
|
|
* `${DESTDIR}${prefix}/lib/ruby`
|
|
|
|
* `${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}`
|
|
|
|
* `${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
|
|
|
|
* `${DESTDIR}${prefix}/lib/ruby/site_ruby`
|
|
|
|
* `${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}`
|
2015-04-10 20:48:37 -04:00
|
|
|
* `${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
|
2014-01-22 23:59:24 -05:00
|
|
|
* `${DESTDIR}${prefix}/lib/ruby/vendor_ruby`
|
|
|
|
* `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}`
|
2015-04-10 20:48:37 -04:00
|
|
|
* `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
|
2014-01-22 23:59:24 -05:00
|
|
|
* `${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}`
|
|
|
|
* `${DESTDIR}${prefix}/share/man/man1`
|
|
|
|
* `${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system`
|
|
|
|
|
|
|
|
|
|
|
|
If Ruby's API version is '*x.y.z*', the `${MAJOR}` is '*x*', the
|
|
|
|
`${MINOR}` is '*y*', and the `${TEENY}` is '*z*'.
|
|
|
|
|
|
|
|
**NOTE**: teeny of the API version may be different from one of Ruby's
|
|
|
|
program version
|
|
|
|
|
2017-10-21 11:02:25 -04:00
|
|
|
You may have to be a super user to install Ruby.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
|
2017-10-21 11:02:25 -04:00
|
|
|
If you fail to compile Ruby, please send the detailed error report with the
|
2014-01-22 23:59:24 -05:00
|
|
|
error log and machine/OS type, to help others.
|
|
|
|
|
|
|
|
Some extension libraries may not get compiled because of lack of necessary
|
2015-04-10 20:48:37 -04:00
|
|
|
external libraries and/or headers, then you will need to run '`make distclean-ext`'
|
|
|
|
to remove old configuration after installing them in such case.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
## Copying
|
|
|
|
|
2016-02-26 02:18:26 -05:00
|
|
|
See the file [COPYING](COPYING).
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
## Feedback
|
|
|
|
|
|
|
|
Questions about the Ruby language can be asked on the Ruby-Talk mailing list
|
2016-09-11 06:33:36 -04:00
|
|
|
(https://www.ruby-lang.org/en/community/mailing-lists) or on websites like
|
|
|
|
(https://stackoverflow.com).
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2016-09-11 06:33:36 -04:00
|
|
|
Bug reports should be filed at https://bugs.ruby-lang.org. Read [HowToReport] for more information.
|
2015-07-04 23:56:25 -04:00
|
|
|
|
|
|
|
[HowToReport]: https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReport
|
|
|
|
|
2017-04-18 07:55:44 -04:00
|
|
|
## Contributing
|
2015-07-04 23:56:25 -04:00
|
|
|
|
2016-02-25 21:03:03 -05:00
|
|
|
See the file [CONTRIBUTING.md](CONTRIBUTING.md)
|
2015-07-04 23:56:25 -04:00
|
|
|
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
## The Author
|
|
|
|
|
|
|
|
Ruby was originally designed and developed by Yukihiro Matsumoto (Matz) in
|
|
|
|
1995.
|
|
|
|
|
2018-03-05 02:21:54 -05:00
|
|
|
<matz@ruby-lang.org>
|