セキュリティの関係上、オフライン環境での作業を強いられる方は少なからずいらっしゃると思う。
私もその一人。
一方、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コマンドを打てる環境が必要、という制限があるのが課題。