Ruby
関連記事
Ruby はシンプリシティと生産性に重点を置いた、オープンソースの動的なスクリプト言語です。
目次
Ruby のインストール
インストールするべき Ruby のバージョンはあなたが必要としているものによります。レガシーなアプリケーションをサポートするつもりなら、Ruby 2.1 や 2.0 をインストールしてください。新しいプロジェクトを初めるつもりなら、Ruby 2.2 が推奨です。利用可能な Ruby のバージョンと入手方法の概要を以下に述べます。
Ruby 2.2
Ruby 2.2 をインストールするには、ruby をインストールしてください。Ruby 2.1 には RubyGems が含まれています。
Ruby 2.1
Ruby 2.1 をインストールするには、ruby2.1AUR をインストールしてください。Ruby 2.1 には RubyGems が含まれています。
Ruby 2.0
Ruby 2.0 をインストールするには、AUR から ruby2.0AUR をインストールしてください。Ruby 2.0 には #RubyGems が含まれています。
Ruby 1.9
Ruby 1.9 をインストールするには、AUR から ruby1.9AUR をインストールしてください。Ruby 1.9 には #RubyGems が含まれています。
複数のバージョン
同じシステム上で複数のバージョン (例: 2.0.0-p0 と 1.9.3-p392) を動作させたい場合、一番簡単な方法は RVM, chruby, rbenv を使うことです。
ドキュメント
ri
コマンドラインツールでドキュメントを見るには、ruby-docs をインストールしてください。次のようにドキュメントを回覧できます: ri Array
, ri Array.pop
など (man-page と同じような感じです)。
RubyGems
RubyGems は Ruby のモジュール (Gem と呼ばれます) のためのパッケージマネージャで、Arch Linux における pacman に(多少は)相当します。上述の通り ruby に含まれています。
セットアップ
RubyGems を使用する前に、$(ruby -e "print Gem.user_dir")/bin
を $PATH
に追加してください。以下の行を ~/.bashrc
に記述してください:
PATH="$(ruby -e 'print Gem.user_dir')/bin:$PATH"
ライブラリはパスを修正しなくても動作しますが、フルパスを入力することなく gem を実行するには上記の設定が必須です。
使用方法
インストールされている gem を確認するには:
$ gem list
gem についての情報を得るには:
$ gem spec gem_name
デフォルトで、gem list
や gem spec
は --local
オプションを使います。つまりローカルのシステムだけで gem を検索します。これを --remote
フラグで上書きすることが可能です。そう、例えば mysql の gem を検索するには:
$ gem list --remote mysql
gem をインストールするには:
$ gem install mysql
ローカルのドキュメントが必要ない場合はスピードアップすることができます:
$ gem install mysql --no-document
インストールされている gem を全てアップデートするには:
$ gem update
gem をユーザー個別またはシステム共通でインストール
Arch Linux ではデフォルトで、gem
を実行したとき、gem はシステム共通 (/usr/lib/ruby/gems/
) ではなくユーザー個別 (~/.gem/ruby/
) にインストールされます。システム共通でインストールすると Pacman でインストールした gem と干渉する可能性があるため、Arch で gem を管理するときはユーザー個別のほうが適しているとされています。
--no-user-install
フラグを付けて gem
コマンドを root で実行することで Gem をシステム共通でインストールすることができます。/etc/gemrc
(システム共通) または ~/.gemrc
(ユーザー個別、システム共通設定を上書きします) にある --user-install
を --no-user-install
で置き換えることでこのフラグをデフォルトで設定可能です。
Bundler は gem をあなたのアプリケーションにパッケージングすることでこの問題をある程度解決します。bundler を使用するにあたって下のセクションを見て下さい。
Bundler
Bundler を使うことであなたのアプリケーションが依存している gem はどれか、さらに(任意で)その gem のバージョンは何でなければならないかを指定することができます。この記述があると、Bundler は必要な gem を全て (完全な gem の依存ツリーを含む) インストールして、後の点検のために結果をログに残します。デフォルトで、Bundler は gem を共有の場所にインストールしますが、あなたのアプリケーションに直接インストールすることも可能です。あなたのアプリケーションが実行されると、複数のバージョンの gem がインストールされている時でも、Bundler はそれぞれの gem の正しいバージョンを与えます。これにはわずかばかりの作業が必要です: アプリケーションは bundle exec
で呼び出される必要があり、あなたのアプリケーションのメインの実行ファイルに2行のボイラープレートコード(おまじない)を入れなくてはなりません。
Bundler をインストールするには:
$ gem install bundler
デフォルトで、Bundler は gem をシステム全体にインストールします。これは Arch での gem それ自体の挙動とは反対です。これを正すには、次を ~/.bashrc
に追加してください:
export GEM_HOME=$(ruby -e 'print Gem.user_dir')
新しい bundle を始めるには:
$ bundle init
次に (bundle init
によって作成された) 作業ディレクトリ内の Gemfile
を編集して必要な gem を記載してください:
Gemfile
gem "rails", "3.2.9" gem "mysql"
次を実行して gem を GEM_HOME
にインストールしてください:
$ bundle install
もしくは、次を実行して gem を作業ディレクトリ内の .bundle
にインストールしてください:
$ bundle install --path .bundle
あなたのメインの実行ファイルを編集するのを忘れないで下さい:
#!/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' ...
最後に、あなたのプログラムを実行して下さい:
bundle exec <main_executable_name.rb>
pacman を使って RubyGems を管理する
gem
を使って gem を管理する代わりに、pacman
や AUR ヘルパーを使うこともできます。Ruby パッケージは ruby-[gemname] という命名規則にしたがっています。この方法では以下の利点があります:
- システムの他の部分と一緒に Gem が更新されます。その結果、
gem update
を実行する必要がなくなります:# pacman -Syu
だけで更新可能です。 - インストールした gem は、インストールしたユーザーだけでなく、システム全体で使うことができます。
gem が AUR に存在しない場合は、gem2archAUR や pacgemAUR を使って自動的にパッケージを作成し、pacman でインストールできます。
Quarry
Quarry は Arch Linux のための rubygems バイナリリポジトリを運営するためのオープンソースツール (GPL3 ライセンス) です。ソースは github でホストされています。
Arch の開発者 anatolik によって非公式の rubygems リポジトリが http://pkgbuild.com/~anatolik/quarry/ で運営されており、いまのところ x86 アーキテクチャのみサポートしています。このリポジトリには多数の人気 gem が含まれており、gem を追加するようリクエストを送ることもできます。バイナリパッケージリポジトリは AUR のソースパッケージよりも簡単に使用することが可能です。
リポジトリを有効にする方法は 非公式ユーザーリポジトリ#quarry を見て下さい。
有効にしたら必要な gem をインストールしてください: # pacman -S ruby-$gemname
。
質問がありましたら、プロジェクトアナウンスに送って下さい: https://bbs.archlinux.org/viewtopic.php?id=182729
バグレポートやコードの改善は github で送って下さい: https://github.com/anatol/quarry
参照
- Ruby - http://ruby-lang.org/
- Bundler - http://bundler.io/