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

我想让邦德勒装本地宝石。有别的选择吗?或者我必须将gem文件夹移动到.bundle目录?

158959 次浏览

我相信你能做到:

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

除了指定路径(如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

如在的文档中所见。

你也可以用git引用一个本地gem,如果你碰巧正在使用它的话。

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

然后,如果有变化,我就跑

bundle exec gem uninstall foo
bundle update foo

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

为了在Rails项目中使用本地gem存储库,请遵循以下步骤:

  1. 检查你的gem文件夹是否是git仓库(命令在gem文件夹中执行)

    git rev-parse --is-inside-work-tree
    
  2. Getting repository path (the command is executed in the gem folder)

    git rev-parse --show-toplevel
    
  3. Setting up a local override for the rails application

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

    其中GEM_NAME是你的宝石的名字,/path/to/local/git/repository是点2

  4. 在你的应用程序Gemfile中添加以下行:

    gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
    
  5. Running bundle install should give something like this:

    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

  6. 最后,运行bundle list,而不是gem list,你应该会看到如下内容:

    GEM_NAME (0.0.1 5a68b88)
    

    where 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中更改某些内容时,为了加载到rails应用程序中,我应该stop/start rails服务器
  • 如果我正在更改gem的version, Rails服务器会给我一个错误。为了解决这个问题,我在rails应用程序Gemfile中指定了gem版本,如下所示:

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

如果你也想要分支:

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

你可以用source引用宝石:

< p > source: 'https://source.com', git repository (:github => 'git/url') 本地路径

:path => '.../path/gem_name'

你可以了解更多关于[Gemfiles和如何使用它们]

. (https://kolosek.com/rails-bundle-install-and-gemfile)