ファイアーウォールとかで守られている社内gitサーバーに置かれたgemを使いたい

弊社はgithub enterpriseで運営しています。
外部からは自由にアクセスできないように、ファイアーウォールで社内アクセスのみに接続を限定しています。

が、今やっている案件ではお客様が用意したサーバーにアクセスしなければならず。
社内gitサーバーにアクセスできない状態です。

そういった場合、capistranoでローカルにソースを先にダウンロードしてtarで固めてサーバーに送信するという指定ができます。

config/deploy.rb

1
2
set :deploy_via, :copy
set :copy_cache, true

ですが、Gemfileにか書かれているGemファイルはbundle installで入れるようなので、社内gitサーバーに置かれたgemを参照しようとしたら落ちました。

うーん。gemも一式ローカルに落としてくれんか?と探していたらありました。
rudionrails/capistrano-strategy-copy-bundled ? GitHub

Gemfileにgem ‘capistrano-strategy-copy-bundled'と書いてbundle install。

config/deploy.rb

1
set :deploy_via,    :copy_bundled

でもcap deploy:updateしたら、

1
2
3
4
5
6
7
8
executing locally: "cd /var/folders/dl/n1zf4q750msgc9jcd99hdq3c0000gn/T/20130422015014 && bundle package --all"
Error loading RubyGems plugin "/Users/gogosakrua/.rvm/gems/ruby-1.9.3-p385@global/gems/rubygems-bundler-1.1.0/lib/rubygems_plugin.rb": Could not find rubygems-bundler (>= 0) amongst [actionmailer-3.2.12, actionpack-3.2.12, active_decorato
r-0.3.4, activemodel-3.2.12, activerecord-3.2.12, activeresource-3.2.12, activesupport-3.2.12, arel-3.0.2, builder-3.0.4, cancan-1.6.9, chronic-0.9.1, chunky_png-1.2.7, coffee-rails-3.2.2, coffee-script-2.2.0, coffee-script-source-1.6.1,
compass-0.12.2, compass-colors-0.9.0, compass-rails-1.0.3, compass_twitter_bootstrap-2.2.2.2, country_select-1.1.3, erubis-2.7.0, execjs-1.4.0, fssm-0.2.10, gruff-0.3.7, haml-4.0.0, haml-rails-0.4, hike-1.2.1, i18n-0.6.4, jbuilder-1.0.2,
journey-1.0.4, jquery-rails-2.2.1, json-1.7.7, kaminari-0.14.1, libv8-3.11.8.13-x86_64-darwin-12, log4r-1.1.10, mail-2.4.4, mime-types-1.21, multi_json-1.6.1, pg-0.14.1, polyamorous-0.5.0, polyglot-0.3.3, rack-1.4.5, rack-cache-1.2, rack-
mini-profiler-0.1.23, rack-ssl-1.3.3, rack-test-0.6.2, rails-3.2.12, rails3_acts_as_paranoid-0.2.5, railties-3.2.12, rake-10.0.3, ransack-0.7.2, rdoc-3.12.2, ref-1.0.2, rjb-1.4.6, rmagick-2.13.2, rubyzip-0.9.9, sass-3.2.6, sass-rails-3.2.
6, seed-fu-2.2.0, settingslogic-2.0.9, simple_form-2.1.0, sprockets-2.2.2, therubyracer-0.11.4, thor-0.17.0, tilt-1.3.4, treetop-1.4.12, turbo-sprockets-rails3-0.3.6, tzinfo-0.3.36, uglifier-1.3.0, whenever-0.8.2] (Gem::LoadError)
    command finished in 3794ms

って怒られる。
うーん。gemsetがdefault使われてるなー。ってことで。
いい機会なので、rbenvにしてみました。
http://ksauzz.github.io/blog/2012/03/23/rbenv-ruby-build-rbenv-gemset/?

んで cap deploy:update

1
undefined method `with_clean_env' for Bundler:Module (NoMethodError)

また怒られる。なんでだ。ぐぐっても有益な情報なし。
あ、ひょっとしてbundle exec必要?

ってことでbundle exec cap deploy:update

んで行くはず。

はずって言うのも。あまりにGem一式のダウンロードが重くて、やってらんねぇってなったので。
急遽ファイアーウォールに穴開けてもらうことになったからです。

中途半端ですまんです。

Comments