2016-09-08 5 views
1

組織特有の宝石を保存する内部宝石サーバーがあります。私たちは、Gemfileソースオプションを使用して、それを使用します。ソースにアクセスできない場合は、Gemfile `source`を無視してください。

source 'https://local-gems.example.com' do 
    gem 'local-gem' 
end 

内部GEMサーバは、内部ネットワーク上でのみ使用可能です。

私はネットワーク離れていた場合、私は場合bundleを実行することができます:

  1. を私はソースグループに定義された宝石がすでにシステムにインストールされているsource宣言(および関連するend
  2. をコメントアウト。私は自宅から働いているならば、私はsource宣言をコメントアウトして、変更をコミットする前に再度のコメントを解除することを忘れないように覚えておく必要があることを意味

Gemfileを変更して、ソースが利用できないことを検出して無視する方法はありますか?つまり、Gemfileを設定して、ローカルネットワークから離れて作業するたびにこれらの行をコメントアウトする必要はありませんか?

答えて

2

あなたが何か行うことができますので、あなたは、あなたのGemfileに任意のRubyを追加することができます使用して、あなたが正しい

local_source = if system('curl -s https://local-gems.example.com > /dev/null') != false 
    # `curl` not available (`nil` returned) 
    # or local gem server accessible (`true` returned) 
    # try accessing: 
    'https://local-gems.example.com' 
else 
    # Fall back on default behaviour 
    'https://rubygems.org' 
end 

source local_source do 
    gem 'local-gem' 
end 
+1

:たとえば、あなたはこのようcurlを使用することができますので、

if (some check if hostname resolves) source 'https://local-gems.example.com' do gem 'local-gem' end end 

を'system'はより良いオプションです。編集していただきありがとうございます。 – ReggieB

+0

あなたは大歓迎です@ReggieB :-) –

+0

ローカルの宝石サーバーが利用できないことがシステムによって確かめられた場合にのみ、デフォルトの動作に戻るように回答を修正しました。 'curl'が利用できない場合、システムはローカル宝石サーバーに接続しようとします。それが存在しない場合、エラーメッセージにそのことが反映されます。 – ReggieB

関連する問題