我希望Bundler加載本地寶石。有沒有這樣的選擇?還是必須將gem文件夾移動到.bundle目錄中?如何在我的Gemfile中指定本地gem?
回答
我相信你可以這樣做:
gem "foo", :path => "/path/to/foo"
除了指定的路徑(如麥提到的),你也只能通過以下配置強制捆紮機使用本地寶石爲您的環境選項:
$ bundle config local.GEM_NAME /path/to/local/git/repository
如果您正在開發兩個gem或一個gem和rails應用程序,這非常有用。
不過請注意,如果你已經使用Git爲你的依賴,比如這隻作品:
# In Gemfile
gem 'rack', :github => 'rack/rack', :branch => 'master'
# In your terminal
$ bundle config local.rack ~/Work/git/rack
由於看到the docs。
我遇到了問題,因爲我使用'BUNDLE_PATH'(構建一個分發包)。當你按照你的建議,或者Jimmy的回答時,它只會做'使用',而不是實際安裝到我的'BUNDLE_PATH'文件夾中。我無法弄清楚,有什麼幫助? – Automatico 2014-02-13 14:46:30
注意這不適用於** gemspec **,每次討論[here](https://github.com/bundler/bundler/issues/2911)。 – dukedave 2014-07-10 18:27:36
要禁用本地覆蓋:'bundle config --delete local.GEM_NAME' – alxndr 2014-11-29 21:56:32
如果您碰巧正在使用git,那麼您也可以使用git來引用本地gem。
gem 'foo',
:git => '/Path/to/local/git/repo',
:branch => 'my-feature-branch'
然後,如果它改變了我跑
bundle exec gem uninstall foo
bundle update foo
但我不知道每個人都需要運行這兩個步驟。
這很棒,但如果您正在積極開發寶石,那就不太方便了......因爲您需要承諾每一次更改&捆綁軟件卸載
爲了利用當地的寶石倉庫在Rails項目,請按照下列步驟操作:
檢查你的寶石文件夾是一個Git倉庫(該命令在寶石文件夾執行)
git rev-parse --is-inside-work-tree
獲取庫路徑(命令在寶石文件夾執行)
git rev-parse --show-toplevel
的Rails應用程序
bundle config local.GEM_NAME /path/to/local/git/repository
其中
GEM_NAME
是你的寶石和/path/to/local/git/repository
的名義建立一個本地覆蓋是命令的點2
輸出在您的應用程序
Gemfile
添加以下行:gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
運行
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
是你的寶石的名稱,從點2
最後
/path/to/local/git/repository
,運行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
如果你想在太科:
gem 'foo', path: "point/to/your/path", branch: "branch-name"
您可以參考的寶石與源:source: 'https://source.com', git repository (:github => 'git/url')
和本地路徑:path => '.../path/gem_name'
。
您可以在這篇文章中瞭解更多關於Gemfiles and how to use them的信息。
- 1. 如何在我的Rails 4.2 Gemfile中有條件加載本地gem?
- 2. 我應該在我的Gemfile中指定確切的版本嗎?
- 3. 當我在gemfile中從Github指定gem的分叉版本時'找不到gem'錯誤
- 4. 如何安裝gem,就好像它是在Gemfile中指定的一樣?
- 5. 如何在Gemfile中指定最小Ruby版本?
- 6. 如何在Gem安裝時指定Gem依賴版本
- 7. 在Rails Gemfile中指定多個gem約束的語法是什麼?
- 8. 你可以在Gemfile中有多個版本的gem嗎?
- 9. 如何在基於當前RVM的Gemfile中選擇特定的gem?
- 10. 從GitHub指定的Gemfile
- 11. Hartl Rails教程:在Hermour的Gemfile中指定Ruby版本
- 12. 當我在Gemfile中使用「gem rails」時,默認的Rails版本是什麼?
- 13. 我可以在Gemfile中指定Git倉庫的子路徑嗎?
- 14. 從默認的gemfile中刪除gem?
- 15. Gemfile gem installation and gemspec dependencies
- 16. 指定Gemfile組中的類似配置
- 17. 用於描述gemfile中gem目的的gem?
- 18. 你能卸載gemfile中的gem版本嗎?
- 19. 是否在Gemfile中強制指定Gem版本或者是否爲rails應用程序
- 20. 如何強制Bundle Gemfile中的版本?
- 21. 在net.DialTCP中指定本地IP地址
- 22. 如何在Gemfile中指定位於Git存儲庫的子目錄中的.gemspec
- 23. 如何爲Ruby應用程序設置指定的gem版本?
- 24. 你的Ruby版本是2.0.0,但你的Gemfile中指定的2.1.2更新不Gemfile中
- 25. 如何重定向我的本地主機指向的位置?
- 26. rbenv你的Ruby版本是2.0.0,但你的Gemfile指定2.1.2
- 27. 您的Ruby版本是2.2.4,但您的Gemfile指定了2.3.0?
- 28. 你的Ruby版本是2.2.4,但你的Gemfile指定2.3.1
- 29. OSX您的Ruby版本是2.0.0,但您的Gemfile指定2.2.3
- 30. 你的Ruby版本是1.9.3,但你的Gemfile指定了2.2.2
硬編碼路徑適用於快速黑客會話,但bloudermilk的本地gem解決方案對版本控制下的項目更爲有效。它可以讓你繼續檢查兩個項目 - 使用寶石的寶石和項目 - 這樣其他人就不必檢查寶石來源或共享相同的路徑。 – mahemoff 2014-06-12 08:42:48
通過在您的項目目錄中使用.gitignored符號鏈接到本地gem,您可以使其略微更清潔 - 這樣,您可以分別在兩個項目上使用源代碼控制,而其他人可以在不具有相同目錄結構的情況下執行相同操作。 – Dan 2015-05-27 08:01:04
需要注意的可能是春天。如果您使用本地路徑作爲寶石,您可以注意到本地gem的緩存版本,就像我在rails控制檯中那樣。如果它看起來不像你當地的寶石變化正在接受嘗試'春天停止'看看它是否確實是問題。 – 2016-09-10 18:25:44