gem install xx.gem
経由でインストールするgemファイルがいくつかあります。 Bundlerにそれらを使用するように指示できますか?または、ソースパスを指定する必要がありますか?
デフォルトでは、Bundlerは最初にシステムをチェックし、gemが見つからない場合、Gemfileで指定されたソースを使用します。
これは、厳密に.gem
パッケージのインストールに関する質問への答えではありませんが、 Gemfile を編集することで、gemごとにすべての種類の場所を指定できます。
:path
属性を指定すると、そのパスからgemがローカルマシンにインストールされます。gem "foreman", path: "/Users/pje/my_foreman_fork"
:git
属性を指定すると、リモートgitリポジトリからgemがインストールされます。gem "foreman", git: "git://github.com/pje/foreman.git"
# ...or at a specific SHA-1 ref
gem "foreman", git: "git://github.com/pje/foreman.git", ref: "bf648a070c"
# ...or branch
gem "foreman", git: "git://github.com/pje/foreman.git", branch: "jruby"
# ...or tag
gem "foreman", git: "git://github.com/pje/foreman.git", tag: "v0.45.0"
Bundlerはそのままでは.gemファイルを使用できないようです。 .gemファイルを含むディレクトリを:pathにポイントしても機能しません。一部の人々は、その目的のためにローカルgemサーバー(geminabox、stickler)をセットアップすることを提案しました。
ただし、はるかに簡単であることがわかったのは、ファイルシステムのローカルgem "server"を使用することです。gemファイルをローカルディレクトリに置き、 "gem generate_index"を使用してGemリポジトリにします。
mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index
最後に、Gemfileに次の行を追加して、この場所にバンドラーをポイントします
source "file://path/to/repo"
リポジトリ内のgemを更新する場合は、必ずインデックスを再生成してください。
アプリケーションベンダーフォルダーでgemを解凍します
gem unpack your.gem --target /path_to_app/vendor/gems/
次に、Gemfileにパスを追加して、解凍されたgemをリンクします。
gem 'your', '2.0.1', :path => 'vendor/gems/your'
「bundle package」および「bundle install --local」を使用して、デプロイしたgemをbundlerに強制的に使用させることができます。
開発マシンで:
bundle install
(必要なgemをインストールし、Gemfile.lockを作成します)
bundle package
(ベンダー/キャッシュに宝石をキャッシュします)
サーバー上:
bundle install --local
(--localは「ベンダー/キャッシュのgemを使用する」ことを意味します)
.gem
をvendor/cache
に追加すると機能するようです。 Gemfile
にはオプションは必要ありません。
geminabox
を使用して独自のgemサーバーを実行するのが最も簡単であることがわかりました
これらの簡単な手順 を参照してください。