Technology moves fast! ⚡ Don't get left behind.🚶 Subscribe to our mailing list to keep up with latest and greatest in open source projects! 🏆

Subscribe to our mailing list


The Ruby Programming Language

Subscribe to updates I use ruby

Statistics on ruby

Number of watchers on Github 14045
Number of open issues 146
Main language Ruby
Average time to merge a PR 1 day
Open pull requests 221+
Closed pull requests 349+
Last commit about 1 year ago
Repo Created about 9 years ago
Repo Last Updated about 1 year ago
Size 171 MB
Homepage https://www.ruby-...
Organization / Authorruby
Page Updated
Do you use ruby? Leave a review!
View open issues (146)
View ruby activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating ruby for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Build Status Build status

What's Ruby

Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in Perl). It is simple, straight-forward, and extensible.

Features of Ruby

  • 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, Haiku, etc.) cf.

How to get Ruby

For a complete list of ways to install Ruby, including using third-party tools like rvm, see:

The Ruby distribution files can be found on the following FTP site:

The trunk of the Ruby source tree can be checked out with the following command:

$ svn co ruby

Or if you are using git then use the following command:

$ git clone

There are some other branches under development. Try the following command to see the list of branches:

$ svn ls

Or if you are using git then use the following command:

$ git ls-remote git://

Ruby home page

The URL of the Ruby home page is:

Mailing list

There is a mailing list to talk about Ruby. To subscribe to this list, please send the following phrase:


in the mail body (not subject) to the address

How to compile and install

This is what you need to do to compile and install Ruby:

  1. If you want to use Microsoft Visual C++ to compile Ruby, read win32/README.win32 instead of this document.

  2. If ./configure does not exist or is older than, run autoconf to (re)generate configure.

  3. Run ./configure, which will generate config.h and Makefile.

    Some C compiler flags may be added by default depending on your environment. Specify optflags=.. and warnflags=.. as necessary to 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 architectures which do not allow dynamic loading), remove comment mark from the line `#option nodynamic` in ext/Setup.

    Usually this step will not be needed.

  6. Run make.

* On Mac, set RUBY\_CODESIGN environment variable with a signing identity.
  It uses the identity to sign `ruby` binary. See also codesign(1).
  1. Optionally, run 'make check' to check whether the compiled Ruby interpreter works well. If you see the message `check succeeded`, your Ruby works as it should (hopefully).

  2. Optionally, run make update-gems and make extract-gems.

    If you want to install bundled gems, run make update-gems and make extract-gems before running make install.

  3. Run 'make install'.

    This command will create the following directories and install files into them.

