2020-12-26 04:28:50 -05:00
|
|
|
[![Actions Status: MinGW](https://github.com/ruby/ruby/workflows/MinGW/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"MinGW")
|
|
|
|
[![Actions Status: MJIT](https://github.com/ruby/ruby/workflows/MJIT/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"MJIT")
|
|
|
|
[![Actions Status: Ubuntu](https://github.com/ruby/ruby/workflows/Ubuntu/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"Ubuntu")
|
|
|
|
[![Actions Status: Windows](https://github.com/ruby/ruby/workflows/Windows/badge.svg)](https://github.com/ruby/ruby/actions?query=workflow%3A"Windows")
|
2021-05-25 08:42:25 -04:00
|
|
|
[![AppVeyor status](https://ci.appveyor.com/api/projects/status/0sy8rrxut4o0k960/branch/master?svg=true)](https://ci.appveyor.com/project/ruby/ruby/branch/master)
|
2021-09-09 10:49:39 -04:00
|
|
|
[![Travis Status](https://app.travis-ci.com/ruby/ruby.svg?branch=master)](https://app.travis-ci.com/ruby/ruby)
|
2021-09-14 12:20:01 -04:00
|
|
|
[![Cirrus Status](https://api.cirrus-ci.com/github/ruby/ruby.svg)](https://cirrus-ci.com/github/ruby/ruby/master)
|
2016-01-22 02:02:37 -05:00
|
|
|
|
2022-04-15 12:16:55 -04:00
|
|
|
# What is Ruby?
|
2014-01-22 23:59:24 -05:00
|
|
|
|
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
|
|
|
|
|
2022-04-18 00:53:43 -04:00
|
|
|
* Simple Syntax
|
|
|
|
* **Normal** Object-oriented Features (e.g. class, method calls)
|
|
|
|
* **Advanced** Object-oriented Features (e.g. mix-in, singleton-method)
|
|
|
|
* Operator Overloading
|
|
|
|
* Exception Handling
|
|
|
|
* Iterators and Closures
|
|
|
|
* Garbage Collection
|
|
|
|
* Dynamic Loading of Object Files (on some architectures)
|
|
|
|
* Highly Portable (works on many Unix-like/POSIX compatible platforms as
|
|
|
|
well as Windows, macOS, etc.) cf.
|
|
|
|
https://github.com/ruby/ruby/blob/master/doc/maintainers.rdoc#label-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
|
|
|
|
2021-03-17 10:51:00 -04:00
|
|
|
Stable branches for older Ruby versions can be checked out with also 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
|
|
|
|
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
|
|
|
|
2021-03-17 10:51:00 -04:00
|
|
|
in the mail body (not subject) to the address [ruby-talk-request@ruby-lang.org].
|
|
|
|
|
|
|
|
[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
|
|
|
|
2021-06-17 13:34:36 -04:00
|
|
|
## Requirements to build from repository
|
|
|
|
|
|
|
|
1. GNU or BSD make
|
|
|
|
2. C99 compiler
|
|
|
|
3. autoconf 2.67 or higher
|
|
|
|
4. automake 1.15 or higher
|
|
|
|
5. bison 2.3 or higher
|
|
|
|
6. Ruby 2.2 or higher
|
|
|
|
|
|
|
|
When building from a released version, only a C99 compiler and GNU or BSD make
|
|
|
|
is required.
|
|
|
|
|
2014-01-22 23:59:24 -05:00
|
|
|
## How to compile and install
|
|
|
|
|
2022-04-18 00:53:43 -04:00
|
|
|
1. If you want to use Microsoft Visual C++ to compile Ruby, read
|
2022-04-19 01:01:08 -04:00
|
|
|
[win32/README.win32](rdoc-ref:win32/README.win32) instead of this document.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2022-04-18 00:53:43 -04:00
|
|
|
2. Run `./autogen.sh` to generate configure, when you build the source checked
|
2022-04-19 01:01:08 -04:00
|
|
|
out from the Git repository.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2022-04-19 01:01:08 -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.
|
|
|
|
|
2022-04-19 01:01:08 -04:00
|
|
|
4. Edit `include/ruby/defines.h` if you need. Usually this step will not be needed.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2022-04-18 00:53:43 -04:00
|
|
|
5. Optional: Remove comment mark(`#`) before the module names from `ext/Setup`.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2021-04-10 19:37:39 -04:00
|
|
|
This step is only necessary if you want to link modules statically.
|
|
|
|
|
|
|
|
If you don't want to compile dynamic extensions (probably on architectures
|
|
|
|
which do not allow dynamic loading), remove comment mark from the line
|
|
|
|
"`#option nodynamic`" in `ext/Setup`.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
Usually this step will not be needed.
|
|
|
|
|
2022-04-18 00:53:43 -04:00
|
|
|
6. Run `make`.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
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).
|
|
|
|
|
2022-04-18 00:53:43 -04:00
|
|
|
7. Optionally, run '`make check`' to check whether the compiled Ruby
|
2022-04-19 01:01:08 -04:00
|
|
|
interpreter works well. If you see the message "`check succeeded`", your
|
|
|
|
Ruby works as it should (hopefully).
|
2014-01-22 23:59:24 -05:00
|
|
|
|
2022-04-18 00:53:43 -04:00
|
|
|
8. 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
|
2022-04-15 12:16:55 -04:00
|
|
|
external libraries and/or headers. You will need to run '`make distclean-ext`'
|
|
|
|
to remove old configuration after installing them in such a case.
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
## Copying
|
|
|
|
|
2021-10-12 15:31:50 -04:00
|
|
|
See the file [COPYING](rdoc-ref:COPYING).
|
2014-01-22 23:59:24 -05:00
|
|
|
|
|
|
|
## Feedback
|
|
|
|
|
2021-07-11 07:08:08 -04:00
|
|
|
Questions about the Ruby language can be asked on the [Ruby-Talk] mailing list
|
|
|
|
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
|
|
|
|
2021-07-11 07:08:08 -04:00
|
|
|
[Ruby-Talk]: https://www.ruby-lang.org/en/community/mailing-lists
|
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
|
|
|
|
2021-10-12 15:31:50 -04:00
|
|
|
See the file [CONTRIBUTING.md](rdoc-ref:CONTRIBUTING)
|
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>
|