Ruby (한국어)
Ruby는 오픈소스인 동적 인터프리터 프로그래밍 언어이다. 단순함과 생산성에 중점을 두고 있다.
Ruby를 설치하기
최신 버전의 Ruby를 설치하기 위해서는 ruby패키지를 설치하면 된다.
IRB를 설치하기 위해서는 별도로 ruby-irb 패키지를 설치하면 된다.
복수 버전 설치
복수개의 버전을 같은 시스템에 설치하기 위하는 경우 (예를 들어 2.0.0-p0와 1.9.3-p392), 가장 쉬운 방법은 RVM, chrubyAUR 혹은 rbenv을 사용하는 것이다.
문서
To make documentation available through the ri
command-line tool, install ruby-rdoc and ruby-docs for the documentation itself.
You can then query the docs with: ri Array
, ri Array.pop
etc. (much like man-pages)
JRuby
The Java implementation of Ruby, JRuby can be installed with the jruby package.
RubyGems
RubyGems is a package manager for Ruby modules (called gems), somewhat comparable to what pacman is to Arch Linux. It can be installed with the rubygems package, which is a dependency of ruby.
Setup
Append $(ruby -e 'puts Gem.user_dir')/bin
to the PATH
environment variable to allow RubyGems to be executed:
~/.profile
PATH="$PATH:$(ruby -e 'puts Gem.user_dir')/bin"
This is required for executable gems to work without typing out the full location, although libraries will work without having to modify your path.
Use gem env
to view the current RubyGems environment:
$ gem env
Usage
To see what gems are installed:
$ gem list
To get information about a gem:
$ gem spec gem_name
By default, 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 mysql2 gem:
$ gem list --remote mysql2
To install a gem:
$ gem install mysql2
The process can be sped up somewhat if you do not need local documentation:
$ gem install mysql2 --no-document
~/.gemrc
file:
~/.gemrc
gem: --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 --user-install
by --no-user-install
in /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
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, you can run the following command:
$ bundle config path ~/.gem
To start a new bundle:
$ bundle init
Then edit Gemfile
in the current directory (created by bundle init) and list your required gems:
Gemfile
gem "rails", "3.2.9" gem "mysql2"
Run the following to install gems into GEM_HOME
:
$ bundle install
Alternatively, run the following to install gems to .bundle
in the working directory:
$ bundle install --path .bundle
Do not 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." https://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 an 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.
- Installed gems are available system-wide, instead of being available only to the user who installed them.
Quarry
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 https://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
(as the root user).
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