如何在Gemfile中指定本地gem?

我想要Bundler加載本地gem。 那有選擇嗎? 或者我是否必須將gem文件夾移動到.bundle目錄中? linux


#1樓

除了指定路徑(如Jimmy所提到的),您還能夠經過使用如下配置選項強制Bundler 僅爲您的環境使用本地gem: git

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

若是您正在並行開發兩個寶石或一個gem和一個rails應用程序,這將很是有用。 github

但請注意,這僅在您已經使用git做爲依賴項時纔有效,例如: ruby

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

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

正如文檔中所見。 服務器


#2樓

若是您正在使用git,也能夠使用git引用本地gem。 ide

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

而後,若是它改變了我跑 spa

bundle exec gem uninstall foo
bundle update foo

但我不肯定每一個人都須要運行這兩個步驟。 code


#3樓

要在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是您的gem的名稱,而/path/to/local/git/repository從第2點開始的

  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應用程序中加載,我應該stop/start rails服務器
  • 若是我要更改gem的versionstopping/starting Rails服務器會給我一個錯誤。 爲了解決這個問題,我在rails應用程序Gemfile指定了gem版本,以下所示:

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

#4樓

若是你也想要分支:

gem 'foo', path: "point/to/your/path", branch: "branch-name"

#5樓

我相信你能夠這樣作:

gem "foo", path: "/path/to/foo"
相關文章
相關標籤/搜索