在 Ruby 项目中同时拥有 .rvmrc 和 .ruby 版本是一种不好的做法吗?

Is it a Bad Practice to Have Both a .rvmrc and a .ruby-version in a Ruby Project?

我目前正在处理两个 Ruby 项目,它们的根目录中有一个 .rvmrc 和一个 .ruby-version 文件。我使用 rvm 在我的本地开发环境中管理我的 Ruby 版本,并且在我的主目录的各种 Ruby 副本中有我自己的本地 .rvmrc 文件] 版本,所以当我将目录更改为这些项目时,自然会收到 rvm 警告:

You are using '.rvmrc', it requires trusting, it is slower and it is not compatible with other ruby managers, you can switch to '.ruby-version' using 'rvm rvmrc to ruby-version' or ignore this warning with 'rvm rvmrc warning ignore /home/ME/craft/ruby/rails/CLIENT/APPLICATION/.rvmrc', '.rvmrc' will continue to be the default project file in RVM 1 and RVM 2, to ignore the warning for all files run 'rvm rvmrc warning ignore all.rvmrcs'.

起初我觉得在同一个项目中同时拥有两个配置点文件很奇怪,并认为这可能是我不知道的 Ruby 文化的历史怪癖(我是一个不太固执己见的人语言通才,真的)。就我个人而言,我从不在项目中使用 .rvmrc,我一年要处理 10-15 个 Ruby 个项目,而且很少在我使用的任何项目中看到这个文件。

问题真正出现在这两个项目的第 2 个项目上,其中 .rvmrc 文件的 Ruby 版本补丁比 .ruby-version 版本更旧。这导致我解决了我的本地环境的一些复杂问题,尽管我觉得它有点尴尬。更糟糕的是,我为项目的 (git) 'master' 分支修复了我的环境,当我切换到最新的功能分支时,.ruby-version 文件已更新为另一个不同的补丁号。所以我重复了重装bundler,重装所有gem,然后选择手动切换到这个补丁版本。我不确定 'correct' 方法来执行上述操作,并且这种方法似乎适用于我的环境(以复制 gems 和在我的硬盘上占用一点 space 为代价)。

我担心为什么一个项目会同时定义这两个文件,尤其是每个文件中具有不同 versions/patch 编号的项目。

这正常吗?是否应该通过从项目中删除 .rvmrc 文件来纠正这个问题? .rvmrc 文件是否应该至少更新为与 .ruby-version 文件相同的版本和补丁号?我本能地觉得这是不对的,但我想知道关于 rvm 和其他维护 Ruby 版本的方法的任何历史,这实际上可能使这个决定变得明智。任何人都可以转述这种情况如何合理演变的历史,或者这只是随着时间的推移厨房里有太多厨师的症状?

( 关于 .ruby-version 和 Gemfile)

它是一个 "bad practice",因为它同时维护两个约定,这可能会导致某些环境中的版本管理问题。在项目中使用的 ruby 版本方面,这也使得其中一个约定与另一个约定不同步成为可能。 .ruby-version文件此时比较常规,所以最好去掉.rvmrc文件,只保留.ruby-version.