*   `${DESTDIR}${prefix}/bin`
*   `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}`
*   `${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
*   `${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}`
*   `${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
*   `${DESTDIR}${prefix}/lib/ruby/vendor_ruby`
*   `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}`
*   `${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}`
*   `${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

You may have to be a super user to install Ruby.

If you fail to compile Ruby, please send the detailed error report with the error log and machine/OS type, to help others.

Some extension libraries may not get compiled because of lack of necessary external libraries and/or headers, then you will need to run 'make distclean-ext' to remove old configuration after installing them in such case.


See the file COPYING.


Questions about the Ruby language can be asked on the Ruby-Talk mailing list ( or on websites like (

Bug reports should be filed at Read HowToReport for more information.


See the file

The Author

Ruby was originally designed and developed by Yukihiro Matsumoto (Matz) in 1995.

ruby open pull requests (View All Pulls)
  • Add verbose failure messages and avoid infamous DRb::DRbConnError
  • proc.c: Binding svar
  • some debug options
  • enum.c: add #grep-like behavior to #any? and friends.
  • Unify tmpdir method definition
  • KeyError#receiver and KeyError#key
  • Removed references to NQXML in xmlrpc
  • enable kwargs after return
  • NoMethodError#private_call?
  • Feature/12041 name error#initialize recevier
  • Adjust spaces in class declarations with inheritance
  • parse.y: do after cmdarg in paren
  • array.c: eql? identity check if immediate value
  • lib/irb.rb: include trailing newline when >16 backtrace levels
  • string.c: Symbol#match
  • Win32::Registry#values: Return hash instead of array
  • Add Enumerator::Lazy#chunk_while like Enumerator::Lazy#slice_when.
  • hash.c: add compact and compact! methods
  • Issue #11865, lib/csv.rb Added attribute @line.
  • lib/csv.rb: simplify & optimize reducing operations.
  • Update comment about default constant
  • Use `userinfo` for authenticated proxy
  • Skip force_encoding in compiled code of erb
  • Scan from start to end in erb scanner
  • save values when same name options that allowed value are given.
  • Remove TLSv1 support from DEFAULT_PARAMS
  • [Feature #11735] Porting String#squish and String#squish! from Ruby on Rails' Active Support
  • Add `Method#visibility` and `UnboundMethod#visibility`
  • Add ERB comment functionality safely
  • Fix grammar errors
  • GC: Use __builtin_ppc_get_timebase for POWER arch
  • Fix documentation for `Encoding.default_external=`
  • Raise ArgumentError if host component is nil
  • Delegator private method
  • next_prime for lib/prime.rb
  • IPAddr has no public method to get the current subnet mask
  • object.c: Kernel#not
  • coverage w/o thread context
  • Hash tables with open addressing
  • SyntaxError location
  • error.c: bypass
  • Fix typo [ci skip]
  • Update ssl.rb to run https from command line
  • cleanup some Win9x/ME/NT4 support leftovers
  • remove obsolete safe level checks
  • Improve documentation for HTTPS GET requests
  • Add SSLCiphers option to webrick ssl.rb
  • Mod pow spike
  • Override Prime.include? to avoid nontermination
  • ossl_ssl.c: Fix for empty SNI to TLS requests
  • simplify eval backtrace
  • dirname optional level
  • Fix typo in code doc of proc.c
  • drop Atari ST support
  • ipaddr: fix documentation of IN6MASK to mention IPv6
  • remove unnecessary preprocessor directives (Windows)
  • cgihandler.rb: array CGIRunner
  • Random.gen_random
  • random.c: initialize with string
  • lib/drb/timeridconv.rb: Provide a way to shutdown the timer thread.
  • drop FreeBSD < 4 support
  • [WIP] Use SSE2 for list_ids_bsearch
  • New reserved char at URI regex
  • Optimizing Rational
  • Add proper require for example to work
  • parse.y: no named capture conflict warnings
  • Removed unreachable pointer
  • Feature/win32 no maxpath
  • Use connect_nonblock to open TCP connections in Net::HTTP#connect
  • inline rb_scan_args
  • [Feature #12403] optimize Regexp#match?
  • Add `+` operator to Hash as merge alias
  • SecureRandom::ForkDetector
  • extensible Random
  • random.c: Random.new_seed with precision
  • Fix typo in RDoc
  • win32 F_GETFL
  • Support RFC 7239
  • Check_Type_Of
  • Add T_INTEGER for Integer
  • Add reduce/inject alias note to enum.c docs
  • Create Process.exists? #12573
  • PStore: select checksum algorithm
  • rename all rb_funcall2 to rb_funcallv
  • win32/resolv: get_dns_server_list
  • [Feature #12624] !== operator
  • gc.c: error in finalizer
  • Object#is_a? as alias for Object#kind_of?
  • Improve document readability
  • Fallback value to OpenStruct delete_field
  • enum.c: sort_by order
  • Add support for Windows Nano Server
  • delegate.rb: don't look for methods on Kernel
  • util.h: POSIX-noncompliant setenv
  • Deoptimization Engine
  • Add Regexp Heredoc support
  • test_gem_remote_fetcher.rb: fix FD leak
  • V595 The 'bind' pointer was utilized before it was verified against n…
  • Added Coverage.result=
  • Module#deprecate_constant with message
  • Clear calling.recv after method calling to avoid marking it as accessible from machine context
  • [Feature #12786] Define String#casecmp?
  • [Feature #12521] kwarg in option
  • lib/ipaddr.rb : Return false instead of throwing an exception in == test
  • URI.try_parse - returns nil instead of raising InvalidURIError
  • Improve same directory detection in FileUtils
  • Add Struct.new_from_kwargs
  • Documentation fixes
  • Module#define_method: Add UnboundMethod to expected classes
  • ruby/process.h
  • Add support for iso8601 `YYYY-MM` format
  • vm_method.c: add new ruby::constant-cache-clear dtrace probe
  • Added auto detected of authentication type based on smtp server capabilities.
  • extension.rdoc: add ANYARGS to method definitions
  • Tidy up merge, fixes
  • Add IPAddr#link_local?, loopback?, multicast?
  • Cleanup ruby method definitions in hash.c
  • Updated documentation examples for Hash#value?
  • Add :err => :out option for the open3 pipeline
  • Permit "+" operator as an alias to merge hashes
  • Resolv::MDNS#each_address not work
  • Implemented String#match?
  • Add missing :nodoc: comment
  • Fast and safe connect timeout for net
  • Update fileutils.rb
  • Fix Enumerable#each_cons and each_slice to return a receiver
  • accurate (as possible) fdiv for Fixnum and Bignum
  • {String|Symbol}#match{?} with nil returns falsy as Regexp#match{?}
  • improve docs for `File.delete` exceptions
  • st.c: fix st_hash* functions
  • switch SipHash from SipHash24 to SipHash13 variant
  • Improve performance of some Time methods
  • Improve performance of some Complex methods where call Numeric#real? …
  • Improve performance of Complex#{+,-,*,/,**,abs2}
  • Improve performance of some Time & Rational methods
  • Add explicit documentation for Integer Range Summation
  • Exclude Changelog files from documentation.
  • Improve performance of "set instance variable"
  • Improve performance of rb_eql()
  • Indicate `find_all` and `select` methods are aliases.
  • Improve performance of Range#{min,max}
  • Improve performance of Enumerable#{sort_by,min_by,max_by,minmax_by}
  • Improve performance of Array#<=> with Fixnum/String elements
  • Allow Net::HTTP to timeout if the remote server doesn't read the request fast enough
  • ssl_socket_connect for pop
  • gc.c: Add GC.get_parameters and .set_parameters
  • Clarify the behavior of IO.write without offset in write mode
  • Match the behavior of rfc2822 methods
  • Change date_strgtime documentation of %Z format
  • Fix Delegator#eql? is missing
  • Module#source_location, Class#source_location
  • Options for FTP PORT command
  • Skip incomplete format specifier
  • Expose rb_fstring and its family to C extensions
  • Fix one of performance regressions in method calling
  • Improve performance of Array#sum with float elements
  • Improve performance of rb_equal()
  • Make Resolv::DNS::Name validation similar to host and dig commands.
  • Add SO_REUSEADDR socket option for lib/drb/drb.rb
  • Improve Time#+ & Time#- performance
  • Improve Time#<=> performance
  • [DOC]: Minor amendment to IO#each_line
  • string.c: Add String#remove_prefix to remove leading substr
  • Fix docs for Array#sort and Array#sort! [ci skip]
  • Improve performance of string interpolation
  • ia64: fix crash on register stack mark/sweep pass
  • Prefer st_is_member over st_lookup with 0
  • Windows - TestRubyOptions#test_search - append to paths instead of replacing
  • [DOC] Split String#<< and String#concat [ci skip]
  • Implement Hash#choice mtthod.
  • Better wording for __ENCODING__
  • formatting updates
  • Modify the return value of Gem::Version.correct?
  • rdoc: do not store current timestamps in gz headers
  • created.rid: use SOURCE_DATE_EPOCH
  • Speed up full scan completion in IRB
  • silence warning in ossl_pkey_dh.c
  • Fix documentation for HTTP connection reuse
  • ia64: update ia64-specific code to use execution context
  • Removing duplicated assertions on test_array.rb - MINUS method
  • Fix minor typos in sprintf documentation.
  • Use -Wimplicit-fallthrough
  • Improve Prime:prime? algorithm up to 4 times faster
  • Added 'filter' alias for 'find_all' and 'select'
  • Merge MJIT infrastructure with conservative JIT compiler
  • Introduce RUBY_PATCHNAME constant
  • 24% reduction of compiled vm_exec_core function
  • Requiring pp is not required now [ci skip]
  • Make Matrix#[]= public method
  • gc.h: Add SET_MACHINE_STACK_END specific for Powerpc64
  • Rename test classes to allow stable test count when running test-all -j
  • Add Tau as a constant to math.c
  • Add #empty? to Tempfile, StringIO, File::Stat
  • Add difference method to Array
  • FileUtils : Use Dir.children instead of Dir.entries
  • Set#^ is XOR
  • Correct grammar mistake in README
  • change call CGI methods from :: to .
  • URI::Generic: Respect no_proxy for both parent domain and subdomains
  • Add union method to Array
  • [DOC] Refinements on modules are allowed
  • Add Matrix#antisymmetric? and Matrix#reflexive?
  • vm_core.h: add doxygen document comments
  • [Docs] Show alphanumeric example in module docs
  • Fix compile error when USE_COPY_FILE_RANGE is defined but not USE_SENDFILE
  • net/http: use connect_timeout in Socket.tcp
  • new VM timestamp variable
  • Fix bug: Vector#angle_with with linearly dependent vectors
  • [Feature #4824]ruby.c: implement Kernel#executed?
  • Fixes #14035 URI::File use traditional representation.
  • Add Queue#peek to fetch the head object in queue, without removing it.
  • Bug Fix Enumerator::Lazy#uniq state for multiple call
  • [Docs] Add missing class FrozenError to Exception subclasses list documentation
  • C preprocessor written in pure Ruby.
  • Improve compatibility with OpenSSL 1.1.0
  • Re-arrange public .alphanumeric method to fix docs
  • Adding missing test for Net::HTTPGenericRequest initializer
  • [Docs] Include Hash#size in the examples
  • uri: restrict setting protocol to file scheme
ruby questions on Stackoverflow (View All Questions)
  • Ruby on Rails - Legacy Database Model Associations Gone Awry
  • getting "Not Found (JIRA::HTTPError)" while using jira-ruby gem
  • Octopress/Ruby Having this error: Pygments can't parse unknown language when trying to create a code block
  • How to construct where clause in ruby using if
  • Ruby on rails validates :first_name or :last_name rspec fail
  • What is the cleanest way to integrate Ruby on Rails with AngularJS?
  • How do your link to a favicon in ruby on rails?
  • Ruby app using Heroku and Sinatra, easiest way to accept user input from web page
  • Challenge returning an array in a Ruby Method
  • Build an iOS app for web-app written using the Ruby on Rails framework
  • Ruby on rails. Mailboxer send message button
  • How do you find a min / max with Ruby?
  • Ruby/RVM with @global gem - bundle run fails with `require': cannot load such file — bundler (LoadError)
  • Unable to resolve dependency: No match for 'ruby-debug-base (~>' on this platform. Found: java
  • Assertions with Selenium::Webdriver::Element object in Ruby
  • Ruby on Rails install on Amazon AWS fails: Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers
  • Ruby on Rails 4 fixtures require table
  • Ruby: pushing hash to array overwrites all previous elements that match a key in the hash
  • Ruby: use parameter in variable name
  • Ruby script to autofill the custom field based on the dropdown selection in Custom Workflow Redmine
  • Ruby fileutils: Forcing symlink creation from within cp_r
  • Best options for deploying a Ruby standalone script and dependencies?
  • Find key that contains certain characters in a hashtable with Ruby
  • Ruby gems in stand-alone ruby scripts
  • Escape blackslash in SQL query in Ruby
  • Ruby: require_relative not able to load file
  • Ruby code for deleting the vowels in a string
  • Supply Ruby Array Select A Dynamic Block
  • How to install ruby-2.1.6 binaries for rvm on centos6
  • Ruby class ArgumentError: wrong number of arguments (1 for 0)
ruby list of languages used
Other projects in Ruby