web-dev-qa-db-ja.com

Gemfileでローカルのgemを指定するにはどうすればいいですか?

Bundlerに地元の宝石をロードしてほしいのですが。そのための選択肢はありますか?それとも、gemフォルダを.bundleディレクトリに移動する必要がありますか?

330
picardo

私はあなたがこれをすることができると思います:

gem "foo", :path => "/path/to/foo"
502
Jimmy Cuadra

パスを指定すること(Jimmyが述べたように)に加えて、次の設定オプションを使うことでBundlerにあなたの環境だけにローカルのgemを使うよう強制することもできます

$ bundle config local.GEM_NAME /path/to/local/git/repository

これは、2つの宝石または1つの宝石とRailsアプリを並べて開発している場合に非常に役立ちます。

ただし、これは依存関係に既にgitを使用している場合にのみ機能することに注意してください。例えば、

# In Gemfile
gem 'rack', :github => 'rack/rack', :branch => 'master'

# In your terminal
$ bundle config local.rack ~/Work/git/rack

に見られるように ドキュメント

215
bloudermilk

もしあなたがたまたまそれに取り組んでいるなら、あなたはgitでローカルのgemを参照することもできます。

gem 'foo',
  :git => '/Path/to/local/git/repo',
  :branch => 'my-feature-branch'

それで、それが変わったら私は走る

bundle exec gem uninstall foo
bundle update foo

しかし、私は誰もがこれら2つのステップを実行する必要があるかどうかわからない。

30
Rimian

Railsプロジェクトでローカルのgemリポジトリを使用するには、以下の手順に従ってください。

  1. あなたのgemフォルダがgitリポジトリであるか確認してください(コマンドはgemフォルダ内で実行されます)

    git rev-parse --is-inside-work-tree
    
  2. リポジトリパスの取得(コマンドはgemフォルダ内で実行されます)

    git rev-parse --show-toplevel
    
  3. Railsアプリケーションのローカルオーバーライドを設定する

    bundle config local.GEM_NAME /path/to/local/git/repository
    

    ここで、GEM_NAMEはあなたのgemの名前、/path/to/local/git/repositoryはその時点でのコマンドの出力です2

  4. アプリケーションGemfileに次の行を追加します。

    gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
    
  5. bundle installを実行すると、次のようになります。

    Using GEM_NAME (0.0.1) from git://github.com/GEM_NAME/GEM_NAME.git (at /path/to/local/git/repository) 
    

    GEM_NAMEはあなたの宝石の名前、/path/to/local/git/repository2のところです。

  6. 最後に、bundle listではなくgem listを実行すると、次のようになります。

    GEM_NAME (0.0.1 5a68b88)
    

    GEM_NAMEはあなたの宝石の名前です。


私が見ているいくつかの重要なケース:

Rails 4.0.2  
Ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux] 
Ubuntu 13.10  
RubyMine 6.0.3
  • RubyMineはローカルのgemを外部ライブラリとして表示していないようです。バグに関するより多くの情報は こちら そして こちら にあります。
  • ローカルのgemの中で何かを変更しているとき、Railsアプリケーションにロードされるためには、Railsサーバーをstop/startするべきです
  • Gemのversionを変更しようとすると、Railsサーバーのstopping/startingでエラーが発生します。これを修正するために、RailsアプリケーションGemfileでgemのバージョンを次のように指定しています。

    gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
    
18
gotqn

Gemはsource:source: 'https://source.com', git repository (:github => 'git/url')とローカルパス:path => '.../path/gem_name'で参照できます。
この記事では Gemfilesとその使い方 についてさらに学ぶことができます。

0
Nesha Zoric