使用从同一存储库捆绑的gems管理Gemfile.lock

时间:2013-05-30 13:56:44

标签: ruby-on-rails bundler

以下是这种情况。我在一个大型的Rails 3.2.13应用程序(Ruby 1.9.3,Bundler 1.3.5)上工作。我们最近开始通过将一些组件分解为宝石/引擎来使这个应用程序不那么单一。但是,我们将源代码保存在同一个git存储库中。所以我们有一个类似的文件结构:

APPNAME
|-app
|-gems
|---engine1
|---engine2
|-lib

然后Gemfile看起来像:

gem 'engine1', :path => File.expand_path('../gems/engine1', __FILE__)
gem 'engine2', :path => File.expand_path('../gems/engine1', __FILE__)

到目前为止一切顺利。我的问题是Gemfile.lock在开发人员之间不再一致。每当我从源代码控制中获取更改并运行rspecrails server或其他任何内容时,我都会得到一个修改后的Gemfile.lock,其中diff看起来像:

 PATH
-  remote: /Users/OTHER_DEVELOPER/PATH_TO_APP_SOURCE/gems/engine1
+  remote: /Users/ME/APPNAME/gems/engine1

我们始终遵循我们认为检查我们的Gemfile.lock进入源代码控制的最佳做法,但现在这导致了git头痛。有没有人以前处理过这个问题?对解决方案的任何想法?

1 个答案:

答案 0 :(得分:1)

这里的问题是你以一种无意的方式使用宝石。它们是宝石,而不是DLL。

如果您需要gem方法,请将它们托管在私有服务器上,并在GEMFILE中引用该服务器。

如果你想在ruby中使用类似DLL的方法,只需为每个库使用一个文件夹。