我想在我自己的开发服务器上使用 MiniProfiler,但不想强制项目中的所有其他开发人员安装和使用它。我知道如何让 git 忽略对我的 gemfile 的更新的唯一方法,但这绝对不是我想要的。有没有办法使用自定义 gemset 启动 Rails 服务器?
1 回答
不同项目的宝石
查看rvm(或rbenv和rbenv-gemset)以获取各种项目的自定义 gemset。对于测试,评估很好。在 GitHub 中,使用 TravisCI 可能是一件好事。
我认为这本身可能会回答你的问题,但我也想解决在同一个项目(不仅仅是同一个服务器)中使用不同的 gem 的问题,所以接下来是......
同一项目的不同宝石集
如果您想要一个特定的Gemfile
并且Gemfile.lock
只适合您,并且如果这些都在您的源代码控制中(它们应该是),那么如果您想做您所说的,您的将与他们的不同。
您可以在物理上将您的Gemfile
和Gemfile.lock
他们的分开,但这不是一个好主意。原因如下:
根据标准实践,您通常希望对非预发布版本或预发布版本使用悲观版本约束。然后成为项目的宝石被锁定的地方。然后,您或任何其他开发人员可以尝试使用特定的 gem 来更新它们,并且假设一切正常并且每个人都在使用合理的版本控制和健全的依赖声明(并非总是如此,它会定期中断),它应该只更新gem 你依赖一个希望不会破坏的版本。~> ...
Gemfile
'>= ...', '< ...'
Gemfile.lock
bundle update
当其他开发人员更新 gems 或添加删除 gems 时,他们将进行更改,Gemfile
并且Gemfile.lock
您将从源代码管理中获取这些更改,您将看到您需要bundle install
添加它们。
那么,有哪些明智的选择呢?最简单的(实际上)虽然容易出错,但可能只是记住从 Gemfile 中添加/删除你的东西并小心。通过这种方式,您可以确保您从其他人那里得到更改。
您还可以在具有您的更改的不同源代码控制分支中工作,并不断将其更改合并到您的分支中。但是,最终您会希望将您的更改合并到他们正在工作的分支中,所以我真的不认为这会带来很多好处。
与团队中的其他人相比,在同一个项目中拥有不同 gem 的真正解决方案是与他们讨论为什么你们都在同一个项目中而不使用相同的 gem。他们可能愿意使用它们,或者您不应该使用它们。
但是,同样,如果它只是为每个项目提供 gemsets,那很容易:rvm 和 rbenv 是两个常用的解决方案,还有其他方法可以在 SO 的其他地方回答