💎

bundle installをオフラインで実行する

2021/08/10に公開

環境

Ruby 2.2 (Windows x64)

Bundler 1.12.5

前提

  • 本番環境のサーバーはインターネット接続不可
  • 開発用に使ってる PC はインターネット接続可

手順

開発機で、使用する gem を全てダウンロードさせる。

## 開発機上で実行する

> cd railsアプリケーションのパス

rem とりあえず普通にbundle install
bundle install

rem これで、 vendor/cache に使用するgemファイルが全部キャッシュされる
bundle package --all

開発機上の vendor/cache 内のファイルを何らかの方法で、サーバー上の vendor/cache にコピーする

#ここが一番問題という説もある。USB メモリ使うなり、共有サーバー使うなりでなんとかする

<code class="language-bat:サーバー上で実行する">cd railsアプリケーションのパス

rem --pathは普通不要な気がするが念のため
bundle install  --path vendor/bundle --local

これで、サーバー機がインターネットに接続されていなくても Rails アプリを起動できるはず。

その他

bundle install 中の、Native Extension のコンパイルが cygwin のエラーでコケた場合は

とりあえず、Windows を再起動してもう一度やってみるとうまく行く事が多い。

make.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0

雑記

Windows 上で bundle install をオンラインでやろうとすると cacert.pem がどうしたとか

色々と面倒な部分があるのでデプロイはこれで良いんじゃないかという気がする。

gem をダウンロードしてこない分、高速にデプロイできるというメリットもある。

参考にした URL

Bundler めも

https://gist.github.com/kozy4324/5719555

bundle package で gem をアプリケーションに含める
http://qiita.com/ryo0301/items/e6c8dad0e8d66ab33ab7

Windows 上の Ruby で SSL 接続時に certificate verify failed が出る場合の対処http://qiita.com/whiteleaf7@github/items/4504b208ad2eec1f9357

Discussion