我希望Bundler加载本地gem。那有选择吗?或者我是否必须将gem文件夹移动到.bundle目录中?
答案 0 :(得分:497)
我相信你可以这样做:
gem "foo", :path => "/path/to/foo"
答案 1 :(得分:215)
除了指定路径(如Jimmy所提到的),您还可以通过使用以下配置选项强制Bundler仅为您的环境使用本地gem :
$ bundle config local.GEM_NAME /path/to/local/git/repository
如果您正在并行开发两个宝石或一个gem和一个rails应用程序,这将非常有用。
但请注意,这只适用于您已经使用git作为依赖项的情况,例如:
# In Gemfile
gem 'rack', :github => 'rack/rack', :branch => 'master'
# In your terminal
$ bundle config local.rack ~/Work/git/rack
见the docs。
答案 2 :(得分:30)
如果您正在使用git,也可以使用git引用本地gem。
gem 'foo',
:git => '/Path/to/local/git/repo',
:branch => 'my-feature-branch'
然后,如果它改变了我运行
bundle exec gem uninstall foo
bundle update foo
但我不确定每个人都需要执行这两个步骤。
答案 3 :(得分:18)
要在Rails项目中使用本地gem存储库,请按照以下步骤操作:
检查您的gem文件夹是否是git存储库(该命令在gem文件夹中执行)
git rev-parse --is-inside-work-tree
获取存储库路径(该命令在gem文件夹中执行)
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
是您宝石的名称,而/path/to/local/git/repository
来自2
最后,运行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
答案 4 :(得分:0)
您可以使用来源source: 'https://source.com', git repository (:github => 'git/url')
和本地路径:path => '.../path/gem_name'
来引用宝石
您可以在本文中详细了解Gemfiles and how to use them。
答案 5 :(得分:-2)
如果你也想要分支:
gem 'foo', path: "point/to/your/path", branch: "branch-name"