おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

Snow Leopard の Rails が消えていたけど、おかげで gem search | list | query の違いがわかった

ひさしぶりに MacSnow Leopard)の Rails を使おうとしたら下記のエラーが発生しました。

|| $ rails --version Rails is not currently installed on this system. To get the latest version, simply type:

$ sudo gem install rails

You can then rerun your "rails" command. ||<

あれ?前まで使えていたんだけどナ。仕方なく対応したのメモしておきます。また対応の際に RugyGems の「gem query」コマンドが活躍してくれたので併せて書き留めておきます。よろしければ参考にしてください。

**Snow LeopardRails が消えていたが、おかげで gem search | list |query の違いがわかった

+Rails はどこへ消えた? +Rails インストール前の下調べ +gem search | list | query の違いと使い分け +Rails を、バージョンを指定してインストール <<

*1. Rails はどこへ消えた?

この前まで rails は使えていたので、本当に無くなってしまったのか確認。

|| $ gem search --local rails

LOCAL GEMS rails (2.3.5, 1.2.6) ||<

有るじゃん。中身を表示させてみます。

|| $ which rails /usr/bin/rails

$ cat /usr/bin/rails

!/bin/sh

echo 'Rails is not currently installed on this system. To get the latest version, simply type:' echo echo ' $ sudo gem install rails' echo echo 'You can then rerun your "rails" command.' ||<

ウケるw ただ単純にエラーメッセージを出力するだけになっていました。OS のアップデートのときになったのかどうだか...

*2. Rails インストール前の下調べ

$ sudo gem install rails(してください) <<

と言われたけど、さすがにいきなりインストールするのは、こわい。どのバージョンがインストールされるか分からないですし。なので、下調べ。

|| $ gem search --remote rails

REMOTE GEMS rails (3.2.0) rails-3-settings (0.1.1) rails-action-args (0.1.1) ...(他にもたくさん出た) ||<

最新の Rails のバージョンが 3.2.0 であることは分かったのですが、訳あって 2.3系のものをインストールしたかったので、さあ困った(ちなみに使っている Ruby のバージョンは 1.8.7 です)

あぁ、そういえば、gem list というコマンドもありましたね。

|| $ gem list --remote rails

REMOTE GEMS rails (3.2.0) rails (3.2.0) rails-3-settings (0.1.1) rails-action-args (0.1.1) ...(他にもたくさん出た) ||<

ん−、こうなると分かってはいたものの、解決しない...

*3. gem search | list | query の違いと使い分け

大丈夫。僕には Google センセイがついている。

調べてみると、

|gem search foo|foo を含むパッケージを表示する| |gem list foo|foo からはじまるパッケージを表示する|

という違いがあるそうです。

そして「gem query」コマンドなら、正規表現を使えるとか。これなら、下記のようにすれば rails のみを表示させることができます。

|| $ gem query --remote --name-matches "^rails$"

REMOTE GEMS rails (3.2.0) ||<

ふむふむ。で、本題に戻ると、--all オプションを付ければ、全バージョンを表示させることができます。

|| $ gem query --remote --all --name-matches "^rails$"

REMOTE GEMS rails (3.2.0, 3.1.3, 3.1.2, 3.1.1, 3.1.0, 3.0.11, 3.0.10, 3.0.9, 3.0.8, 3.0.7, 3.0.6, 3.0.5, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 2.3.14, 2.3.12, 2.3.11, 2.3.10, 2.3.9, 2.3.8, 2.3.7, 2.3.6, 2.3.5, 2.3.4, 2.3.3, 2.3.2, 2.2.3, 2.2.2, 2.1.2, 2.1.1, 2.1.0, 2.0.5, 2.0.4, 2.0.2, 2.0.1, 2.0.0, 1.2.6, 1.2.5, 1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.6, 1.1.5, 1.1.4, 1.1.3, 1.1.2, 1.1.1, 1.1.0, 1.0.0, 0.14.4, 0.14.3, 0.14.2, 0.14.1, 0.13.1, 0.13.0, 0.12.1, 0.12.0, 0.11.1, 0.11.0, 0.10.1, 0.10.0, 0.9.5, 0.9.4.1, 0.9.4, 0.9.3, 0.9.2, 0.9.1, 0.9.0, 0.8.5, 0.8.0) ||<

おー!いいねー!

*4. Rails を、バージョンを指定してインストール

というわけで、2.3系の最新バージョン 2.3.14 をインストールしました。バージョンを指定するには --version オプションを付けます。

|| $ sudo gem install rails --version 2.3.14 Password: Successfully installed activesupport-2.3.14 Successfully installed activerecord-2.3.14 Successfully installed rack-1.1.3 (中略)

$ rails --version Rails 2.3.14 ||<

お、うまくいった!

*おまけ - gem query コマンドのヘルプ

|| $ gem query --help Usage: gem query [options]

Options: -i, --[no-]installed Check for installed gem -v, --version VERSION Specify version of gem to query -n, --name-matches REGEXP Name of gem(s) to query on matches the provided REGEXP -d, --[no-]details Display detailed information of gem(s) --[no-]versions Display only gem names -a, --all Display all gem versions --prerelease Display prerelease versions

Local/Remote Options: -l, --local Restrict operations to the LOCAL domain -r, --remote Restrict operations to the REMOTE domain -b, --both Allow LOCAL and REMOTE operations -B, --bulk-threshold COUNT Threshold for switching to bulk synchronization (default 1000) --source URL Use URL as the remote source for gems -p, --[no-]http-proxy [URL] Use HTTP proxy for remote operations -u, --[no-]update-sources Update local source cache

Common Options: -h, --help Get help on this command -V, --[no-]verbose Set the verbose level of output -q, --quiet Silence commands --config-file FILE Use this config file instead of default --backtrace Show stack backtrace on errors --debug Turn on Ruby debugging

Summary: Query gem information in local or remote repositories

Defaults: --local --name-matches // --no-details --versions --no-installed ||<

*参考サイト

-gem search | install | list よりもうちょっと進んだgemコマンドの使い方 - 今日もスミマセン。 -RubyGems の使い方 - WebOS Goodies