zh-CN:Ruby Ruby is a dynamic, interpreted, open source programming language with a focus on simplicity and productivity.
The version of Ruby you need to install depends on your requirements. If you are supporting a legacy application, install Ruby 2.1 or 2.0 as necessary. If you are starting a new project, Ruby 2.2 is recommended. Below is a summary of the available versions and how to get them.
To install Ruby 2.2, install RubyGems.. Ruby 2.2 includes
To install Ruby 2.1, install RubyGems.AUR. Ruby 2.1 includes
To install Ruby 2.0, install AUR. Ruby 2.0 includes RubyGems.AUR from the
To install Ruby 1.9, install AUR. Ruby 1.9 includes RubyGems.AUR from the
To make documentation available through the included
ri command-line tool, install .
You can then query the docs with:
ri Array.pop etc. (much like man-pages)
RubyGems is a package manager for Ruby modules (called gems), somewhat comparable to what pacman is to Arch Linux. It is included in the package.
Before you use RubyGems, you should add
$(ruby -e "print Gem.user_dir")/bin to your
$PATH. You can do this by adding the following line to
PATH="$(ruby -e 'print Gem.user_dir')/bin:$PATH"
This is required for executable gems to work without typing out the full location, although libraries will work without having to modify your path.
If the method above does not work, you can try adding these lines at the end of your shell configuration file instead:
#Setting the GEM_PATH and GEM_HOME variables may not be necessary, check 'gem env' output to verify whether both variables already exist GEM_HOME=$(ls -t -U | ruby -e 'puts Gem.user_dir') GEM_PATH=$GEM_HOME export PATH=$PATH:$GEM_HOME/bin
To see what gems are installed:
$ gem list
To get information about a gem:
$ gem spec gem_name
gem list and
gem spec use the
--local option, which forces gem to search only the local system. This can be overridden with the
--remote flag. Thus, to search for the mysql gem:
$ gem list --remote mysql
To install a gem:
$ gem install mysql
The process can be sped up somewhat if you do not need local documentation:
$ gem install mysql --no-document
To update all installed gems:
$ gem update
Installing gems per-user or system-wide
By default in Arch Linux, when running
gem, gems are installed per-user (into
~/.gem/ruby/), instead of system-wide (into
/usr/lib/ruby/gems/). This is considered the best way to manage gems on Arch, because otherwise they might interfere with gems installed by Pacman.
Gems can be installed system wide by running the
gem command as root, appended with the
--no-user-install flag. This flag can be set as default by replacing
/etc/gemrc (system-wide) or
~/.gemrc (per-user, overrides system-wide).
Bundler solves these problems to some extent by packaging gems into your application. See the section below on using bundler.
Bundler allows you to specify which gems your application depends upon, and optionally which version those gems should be. Once this specification is in place, Bundler installs all required gems (including the full gem dependency tree) and logs the results for later inspection. By default, Bundler installs gems into a shared location, but they can also be installed directly into your application. When your application is run, Bundler provides the correct version of each gem, even if multiple versions of each gem have been installed. This requires a little bit of work: applications should be called with
bundle exec, and two lines of boilerplate code must be placed in your application's main executable.
To install Bundler:
$ gem install bundler
By default, Bundler installs gems system-wide, which is contrary to the behaviour of gem itself on Arch. To correct this, add the following to your
export GEM_HOME=$(ruby -e 'print Gem.user_dir')
To start a new bundle:
$ bundle init
Gemfile in the current directory (created by bundle init) and list your required gems:
gem "rails", "3.2.9" gem "mysql"
Run the following to install gems into
$ bundle install
Alternatively, run the following to install gems to
.bundle in the working directory:
$ bundle install --path .bundle
Don't forget to edit your main executable:
#!/usr/bin/env ruby # "This will automatically discover your Gemfile, and make all of the gems in # your Gemfile available to Ruby." http://bundler.io/rationale.html require 'bundler/setup' ...
Finally, run your program:
bundle exec main_executable_name.rb
Managing RubyGems using pacman
Instead of managing gems with
gem, you can use
pacman, or some AUR helper. Ruby packages follow the naming convention ruby-[gemname]. This option provides the following advantages:
- Gems are updated along with the rest of your system. As a result, you never need to run
# pacman -Syusuffices.
- Installed gems are available system-wide, instead of being available only to the user who installed them.
If a gem is not available in AUR, you can useAUR or AUR to automatically create a package, which can then be installed by pacman.
Quarry is an opensource tool (GPL3 license) that allows to maintain rubygems binary repository for Arch Linux, as an easier alternative to building packages manually from the AUR. The source is hosted at github.
The repository is maintained by Arch developer anatolik at http://pkgbuild.com/~anatolik/quarry/, and is currently for the x86_64 architecture only. It contains many popular gems and new gems can be added upon request.
See Unofficial user repositories#quarry to enable it.
Then install required gem
# pacman -S ruby-$gemname.
If you have general questions - send it at the project announcement https://bbs.archlinux.org/viewtopic.php?id=182729
If you have bugreports or code improvements - file at github https://github.com/anatol/quarry