「Ruby」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
imported>Lahwaacz.bot
(update Pkg/AUR templates to reflect new package status)
 
(英語版で削除されているので追従)
 
(2人の利用者による、間の12版が非表示)
1行目: 1行目:
 
[[Category:プログラミング言語]]
 
[[Category:プログラミング言語]]
 
[[en:Ruby]]
 
[[en:Ruby]]
  +
[[zh-hans:Ruby]]
  +
{{Related articles start}}
  +
{{Related|Ruby on Rails}}
  +
{{Related articles end}}
 
Ruby はシンプリシティと生産性に重点を置いた、オープンソースの動的なスクリプト言語です。
 
Ruby はシンプリシティと生産性に重点を置いた、オープンソースの動的なスクリプト言語です。
   
 
== Ruby のインストール ==
 
== Ruby のインストール ==
  +
最新版の Ruby をインストールするには、{{Pkg|ruby}} パッケージを[[インストール]]してください。これには、[[#RubyGems|RubyGems]] が含まれています。
インストールするべき Ruby のバージョンはあなたが必要としているものによります。レガシーなアプリケーションをサポートするつもりなら、Ruby 1.9 や 1.8 をインストールしてください。新しいプロジェクトを初めるつもりなら、Ruby 2.0 が推奨です。利用可能な Ruby のバージョンと入手方法の概要を以下に述べます。
 
   
=== Ruby 2.0 ===
+
=== 複数のバージョン ===
  +
同じシステム上で複数のバージョン (例: 2.0.0-p0 と 1.9.3-p392) を動作させたい場合、一番簡単な方法は [[RVM]], {{AUR|chruby}}, [[rbenv]] を使うことです。
Ruby 2.0.0 をインストールするには、{{Pkg|ruby}} をインストールしてください。Ruby 2.0 には [[#RubyGems]] が含まれています。
 
   
=== Ruby 1.9 ===
+
=== ドキュメント ===
Ruby 1.9.3 をインストールするには、{{AUR|ruby1.9}} をインストールしてください。Ruby 1.9 には [[#RubyGems]] が含まれています。
 
   
  +
{{ic|ri}} コマンドラインツールでドキュメントを見るには、{{Pkg|ruby-docs}} をインストールしてください。次のようにドキュメントを回覧できます: {{ic|ri Array}}, {{ic|ri Array.pop}} など (man-page と同じような感じです)。
メリット:
 
* 1.8 に比べてパフォーマンスがはるかに向上しています。
 
* fiber などの並列化のための新機能があります。
 
* 他にも、CSV パーサーの改善などさまざまな機能向上がなされています。
 
   
  +
== RubyGems ==
デメリット:
 
  +
RubyGems は Ruby のモジュール (Gem と呼ばれます) のためのパッケージマネージャで、Arch Linux における [[pacman]] に(多少は)相当します。上述の通り {{pkg|ruby}} に含まれています。
* 多くの古い gem (そして Ruby On Rails バージョン 2.3 以前) と互換性がありません。
 
* 言語の変更によって古い Ruby コードが動かなくなったり、予期せぬバグが生まれる可能性があります。
 
   
  +
=== セットアップ ===
{{Note|あなたの必要な gem/module が Ruby 1.9 と互換性があるか知るには http://isitruby19.com/ を見て下さい。}}
 
   
  +
RubyGems を使用する前に、{{ic|$(ruby -e "print Gem.user_dir")/bin}} を {{ic|$PATH}} に追加してください。以下の行を {{ic|~/.bashrc}} に記述してください:
=== Ruby 1.8 ===
 
  +
PATH="$(ruby -e 'print Gem.user_dir')/bin:$PATH"
Ruby 1.8.7 をインストールするには、{{AUR|ruby1.8}} か {{AUR|ruby-1.8.7-svn}} を [[Arch User Repository|AUR]] からインストールしてください。Ruby 1.8 には RubyGems が含まれていません。そのかわり、{{AUR|rubygems1.8}} パッケージから利用できます。
 
   
  +
ライブラリはパスを修正しなくても動作しますが、フルパスを入力することなく gem を実行するには上記の設定が必須です。
=== 複数のバージョン ===
 
同じシステム上で複数のバージョン (例: 2.0.0-p0 と 1.9.3-p392) を動作させたい場合、一番簡単な方法は [[RVM]] や [[rbenv]] を使うことです。
 
   
  +
上記の方法が上手くいかない場合、上記の代わりにシェルの設定ファイルの末尾に以下の行を追加してみてください:
== RubyGems ==
 
  +
''gem'' は Ruby のモジュール (Gem と呼ばれます) のためのパッケージマネージャで、Arch Linux における [[pacman|pacman]] に(多少は)相当します。上述の通り Ruby のインストールを行えば ''gem'' コマンドがインストールされます。
 
  +
#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
   
 
=== 使用方法 ===
 
=== 使用方法 ===
37行目: 39行目:
   
 
gem についての情報を得るには:
 
gem についての情報を得るには:
$ gem spec <gem_name>
+
$ gem spec ''gem_name''
   
 
デフォルトで、{{ic|gem list}} や {{ic|gem spec}} は {{ic|--local}} オプションを使います。つまりローカルのシステムだけで ''gem'' を検索します。これを {{ic|--remote}} フラグで上書きすることが可能です。そう、例えば mysql の gem を検索するには:
 
デフォルトで、{{ic|gem list}} や {{ic|gem spec}} は {{ic|--local}} オプションを使います。つまりローカルのシステムだけで ''gem'' を検索します。これを {{ic|--remote}} フラグで上書きすることが可能です。そう、例えば mysql の gem を検索するには:
46行目: 48行目:
   
 
ローカルのドキュメントが必要ない場合はスピードアップすることができます:
 
ローカルのドキュメントが必要ない場合はスピードアップすることができます:
$ gem install mysql --no-rdoc --no-ri
+
$ gem install mysql --no-document
  +
  +
{{Note|{{ic|~/.gemrc}} ファイルを以下のように設定することでオプションをデフォルトにすることが可能ですfile:
  +
{{hc|~/.gemrc|<nowiki>
  +
gem: --no-document
  +
</nowiki>}}}}
   
 
インストールされている gem を全てアップデートするには:
 
インストールされている gem を全てアップデートするには:
 
$ gem update
 
$ gem update
   
=== 標準ユーザーで実行 ===
+
=== gem をユーザー個別またはシステム共通インストール ===
標準ユーザーとして ''gem'' を実行すると、gem はシステム全体ではなく {{ic|~/.gem}} にインストールされます。Arch で gem を管理するにはこれが最適だと思われます。残念ながら、全ての gem はこの方法ではインストールできず、root でインストールするように言われているもの (特にネイティブ拡張 (コンパイルされた C コード) を持っている gem) があります。このユーザーごとにインストールする挙動は {{ic|/etc/gemrc}} で有効にされており {{ic|~/.gemrc}} ファイルによって書き換えることが可能です。
 
   
  +
Arch Linux ではデフォルトで、{{ic|gem}} を実行したとき、gem はシステム共通 ({{ic|/usr/lib/ruby/gems/}}) ではなくユーザー個別 ({{ic|~/.gem/ruby/}}) にインストールされます。システム共通でインストールすると Pacman でインストールした gem と干渉する可能性があるため、Arch で gem を管理するときはユーザー個別のほうが適しているとされています。
バイナリをインストールする gem を使う時は、{{ic|~/.gem/ruby/2.0.0/bin}} を {{ic|$PATH}} に追加する必要があります。
 
   
  +
{{ic|--no-user-install}} フラグを付けて {{ic|gem}} コマンドを root で実行することで Gem をシステム共通でインストールすることができます。{{ic|/etc/gemrc}} (システム共通) または {{ic|~/.gemrc}} (ユーザー個別、システム共通設定を上書きします) にある {{ic|--user-install}} を {{ic|--no-user-install}} で置き換えることでこのフラグをデフォルトで設定可能です。
=== root で実行 ===
 
root として実行したとき、gem は {{ic|/root/.gems}} にインストールされます。{{ic|/usr/lib/ruby/gems/}} には'''インストールされません'''。
 
 
{{Note|詳しくは #[https://bugs.archlinux.org/task/33327 33327] を見て下さい。}}
 
   
 
[[#Bundler|Bundler]] は gem をあなたのアプリケーションにパッケージングすることでこの問題をある程度解決します。bundler を使用するにあたって下のセクションを見て下さい。
 
[[#Bundler|Bundler]] は gem をあなたのアプリケーションにパッケージングすることでこの問題をある程度解決します。bundler を使用するにあたって下のセクションを見て下さい。
   
 
=== Bundler ===
 
=== Bundler ===
[http://github.com/carlhuda/bundler Bundler] を使うことであなたのアプリケーションが依存している gem はどれか、さらに(任意で)その gem のバージョンは何でなければならないかを指定することができます。この記述があると、Bundler は必要な gem を全て (完全な gem の依存ツリーを含む) インストールして、後の点検のために結果をログに残します。デフォルトで、Bundler は gem を共有の場所にインストールしますが、あなたのアプリケーションに直接インストールすることも可能です。あなたのアプリケーションが実行されると、複数のバージョンの gem がインストールされている時でも、Bundler はそれぞれの gem の正しいバージョンを与えます。これにはわずかばかりの作業が必要です: アプリケーションは {{ic|bundle exec}} で呼び出される必要があり、あなたのアプリケーションのメインの実行ファイルに2行のボイラープレートコード(おまじない)を入れなくてはなりません。
+
[http://bundler.io Bundler] を使うことであなたのアプリケーションが依存している gem はどれか、さらに(任意で)その gem のバージョンは何でなければならないかを指定することができます。この記述があると、Bundler は必要な gem を全て (完全な gem の依存ツリーを含む) インストールして、後の点検のために結果をログに残します。デフォルトで、Bundler は gem を共有の場所にインストールしますが、あなたのアプリケーションに直接インストールすることも可能です。あなたのアプリケーションが実行されると、複数のバージョンの gem がインストールされている時でも、Bundler はそれぞれの gem の正しいバージョンを与えます。これにはわずかばかりの作業が必要です: アプリケーションは {{ic|bundle exec}} で呼び出される必要があり、あなたのアプリケーションのメインの実行ファイルに2行のボイラープレートコード(おまじない)を入れなくてはなりません。
   
 
Bundler をインストールするには:
 
Bundler をインストールするには:
70行目: 73行目:
   
 
デフォルトで、Bundler は gem をシステム全体にインストールします。これは Arch での ''gem'' それ自体の挙動とは反対です。これを正すには、次を {{ic|~/.bashrc}} に追加してください:
 
デフォルトで、Bundler は gem をシステム全体にインストールします。これは Arch での ''gem'' それ自体の挙動とは反対です。これを正すには、次を {{ic|~/.bashrc}} に追加してください:
export GEM_HOME=~/.gem/ruby/2.0.0
+
export GEM_HOME=$(ruby -e 'print Gem.user_dir')
   
 
新しい bundle を始めるには:
 
新しい bundle を始めるには:
91行目: 94行目:
   
 
# "This will automatically discover your Gemfile, and make all of the gems in
 
# "This will automatically discover your Gemfile, and make all of the gems in
# your Gemfile available to Ruby." http://gembundler.com/v1.3/rationale.html
+
# your Gemfile available to Ruby." http://bundler.io/rationale.html
  +
require 'rubygems'
 
 
require 'bundler/setup'
 
require 'bundler/setup'
   
103行目: 106行目:
 
== pacman を使って RubyGems を管理する ==
 
== pacman を使って RubyGems を管理する ==
   
直接 gem コマンドを使うかわりに pacman を使って普通のパッケージのようにインストールした gem を管理することができます。[[Arch User Repository|AUR]] から利用できる ruby パッケージがたくさんあります。Ruby パッケージは ruby-[gemname] という命名規則にっています。pacman を使った後 gem から自動 arch パッケージを作成しインストールする {{AUR|pacgem}} ツールを代替として使うこと可能で
+
{{ic|gem}} を使って gem を管理する代わりに、{{ic|pacman}} や [[AUR]] ヘルパーを使うこともできます。Ruby パッケージは ruby-[gemname] という命名規則にしたがっています。この方法は以下の利点ありま:
  +
  +
* システムの他の部分と一緒に Gem が更新されます。その結果、{{ic|gem update}} を実行する必要がなくなります: {{ic|# pacman -Syu}} だけで更新可能です。
  +
* インストールした gem は、インストールしたユーザーだけでなく、システム全体で使うことができます。
  +
  +
gem が AUR に存在しない場合は、{{AUR|gem2arch}} や {{AUR|pacgem}} を使って自動的にパッケージを作成し、pacman でインストールできます。
  +
  +
==== Quarry ====
  +
  +
Quarry は Arch Linux のための [http://rubygems.org rubygems] バイナリリポジトリを運営するためのオープンソースツール (GPL3 ライセンス) です。ソースは [https://github.com/anatol/quarry github] でホストされています。
  +
  +
Arch の開発者 anatolik によって非公式の rubygems リポジトリが http://pkgbuild.com/~anatolik/quarry/ で運営されており、いまのところ x86_64 アーキテクチャのみサポートしています。このリポジトリには多数の人気 gem が含まれており、gem を追加するようリクエストを送ることもできます。バイナリパッケージリポジトリは AUR のソースパッケージよりも簡単に使用することが可能です。
  +
  +
リポジトリを有効にする方法は [[非公式ユーザーリポジトリ#quarry]] を見て下さい。
   
  +
有効にしたら必要な gem をインストールしてください: {{ic|# pacman -S ruby-$gemname}}。
{{Warning|AUR にある ruby gem パッケージの多くは、{{ic|/etc/gemrc}} やユーザーの {{ic|~/.gemrc}} 内のグローバルな設定を無視して、コマンドラインスイッチの {{ic|--no-user-install}} や {{ic|--user-install}} を明示的に使います。インストールする前に PKGBUILD ファイルを編集しますよね?}}
 
   
  +
質問がありましたら、プロジェクトアナウンスに送って下さい: https://bbs.archlinux.org/viewtopic.php?id=182729<br>
== 関連項目 ==
 
  +
バグレポートやコードの改善は github で送って下さい: https://github.com/anatol/quarry
* [[Ruby On Rails]]
 
   
 
== 参照 ==
 
== 参照 ==
 
* Ruby - http://ruby-lang.org/
 
* Ruby - http://ruby-lang.org/
* Rubyforge - http://rubyforge.org
+
* Bundler - http://bundler.io/
  +
* [http://www.aoky.net/articles/why_poignant_guide_to_ruby/ ホワイの(感動的)Rubyガイド]
* Bundler - http://github.com/carlhuda/bundler
 
  +
* [http://ruby.learncodethehardway.org/ Learn Ruby The Hard Way]

2017年5月15日 (月) 19:18時点における最新版

関連記事

Ruby はシンプリシティと生産性に重点を置いた、オープンソースの動的なスクリプト言語です。

Ruby のインストール

最新版の Ruby をインストールするには、ruby パッケージをインストールしてください。これには、RubyGems が含まれています。

複数のバージョン

同じシステム上で複数のバージョン (例: 2.0.0-p0 と 1.9.3-p392) を動作させたい場合、一番簡単な方法は RVM, chrubyAUR, 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 を実行するには上記の設定が必須です。

上記の方法が上手くいかない場合、上記の代わりにシェルの設定ファイルの末尾に以下の行を追加してみてください:

#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

使用方法

インストールされている gem を確認するには:

$ gem list

gem についての情報を得るには:

$ gem spec gem_name

デフォルトで、gem listgem spec--local オプションを使います。つまりローカルのシステムだけで gem を検索します。これを --remote フラグで上書きすることが可能です。そう、例えば mysql の gem を検索するには:

$ gem list --remote mysql

gem をインストールするには:

$ gem install mysql

ローカルのドキュメントが必要ない場合はスピードアップすることができます:

$ gem install mysql --no-document
ノート: ~/.gemrc ファイルを以下のように設定することでオプションをデフォルトにすることが可能ですfile:
~/.gemrc
gem: --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 を管理する代わりに、pacmanAUR ヘルパーを使うこともできます。Ruby パッケージは ruby-[gemname] という命名規則にしたがっています。この方法では以下の利点があります:

  • システムの他の部分と一緒に Gem が更新されます。その結果、gem update を実行する必要がなくなります: # pacman -Syu だけで更新可能です。
  • インストールした gem は、インストールしたユーザーだけでなく、システム全体で使うことができます。

gem が AUR に存在しない場合は、gem2archAURpacgemAUR を使って自動的にパッケージを作成し、pacman でインストールできます。

Quarry

Quarry は Arch Linux のための rubygems バイナリリポジトリを運営するためのオープンソースツール (GPL3 ライセンス) です。ソースは github でホストされています。

Arch の開発者 anatolik によって非公式の rubygems リポジトリが http://pkgbuild.com/~anatolik/quarry/ で運営されており、いまのところ x86_64 アーキテクチャのみサポートしています。このリポジトリには多数の人気 gem が含まれており、gem を追加するようリクエストを送ることもできます。バイナリパッケージリポジトリは AUR のソースパッケージよりも簡単に使用することが可能です。

リポジトリを有効にする方法は 非公式ユーザーリポジトリ#quarry を見て下さい。

有効にしたら必要な gem をインストールしてください: # pacman -S ruby-$gemname

質問がありましたら、プロジェクトアナウンスに送って下さい: https://bbs.archlinux.org/viewtopic.php?id=182729
バグレポートやコードの改善は github で送って下さい: https://github.com/anatol/quarry

参照