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メモリ使うなり、共有サーバー使うなりでなんとかする
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