LoginSignup
7
5

More than 5 years have passed since last update.

gemを依存関係を解決しつつfetchする

Last updated at Posted at 2014-02-17

セキュリティの関係上、オフライン環境での作業を強いられる方は少なからずいらっしゃると思う。
私もその一人。

一方、RubyGems のように、依存するパッケージをネットから自動でダウンロードしてくれるようなシステムの場合、使いたい gem をオフライン環境に持っていくためには、手動で依存関係を解決しなければならず、非常に手間である。

gem fetch では、指定した gem しかダウンロードしてくれない。

依存関係を解決しつつ、必要な gem を一括でダウンロードする方法を探していたところ、以下のような方法があった。

ちょっと書き換えてみた。

gem-fetch-dep.sh
: ${TMPENV:=./tmp}
: ${FETCHDIR:=.}

if [ ! -d $TMPENV ] ; then mkdir -p $TMPENV ; fi
if [ ! -d $FETCHDIR ] ; then mkdir -p $FETCHDIR ; fi

GEM_HOME=$TMPENV GEM_PATH=$TMPENV gem install --no-ri --no-rdoc --install-dir $TMPENV $*
mv $TMPENV/cache/*.gem $FETCHDIR
rm -rf $TMPENV

fetch 先ディレクトリを変えたりしたいときは、下記のように切り替えてください。
FETCHDIR=./hoge/ bash gem-fetch-dep.sh <gem>

最低限、オンライン側にもgemコマンドを打てる環境が必要、という制限があるのが課題。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5