ユーザ用ツール

サイト用ツール


rubygems

RubyGems

シェルスクリプトで使える技

gemでインストールしたコマンドのパスを取得する。

GEM_EXEC_PATH=$(ruby -e "puts Gem::bindir")

bundlerが入っていなければinstallする。

if ! gem which bundler >/dev/null 2>/dev/null; then
  gem install bundler
fi

サブコマンド

hogeをインストール

$ gem install hoge

バージョン指定インストール

$ gem -v '= 2.0.0'     # v2.0.0を入れる
$ gem -v '>= 2.0.0'    # v2.0.0以降のリリース最新版入れる
$ gem -v '~> 2.0.0'    # 2.0.xの最新版を入れる(2.1は入らない、たとえば2.0.9が入る)
$ gem -v '~> 2.0'      # 2.xの最新版を入れる(3.0は入らない、たとえば2.9が入る)

パッケージfugaをアップデート

$ gem update fuga

パッケージfugaの古いバージョンを削除

$ gem cleanup fuga

gems自身をアップデート(現在、このコマンドが無効になっている)

$ gem update --system

ヘルプ(これ覚えておけばこのページ見る必要ないよ)

$ gem --help
$ gem -h

コマンド一覧を表示

$ gem help commands

パッケージ検索

searchは部分一致、listは前方一致、完全一致させたければqueryサブコマンドと正規表現で

$ gem query -n ^rails$

rオプションでremoteから探す、aオプションでバージョンを列挙。

$ gem search rails -r -a 

mysqlライブラリを入れる方法

Cベースのmysqlコネクタを入れる。mysqlの場所が見つからなくてエラーになる場合の対処法、MacOSXにMySQL公式のバイナリインストーラでMySQL5をインストールしている場合

$ sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 

rubygems-update

Rubygems自体のアップデートを管理するパッケージ。

最新版にする。

$ sudo gem rubygems-update
$ sudo update_rubygems

バージョンを指定する。

$ sudo gem rubygems-update -v=1.3.6
$ sudo update_rubygems --version=1.3.6

gem rubygems-update でインストール、update_rubygems で切り替え

ubuntuでインストール済みgemが消えてしまう対策

ubuntuの一部のバージョンではupdate_rubygemsするとgemライブラリ置き場が変わってしまうので、今まで使っていたライブラリがロードできなくなる

$ export GEM_HOME=/var/lib/ruby/gems/1.8

GEM_HOMEを指定するか

$ sudo ln -s /var/lib/gems /usr/lib/ruby/gems

標準のgemディレクトリの場所に、Ubuntuのgemディレクトリのシンボリックリンクを作成するとよい。

Windowsでgem update --systemして動かなくなる

for ActiveScriptRuby 1.8.6

ActiveScriptRubyでgem update –systemすると作成されるC:\Program Files\ruby-1.8\bin\gem.batが間違っているので修正する

@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
@"ruby.exe"" "C:/Program Files/Ruby-1.8/bin/gem" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
:WinNT
@"ruby.exe"" "%~dpn0" %*

2カ所あるruby.exeの後ろにダブルクオートが2つ付いているので取る。

Ubuntu 8.04 でgem update --systemして動かなくなる

for Ruby 1.8.6 and Ubuntu 8.04

aptitudeでrb-rubygemsを入れた後に、gem update –systemするとgemがエラーを吐くようになる。gem1.8というコマンドが作られているのでそちらを使う。

$ gem1.8

オリジナルのgemは要らんが、aptitudeでremoveしようとするとirb等が消されて不便なので残しておいてもいいかも。

Ubuntuでインストールしたコマンドが見つからない

Ruby 1.8 on Ubuntu 9.04

例えばgemでrailsをインストールしてもrailsコマンドが見つからないが、単純にパスが通っていないだけ。

$ sudo gem install rails
$ rails -v
プログラム 'rails' はまだインストールされていません。  次のように入力することでインストールできます:
sudo apt-get install rails

$ export PATH=$PATH:/var/lib/gems/1.8/bin

$ rails -v
Rails 2.3.4

既存のgemファイルを弄る

既存のgemの取得・展開して修正する

$ gem fetch hogehoge
$ gem unpack hogehoge-x.y.z

修正が終わったら再度パッケージする。

ファイル構成が変わった場合はgemspecを作り直す

$ gem spec hogehoge > hogehoge.gemspec

gemパッケージ作成

$ gem build hogehoge.gemspec

ローカルからインストール

自作gemをローカルからインストールする場合など

# 適当なgemソースを取得
$ git clone https://github.com/paulownia/http-server.git

# ビルド
$ gem build http-server.gemspec

# インストール
$ gem install http-server-0.1.3.gem
rubygems.txt · 最終更新: 2020/07/12 10:16 by nullpon