2019-06-30 12:04:40 -04:00
|
|
|
[![Build Status](https://travis-ci.org/ruby/ruby.svg?branch=master)](https://travis-ci.org/ruby/ruby)
|
|
|
|
[![Build status](https://ci.appveyor.com/api/projects/status/0sy8rrxut4o0k960/branch/master?svg=true)](https://ci.appveyor.com/project/ruby/ruby/branch/master)
|
2019-12-09 01:05:17 -05:00
|
|
|
![](https://github.com/ruby/ruby/workflows/Cygwin/badge.svg)
|
2019-11-13 01:11:34 -05:00
|
|
|
![](https://github.com/ruby/ruby/workflows/macOS/badge.svg)
|
|
|
|
![](https://github.com/ruby/ruby/workflows/MJIT/badge.svg)
|
|
|
|
![](https://github.com/ruby/ruby/workflows/Ubuntu/badge.svg)
|
|
|
|
![](https://github.com/ruby/ruby/workflows/Windows/badge.svg)
|
2016-01-22 02:02:37 -05:00
|
|
|
|
2014-01-22 23:59:24 -05:00
|
|
|
# What's Ruby
|
|
|
|
|
2019-05-05 03:52:34 -04:00
|
|
|
Ruby is an interpreted object-oriented programming language often
|
|
|
|
used for web development. It also offers many scripting features
|
|
|
|
to process plain text and serialized files, or manage system tasks.
|
|
|
|
It is simple, straightforward, and extensible.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
## 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.
|
2019-06-30 12:04:40 -04:00
|
|
|
https://github.com/ruby/ruby/blob/master/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
|
|
|
|
2019-04-21 20:55:20 -04:00
|
|
|
### Git
|
2019-04-20 21:06:25 -04:00
|
|
|
|
2019-04-21 20:55:19 -04:00
|
|
|
The mirror of the Ruby source tree can be checked out with the following command:
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2019-04-21 20:55:19 -04: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
|
|
|
|
2019-04-21 20:55:19 -04:00
|
|
|
$ git ls-remote https://github.com/ruby/ruby.git
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2019-06-30 12:04:40 -04:00
|
|
|
You may also want to use https://git.ruby-lang.org/ruby.git (actual master of Ruby source)
|
2019-05-21 08:00:17 -04:00
|
|
|
if you are a committer.
|
2019-04-20 21:06:25 -04:00
|
|
|
|
2019-04-21 20:55:19 -04:00
|
|
|
### Subversion
|
2019-04-20 21:06:25 -04:00
|
|
|
|
2019-04-21 20:55:19 -04:00
|
|
|
Stable branches for older Ruby versions can be checked out with the following command:
|
2019-04-20 21:06:25 -04:00
|
|
|
|
2019-04-21 20:55:19 -04:00
|
|
|
$ svn co https://svn.ruby-lang.org/repos/ruby/branches/ruby_2_6/ ruby
|
2019-04-20 21:06:25 -04:00
|
|
|
|
2019-04-21 20:55:19 -04:00
|
|
|
Try the following command to see the list of branches:
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2019-04-21 20:55:19 -04:00
|
|
|
$ svn ls https://svn.ruby-lang.org/repos/ruby/branches/
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2019-04-21 00:02:24 -04:00
|
|
|
|
2015-06-28 23:09:14 -04:00
|
|
|
## Ruby home page
|
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
|
|
|
|
|
2019-04-19 05:09:46 -04:00
|
|
|
There is a mailing list to discuss 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
|
2019-06-14 00:18:01 -04:00
|
|
|
[ruby-talk-request@ruby-lang.org](mailto:ruby-talk-request@ruby-lang.org?subject=Join%20Ruby%20Mailing%20List&body=subscribe).
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
## How to compile and install
|
|
|
|
|
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
|
|
|
|
2019-04-19 05:09:46 -04:00
|
|
|
Bugs should be reported 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
|
|
|
|
|
2019-04-21 03:27:52 -04:00
|
|
|
Ruby was originally designed and developed by Yukihiro Matsumoto (Matz) in 1995.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2018-03-05 02:21:54 -05:00
|
|
|
<matz@ruby-lang.org>
|