使用rvmrc或ruby-version文件用RVM设置项目gemset?

Dan*_*hoe 228 ruby-on-rails rvm ruby-on-rails-3 ruby-on-rails-3.2 rvmrc

我使用RVM(Ruby版本管理器)为我的每个Rails项目指定一个Ruby版本和一组gem.

我有一个.rvmrc文件,每当我cd进入项目目录时自动选择一个Ruby版本和gemset .

安装RVM 1.19.0后,我收到一条消息

您正在使用.rvmrc,它需要信任,它速度较慢且与其他ruby管理器不兼容,您可以切换到 .ruby-version使用rvm rvmrc to [.]ruby-version或忽略此警告rvm rvmrc warning ignore /Users/userName/code/railsapps/rails-prelaunch-signup/.rvmrc, .rvmrc将继续作为RVM 1和RVM 2中的默认项目文件,忽略运行所有文件的警告rvm rvmrc warning ignore all.rvmrcs.

我应该继续使用我的.rvmrc文件还是应该切换到.ruby-version文件?哪个是最佳的?有什么后果?

mpa*_*pis 370

如果您的.rvmrc文件包含自定义shell代码,请继续使用,.rvmrc因为它允许您包含任何shell代码.

如果您的唯一目标是切换Ruby版本,那么使用.ruby-version其他Ruby版本切换器(如rbenvchruby)支持的版本.此文件也不需要信任,因为它只是Ruby版本的名称,不会以任何方式执行.

如果您使用,.ruby-version您可以包含@gemset在文件中,但这将与其他切换器不兼容.为了保持兼容性,请在单独的文件中使用gemset名称,该文件.ruby-gemset被其他工具忽略(它只能与之一起使用.ruby-version).

例如,如果你有一个简单的.rvmrc:

rvm use 1.9.3@my-app
Run Code Online (Sandbox Code Playgroud)

它可以转换为.ruby-version:

1.9.3
Run Code Online (Sandbox Code Playgroud)

而且.ruby-gemset:

my-app
Run Code Online (Sandbox Code Playgroud)

请务必删除该.rvmrc文件,因为它优先于任何其他项目配置文件:

rm .rvmrc
Run Code Online (Sandbox Code Playgroud)

  • 请注意,并非所有应用程序都支持较新的.ruby-version和.ruby-gemset文件,但仅支持.rvmrc.(特别是RubyMine).这当然会影响您选择是否转移到新系统.我已经在答案中指出了这一点,因为我花了很多时间来追踪它.但是我的答案因某种原因被删除了.. (9认同)
  • 只需将1.9.3-p194放入.ruby-version就不适合我.参考上面的文档,`rvm --create --ruby-version使用1.9.3-p194`做的工作,里面的内容实际上是`ruby-1.9.3-p194` (4认同)
  • .ruby-gemset只有在你有.ruby-version的情况下才有效. (4认同)
  • 是否有关于此的任何"官方"文档的链接?我开始研究它在RVM站点中是如何工作的,但只是发现了一些模糊的提及它作为新的rvmrc文件,但没有关于它应该如何工作. (2认同)
  • 它没有完整记录,但这里是我们已经https://rvm.io/workflow/projects/#ruby-versions (2认同)
  • 当前版本的RubyMine支持.ruby-version风格.可以用6.3.2确认 (2认同)

Sam*_*kus 76

从.rvmrc切换到.ruby-version + .ruby-gemset的快速简便方法

rvm rvmrc to .ruby-version
Run Code Online (Sandbox Code Playgroud)

  • @zem [。] ruby​​-version`中的[]表示[点是可选的](https://github.com/wayneeseguin/rvm/issues/1708#issuecomment-22437586);方括号是表示可选性的通用约定(通常,不是在ruby中。)因此,您可以使用名为“ ruby​​-version”的文件,不带点,也可以使用该文件。如果您希望在默认情况下隐藏“点文件”的系统上具有更高的文件可见性,这将很有用。我同意还不清楚。 (2认同)