以下是这种情况。我在一个大型的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
在开发人员之间不再一致。每当我从源代码控制中获取更改并运行rspec
或rails server
或其他任何内容时,我都会得到一个修改后的Gemfile.lock
,其中diff看起来像:
PATH
- remote: /Users/OTHER_DEVELOPER/PATH_TO_APP_SOURCE/gems/engine1
+ remote: /Users/ME/APPNAME/gems/engine1
我们始终遵循我们认为检查我们的Gemfile.lock
进入源代码控制的最佳做法,但现在这导致了git头痛。有没有人以前处理过这个问题?对解决方案的任何想法?
答案 0 :(得分:1)
这里的问题是你以一种无意的方式使用宝石。它们是宝石,而不是DLL。
如果您需要gem方法,请将它们托管在私有服务器上,并在GEMFILE中引用该服务器。
如果你想在ruby中使用类似DLL的方法,只需为每个库使用一个文件夹。