如何在我的Gemfile中指定本地宝石?

np8igboo  于 2022-10-15  发布在  Ruby
关注(0)|答案(6)|浏览(230)

我想让Bundler装一颗当地的宝石。有这样的选择吗?或者我必须将gem文件夹移到.Bundle目录中?

qyzbxkaa

qyzbxkaa1#

我相信你能做到:

gem "foo", path: "/path/to/foo"
nc1teljy

nc1teljy2#

除了指定路径(正如Jimmy提到的)外,您还可以通过使用以下配置选项,强制Bundler仅对您的环境使用本地gem:

$ bundle config set 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 set local.rack ~/Work/git/rack

就像文件上看到的那样。

z18hc3ub

z18hc3ub3#

如果您正在处理一个本地的gem,您也可以使用git引用它。

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

然后,如果它改变了,我就跑

bundle exec gem uninstall foo
bundle update foo

但我不确定每个人都需要运行这两个步骤。

apeeds0o

apeeds0o4#

要在Rails项目中使用本地gem库,请执行以下步骤:
1.检查您的gem文件夹是否为git仓库(命令在gem文件夹中执行)

git rev-parse --is-inside-work-tree

1.获取仓库路径(命令在gem文件夹中执行)

git rev-parse --show-toplevel

1.为Rails应用程序设置本地覆盖

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

其中,GEM_NAME是gem的名称,/path/to/local/git/repository2点的命令的输出
1.在您的应用程序Gemfile中添加以下行:

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

1.运行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点开始
1.最后,运行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似乎没有将本地宝石显示为外部库。有关该错误的更多信息可在herehere中找到
  • 当我在本地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'
goqiplq2

goqiplq25#

您可以引用具有源的宝石:
source: 'https://source.com', git repository (:github => 'git/url')和本地路径
:path => '.../path/gem_name'
您可以在本文中了解更多关于Gemfiles及其使用方法的信息。

3gtaxfhh

3gtaxfhh6#

如果您也想要分支机构:

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

相关问题