💎
bundle installをオフラインで実行する
環境
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 めも
bundle package で gem をアプリケーションに含める
Windows 上の Ruby で SSL 接続時に certificate verify failed が出る場合の対処http://qiita.com/whiteleaf7@github/items/4504b208ad2eec1f9357
Discussion