目次
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